Teaching Experience
Introduction
I am excited to be an Instructor for the Principles of Imperative Computation (15122) course at Carnegie Mellon University. I have been a teaching assistant for this course since Fall 2024 and I am happy to have the opportunity to teach as a co-instructor with Mihir Khare.
I spearheaded the creation of supplementary instruction bootcamps built into course infrastructure. I realized there was a need for students to receive assistance with both conceptual and concrete skills; specifically debugging as well as memory and proofs were weakpoints for students. Liz Chu and I proposed the project and we have since fully developed and presented four bootcamps. We hope to observe improvement in these topics.
More personally, these bootcamps made me realize that I really enjoy the development and the process of teaching! They spur me on to pursue a PhD and likely continue in academia afterwards. Below, I show examples of content from the bootcamps. The code for the examples is not made public, but I include some of the presentations that we have created. Each bootcamp typically has around 12 to 16 examples with a presentation, a resource document, and an examples instruction set as a reference for students.
Below, I show examples of content from the bootcamps. The code nor presentation for the examples are made public, but please reach out if you are interested in seeing them or learning more!
Debugging Fundamentals
Covered the core tools needed to become a successful programmer. Students were given practice to learn to use contracts, write good test cases and efficiently use print statements with targeted examples.
Memory & Pointers
Discussed and provided practice for conceptual frameworks regarding memory and pointers in C.
Debugging Data Structures
Discussed methods for debugging more complex structures and writing advanced test cases.
Valgrind (memory)
Re-introduced and offered examples of using valgrind as a memory management tool and how to efficiently understand and fix valgrind comments and errors.
Point-to Proofs
Covered the basics of point-to proofs and how to use them to understand and debug code. As well as provided practice for understanding the details of the proofs.