🎓 Teaching

Selected courses I’ve taught at the University of North Carolina at Greensboro (UNCG).


  • CSC 362 — System Programming

    In-person SP24 • FA24 • SP25 UNCG • 2024

    System-level programming with an emphasis on building efficient, secure, and robust applications. Students gain hands-on experience with C, processes, memory, threads, IPC, synchronization, networking basics, and virtualization—tying concepts to practical debugging and performance analysis.

    Topics covered
    • Terminal workflow, Git, build systems
    • C fundamentals, pointers, dynamic memory
    • Processes, address spaces, scheduling, memory management
    • IPC (pipes, sockets), threads & synchronization, deadlock avoidance
    • Security themes, network fundamentals, virtualization concepts
  • CSC 330 — Advanced Data Structures

    In-person Spring 2024 UNCG • 2024

    Deep dive into data structures and algorithmic analysis to develop strong problem-solving instincts. Students design, implement, and benchmark structures across varied workloads and constraints.

    Topics covered
    • Arrays (static/dynamic), linked lists, stacks/queues
    • Hash tables, trees (BST/AVL), heaps & priority queues
    • Graphs (traversals, shortest paths), disjoint sets
    • Sorting families, amortized analysis, complexity trade-offs
  • CSC 250 — Foundations of Computer Science I

    In-person Fall 2023 UNCG • 2023

    Core CS ideas and mathematical maturity for downstream courses. From algorithms and complexity to automata and compilers, students build a rigorous mental model for computing.

    Topics covered
    • Functions, recursion, algorithmic paradigms
    • Complexity notions & counting (combinatorics)
    • Data structures overview & invariants
    • Compiler basics, formal languages & automata
    • Security perspectives woven into problem-solving
  • CSC 105 — Data, Computing, and Quantitative Reasoning

    In-person Fall 2023 UNCG • 2023

    Python-first introduction to data analysis with an emphasis on clear thinking and reproducibility. We practice loading, transforming, visualizing, and communicating insights from real-world datasets.

    Topics covered
    • Python for data: Pandas, NumPy, tidy workflows
    • Visualization: Matplotlib, Seaborn, storytelling with data
    • Exploratory analysis, cleaning, and basic statistics
    • Reasoning with uncertainty & quantitative communication