Spring '17
Usable Security and Privacy (CMSC 23210 / CMSC 33210)
In Spring 2017, I've introduced a new UChicago class on the human factor in computer security and privacy, with a total of 50 students in the course.

I have designed the course such that anyone who has completed UChicago's introductory CS sequence or equivalent should be able to keep up. It is cross-listed at both undergraduate and graduate level. The latter will require more substantial system-building and research components.

Course description: Regardless of how secure a system is in theory, failing to consider how humans actually use the system leads to disaster in practice. This course will examine how to design for security and privacy from a user-centered perspective by combining insights from computer systems, human-computer interaction (HCI), and public policy. We will introduce core security and privacy technologies, as well as HCI techniques for conducting robust user studies. Topics will include usable authentication, user-centered web security, anonymity software, privacy notices, security warnings, and data-driven privacy tools in domains ranging from social media to the Internet of Things. Students will complete weekly problem sets, as well as conduct novel research in a group capstone project. No prior experience in security, privacy, or HCI is required.
Our Spring 2017 schedule and syllabus, including links to all readings, is available online.

Spring '15
Spring '14
Usable Privacy and Security (05-436 / 05-836 / 08-534 / 08-734)
I worked closely with my advisor, Lorrie Cranor, as teaching assistant and co-instructor of CMU's usable privacy and security course in both Spring 2014 and Spring 2015. This course covers the human factor in computer security and privacy, teaching students the methods for conducting human-subjects experiments and introducing them to the current literature in the field. Students also conduct group research projects on a current usable security and privacy topic. I gave many of the lectures for the course (e.g., nine of the lectures in Spring '15). I also wrote the homework assignments, helped design the syllabus/reading list, and mentored half of the project teams. The course enrolls 20-30 students, primarily at the doctoral and master's level.
Our Spring 2015 schedule and syllabus, including links to all readings, is available online. The Spring 2014 schedule and syllabus is also available.

Spring '15
Secure Software Systems (18-732)
I served as a teaching assistant for CMU's Secure Software Systems course in Spring 2015. This course covers attacks (buffer overflows, web attacks like XSS), yet focuses mainly on defenses for making software systems secure. These defenses include architectural solutions (e.g., trusted computing), language-based security (e.g., type systems and proof-carrying code), software analysis (e.g., static analysis, model checking), and run-time analysis (e.g., dynamic taint tracking). The other two TAs and I wrote and graded the assignments and exams, in addition to assisting students at office hours. I also gave a guest lecture on bounded model checking.
Our course schedule and syllabus for Spring 2015 is available online.

Summer 3 '10
Summer 1 '10
Spring '10
Fall '09
Spring '09
Fall '08
Introduction to Computers for Engineers (14:440:127)
I was the lead instructor for this course, which provided an introduction to computer programming in Matlab, numerical methods, and problem solving for engineering students. Each fall, I had over 500 students in class; each spring, I had over 350 students. Yikes!

Syllabus (Spring '10)

Sakai Course Management Site (Rutgers NetID required).
Lecture videos, notes, projects, problem sets, grades.

Spring 2010 Lecture Notes: [ 1 | 2 | 3 | Review of 1-3 | 4 | 5 | 6 | 7 | 8 (none, guest lecture!) | 9 | 10 | 11 | 12 | 13 ]. If you're a student anywhere, please feel free to use these notes if you find them helpful for learning Matlab. Please let me know if you catch any errors.
Honors Program

Spring '10
Honors Seminar: The Engineering Design of Home Automation
In the Spring of 2010, I developed and was the lead instructor for an honors seminar for nearly 20 first-year students in Rutgers' Honors Engineering program. We investigated and built our own home automation systems. From the most basic components available, we built solid state relays and control systems, which we connected to Matlab. Check out videos and photos of us at work. The students gave demos of our system for Rutgers Day, the Northern NJ JSHS, the NJ Governor's School, and the Engineering Honors Recruitment Lunch.

Syllabus (Spring '10)
Additional Teaching Experience: For three summers (2006-2008), I was the primary instructor for a class introducing the basics of computer programming to students in Rutgers's Educational Opportunity Fund (EOF) program for economically and educationally disadvantaged students. This summer course prepared incoming EOF students for their fall-semester computing course. Each summer (2007-2010) I ran the NJ Governor's School of Engineering and Technology, a residential program for talented high-school juniors, I taught one or two elective classes. These included courses on introductory cryptography, P2P networks, computer hacking, and home automation. In Fall 2013, I served as the grader and teaching assistant for our department practicum (08-999), which is a seminar that introduces research and skills for academic careers.
Mentoring Experience: At CMU, I have been privileged to mentor three master's students, six undergraduates, and six high-school students on independent research projects. Some of these projects have led to publications (e.g., our SOUPS 2015 and WEIS 2013 papers). At Rutgers, I mentored dozens of talented high-school students on research projects as part of the NJ Governor's School of Engineering and Technology.