I taught the ~80-person Summer 2018 offering of Stanford's CS 110 "Principles of Computer Systems" course (course site archived here). The class is taught in C and C++ and covers filesystems, multiprocessing, multithreading, and networking. This was the first time the class had been taught over the summer (an eight week quarter, as opposed to the usual ten weeks), so I was responsible for reworking the class for the shorter format. I taught every lecture, wrote a completely new set of lecture notes for students, wrote two new assignments (a basic version of Archive.org's Wayback Machine, and an HTTPS proxy), updated autograders, wrote exams, organized labs/discussion sections, and handled other course logistics. At the end of the quarter, students rated the quality of instruction at 4.7/5.
I think this is possibly the hardest thing I have ever done. I learned so much, though, and the students made everything worth it. I still occasionally get emails from students, and each one makes my day.
I have served as a section leader or teaching assistant (the former an undergrad position, the latter a grad student position) for several Stanford CS classes, including CS 106A(J) (intro course covering Java or Javascript), CS 106B (C++ course covering data structures, recursion, time/space complexity analysis, and other topics), and CS 110 (systems class covering filesystems, multiprocessing, multithreading, and networking). Normal responsibilities include teaching weekly discussion sections, grading assignments/exams, and holding weekly office hours. Additionally, I have served in head TA roles, which involve more coordination with the instructors, students, and other TAs.
I also helped launch CS 106AJ, a new JavaScript version of Stanford's classic CS 106A course. I developed autograders and exam review material and spent a significant amount of time working with students to improve the class.
The Harper Society of Engineers (HSoE) at Harper Community College provides opportunities and resources for students to engage in various engineering disciplines. I served as president from 2015-2016, facilitating various student projects within the organization, including a hexacopter that generates 3D terrain maps, a low-cost home security system, and a device that automates control of the dome in Harper's observatory. In addition, I introduced workshops covering various software, electrical, and mechanical engineering topics, and I taught two of the workshops (covering Raspberry Pi and basic web development).
Each year, the Illinois Math and Science Academy (IMSA) offers week-long intersession classes between the first and second semesters. These courses enable students to get a taste of new subject areas without taking full-length classes or learn about niche topics that no courses are offered in.
I taught a 2016 intersession covering lighting in photography. From the course description:
Intentional lighting lies at the core of any good photography; lighting controls the mood and atmosphere of a photo and can fill a scene with texture and life. This intersession will teach you how to intentionally use lighting to create captivating photos communicating emotion and a story for viewers. It will be taught in a studio using professional lighting equipment, but the concepts can be applied to any situation. Portrait, product, and food photography will be covered; high-speed, action, and sports photography may be discussed as time permits.
Students worked in small groups to produce a final photograph. See the results here!
The Advanced Computing Association (ACA) is an extracurricular at the Illinois Math and Science Academy that provides education in advanced areas of technology and supplies students with equipment and infrastructure to pursue independent ventures. Regular workshops cover topics including programming languages, networking, and server administration, and "hack nights" provide students with the opportunity to work on developing their own projects with experienced members available to assist. A production server rack hosts student projects and supporting services, and a development rack hosts experimental services and allows students to experience a complete rebuild and reconfiguration (from scratch) of a "production" network.
I served as ACA's president from 2012-2014, building most of its production infrastructure from scratch and spearheading student workshops. I continue to occasionally stop by for a hack night or workshop.
I taught a 2014 intersession covering the fundamentals of music production. From the course description:
Music is one of the most powerful creative means of expression, and holds the power to cheer, inspire, and unite masses of people. Music videos extend this capacity, adding another dimension of creativity. This intersession course covers recording and mastering techniques, storyboarding, editing and production, camera fundamentals, live direction, and more. By the end of the course, students will record and produce their own music video to showcase to friends and family.
Students independently conceived and produced their own music videos in small groups. Check out what they came up with!
Foundations offered free summer classes for local students covering various STEM (science, technology, engineering, and math) topics, including cellular biology, immunology, advanced chemistry, calculus, and programming. We sought to select course material that is often not covered in standard high school curriculums, yet is accessible to motivated junior high and high school students. We also attempted to not merely teach material, but to also ignite a sense of awe and curiosity in students, such that they might pursue more advanced material independently.
Courses began with my brothers' friends, but expanded through word of mouth, and soon classes filled with new faces. Watching seventh-grade students come to understand how exactly a human body works when it "gets the flu" and how water enables life-giving chemical reactions was a wonderful experience, and one that I hope to have again in the near future.
I taught a 2013 intersession covering Android programming with Java. From the course description:
This intersession will introduce students to creating Android applications with Java. Students will use Eclipse to develop basic applications utilizing buttons, scroll lists, dialog boxes, and event handlers. Advanced students will have the opportunity to develop more complex applications, such as a media player, custom web browser, or simple game.
This course was especially challenging for me to teach, as I was the only instructor and had no prior formal teaching experience. In addition, the skill levels of the students varied wildly, with some having years of programming experience and others hardly knowing what Java is. Despite that, I learned as I taught, and at the end of the class, the students successfully built an app that sets off an alarm if you haven't touched the phone in the last 20 minutes, preventing you from falling asleep while studying on the late nights :)