From understanding a property to reasoning about a system.
I try to make difficult ideas accessible without removing their technical depth. In systems and security courses, I begin with the property or invariant a system should maintain, examine how real implementations violate it, and then ask what a proposed mechanism can actually guarantee.
Make difficult ideas accessible
Build from the motivating problem and intuition toward the mechanism. I use concrete examples and analogies first, then introduce formal terminology and implementation details once students understand why they are needed.
Encourage independent reasoning
Rather than only correcting an answer, I ask students to explain what they expected, compare that expectation with observed behavior, and identify the assumption that caused the difference.
Assess understanding, not guessing
Assignments and exams should make the intended concept clear while still requiring genuine reasoning. Students should succeed because they understand the system, not because they discovered a combination of changes that happens to pass the tests.
Classroom experience across programming, systems, and security.
My teaching experience ranges from introductory programming to systems programming and software security, including course instruction, assessment design, project development, office hours, and guest lectures.
CMPSC 131 — Programming and Computation I
Teaching Assistant / Recitation Instructor, Penn State.
Designed and delivered two 75-minute recitation
sessions each week throughout the 15-week semester, developing
explanations and exercises that connected Python concepts with hands-on problem solving.
CMPSC 311 — Systems Programming
Teaching Assistant, Penn State.
Supported students in systems-programming projects and course
material, and contributed directly to course design by developing
exam questions and programming-project components.
CMPSC 447 — Software Security
Teaching Assistant, Penn State.
Supported instruction in software and systems security, including
memory errors, exploitation, security mechanisms, and practical
defense techniques.
Software security in theory and practice.
Reference Monitors
Guest lecture for Software Security at Penn State.
DataGuard and IncreLux
Guest lecture for Software Security at Penn State.
Undergraduate honors theses.
Penn State undergraduate honors students I have mentored.
Courses I would be excited to teach and develop.
My teaching interests follow the same intersection of systems, security, program analysis, and verification that shapes my research.
Systems Programming
Low-level programming, memory, processes, concurrency, operating system interfaces, and systems debugging.
Operating Systems
Processes, virtual memory, protection, synchronization, storage, isolation, and modern operating-system design.
System & Software Security
Memory safety, exploitation, isolation, fuzzing, binary analysis, and practical defense mechanisms.
Program Analysis
Static and dynamic analysis, dataflow analysis, pointer analysis, symbolic execution, and verification.
Software Security & Program Analysis
Static and dynamic program analysis, symbolic execution, fuzzing, memory safety, binary analysis, and security enforcement.
Verification & Security for AI-Enabled Systems
Formal verification, adversarial robustness, probabilistic guarantees, and the opportunities and limitations of generative models in security analysis.