Teaching at Johns Hopkins University:
Fall 2024
-
EN.601.220 (Intermediate Programming): A C and C++-based course which teaches students to solve non-trivial problems without the support offered by high-level languages such as Python and Java. This covers fundamentals in procedural programming, object-oriented programming, and manual memory management.
-
EN.602.226 (Data Structures): A Java-based introduction to fundamental data structures and algorithms in computer science. This covers core data structures such as linked lists, trees, maps, and graphs, as well as useful algorithms for these data structures. An introduction to asymptotic analysis, including best-case, worst-case, average-case, and amortised analysis is also provided.
Teaching at Bowdoin College:
Spring 2024:
-
CSCI 1101 (Introduction to Computer Science): A Python-based introduction to computer science. This course covers fundamentals in computer science, including problem solving & decomposition, conditionals, loops, core data structures, object-oriented programming and recursion.
-
CSCI 2335 (Software Engineering): A Java-based introduction to software engineering. Covers the practises and processes of professional software engineering, and how we can deliver high-quality software, every single time. Course features a major team-based component, and covers full-stack web development from requirements analysis through implementation and testing.
Fall 2023
-
CSCI 1101 (Introduction to Computer Science): A Python-based introduction to computer science. This course covers fundamentals in computer science, including problem solving & decomposition, conditionals, loops, core data structures, object-oriented programming and recursion.
-
CSCI 2101 (Data Structures): An intensive, Java-based introduction to the data structures used by computer scientists. This course teaches how to build commonly-used linear and non-linear data structures (lists, stacks, queues, maps, trees) and how to use them to solve interesting and non-trivial problems.
Spring 2023
-
CSCI 1101 (Introduction to Computer Science): A Python-based introduction to computer science. This course covers fundamentals in computer science, including problem solving & decomposition, conditionals, loops, core data structures, object-oriented programming and recursion.
-
CSCI 2335 (Software Engineering): An overhauled version of CSCI 2335 from Fall 2022, better aligned with the liberal arts curriculum, and with many newly-created in-class workshops to support project tasks.
Fall 2022
-
CSCI 1103 (Programming with Data): A Python-based accelerated introduction to computer science, teaching students about the fundamentals of computer science, and how to use computers to analyse data.
-
CSCI 2335 (Software Engineering): A new course, serving as a Java-based introduction to software engineering. Covers the practises and processes of professional software engineering, and how we can deliver high-quality software, every single time.
Prior teaching experience during grad school at NC State:
-
CSC 216 (Software Development Fundamentals) Teaching Assistant: Summer 2016; I assisted students with assignments, held office hours, and graded assignments.
-
CSC 326 (Software Engineering) Teaching Assistant: Fall 2016 to Fall 2021: Assisting students as above; additionally, teaching labs twice a week. I wrote and maintain the course project (see research for more information) and write most homework assignments. I teach lecture as necessary to fill gaps in instructor schedules. I’ve won NC State’s “Outstanding Teaching Assistant” award twice for my performance in this class. I managed the Jenkins Continuous Integration infrastructure used for six semesters before handling a transition to Github Actions in Summer 2021.
-
CSC 246 (Operating Systems Principles) Instructor: Summer 2018: I taught Operating Systems, overseeing a TA who helped with grading. I developed lecture content, delivered lectures, wrote exams and homework assignment, and assisted students one-on-one.
-
CSC 216 (Software Development Fundamentals) Instructor: Summer 2019, Summer 2020, Summer 2021. I taught Software Development Fundamentals, writing and delivering lectures, maintaining course materials, managing our continuous integration environment, overseeing TAs, and grading assignments. I assisted students online and in person for our on-campus and distance education sections of the course. For Summer 2020, I modified the class for online delivery and delivered the course in a synchronous online format. For Summer 2021, I caught the class in a hybrid fashion, with some students attending live in person, some live via Zoom, and some watching recorded lectures on their own schedule.
-
CSC 326 (Software Engineering) Co-Instructor: Fall 2019. Working with Dr. Sarah Heckman, I co-instructed Software Engineering in Fall 2019. I wrote and delivered lectures for a large course, wrote homework assignments, assisted students, and managed our continuous integration environment.