Teaching + Mentoring

Make difficult ideas accessible,
and build confidence into independence.

I want students to leave a course with more than knowledge of a particular language, tool, or system. My goal is to help them understand why a solution works, what assumptions it relies on, and how to reason through problems they have not seen before.

Teaching Philosophy

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.

01 / ACCESSIBILITY

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.

02 / REASONING

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.

03 / ASSESSMENT

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.

Teaching Experience

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.

SPRING 2024

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.

FALL 2024

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.

SPRING 2022

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.

Guest Lectures

Software security in theory and practice.

SPRING 2026

Reference Monitors

Guest lecture for Software Security at Penn State.

SPRING 2022

DataGuard and IncreLux

Guest lecture for Software Security at Penn State.

Future Teaching

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

Systems Programming

Low-level programming, memory, processes, concurrency, operating system interfaces, and systems debugging.

SYSTEMS

Operating Systems

Processes, virtual memory, protection, synchronization, storage, isolation, and modern operating-system design.

SECURITY

System & Software Security

Memory safety, exploitation, isolation, fuzzing, binary analysis, and practical defense mechanisms.

ANALYSIS

Program Analysis

Static and dynamic analysis, dataflow analysis, pointer analysis, symbolic execution, and verification.

ADVANCED COURSE

Software Security & Program Analysis

Static and dynamic program analysis, symbolic execution, fuzzing, memory safety, binary analysis, and security enforcement.

ADVANCED COURSE

Verification & Security for AI-Enabled Systems

Formal verification, adversarial robustness, probabilistic guarantees, and the opportunities and limitations of generative models in security analysis.