Teaching

Northeastern University (2024+)


CS4530 Fundamentals of Software Engineering is a capstone and project-based course covering the tools and processes that we use to design, construct and maintain programs over time in coordination with other people. The iteration of the course I am involved in teaches software engineering in the context of modern web application programming, using TypeScript, Node, and React.

Brilliant.org (2019-2021)


As a curriculum developer and writer at Brilliant.org, I worked collaboratively on a number of courses, including the Computer Science Fundamentals and Search Engines courses.

Carnegie Mellon University (2012-2016)


15-122 Principles of Imperative Computation is Carnegie Mellon's second-semester computer science course. It covers the the basics of algorithms and data structures as well as the fundamentals of the C programming language needed to prepare students for the undergraduate systems course. The most unique aspect of the course is its emphasis on teaching a rigorous discipline of program correctness through the use of JML-like runtime-executable "contracts." I gave a general-audience talk about contracts at StrangeLoop 2018.

  • Spring 2016
  • Summer 1 2015
  • Spring 2015
  • Fall 2014
  • Summer 1 2014
  • Fall 2013
  • Spring 2013
  • Fall 2012

15-411 Compiler Design, Fall 2015

15-312 Foundations of Programming Languages, Spring 2014