My professional goal is to teach computer science to as many people as possible, and to inspire them to use their skills to change the world for the better.
I’m a teaching faculty. As a result, my curriculum vitæ—the “course of my life”—is focused around creating new content and tools to support my courses. My CV focuses on these activities.
- AB, Physics, Harvard University, 2003
- Ph.D, Computer Science, Harvard University, 2010. Dissertation: “Data Fidelity and Resource Management for Data-Rich Sensor Networks”. Advised by Matt Welsh.
- Postdoctoral Associate, Massachusetts Institute of Technology (MIT), 2010–2011. Supervised by Hari Balakrishnan.
- 2017–present: Associate Teaching Professor, Computer Science, University of Illinois
- 2011–2017: Assistant Professor, University at Buffalo
Additional information about each course is linked off of the main course website. Data about student success in each course and student evaluations available by request.
- Fall 2021–: “CS 124: Introduction to Computer Science I” (University of Illinois)
- Fall 2017–Summer 2021: “CS 125: Introduction to Computer Science” (University of Illinois)
- Fall 2016: “CS 199: How the Internet Works” (University at Buffalo)
- Spring 2011–Spring 2017: “CS 421: Introduction to Operating Systems” (University at Buffalo)
- 2021: Created a series of introductory Kotlin lessons to complement and eventually run side-by-side with our existing Java lessons
- 2020: Developed a new interactive walkthrough format for deploying live coding explanations and soliciting contributions from course staff
- 2020: Created a new online quiz system to support remote Zoom proctoring
- 2020: Restructured CS 125 to support asynchronous instruction in a daily interactive lesson format
- 2020: Designed and developed a new framework accelerating the development of small Java programming problems
- 2020: Created an efficient online help system to support students after CS 125 transitioned online
- 2019: authored and deployed the first multi-part Android programming project for CS 125
- 2019: deployed CS 125 on local cloud infrastructure providing enhanced scalability and robustness
- 2019: developed a new Java and JVM playground backend and toolkit to support interactive programming exercises in CS 125
- 2018: authored a large and growing library of small Java homework problems to support CS 125
- 2018: developed a Java autograder and programming problems for CS 125 quizzes
- 2018: created on-demand Git autograder for CS 125 assignments
- 2017: created on-demand Subversion autograder for CS 125 assignments
- 2016: implemented novel video delivery and tracking systems for internet-class.org, the website supporting a new course on the internet
- 2015–2016: developed
test161, a new testing framework for operating system assignments using the OS/161 instructional operating system
- 2020–2021: Led a team of faculty that proposed and passed a significant revision to the core programming sequence at the University of Illinois. The revision created several new courses and improved the accessibility of the computer science degree program for non-majors.
- 2016–2017: Led the Curriculum Development Committee which proposed and passed a significant revision to the undergraduate curriculum at the University at Buffalo. The revision created several new courses and updated several others to overall produce a more relevant and engaging undergraduate degree program.
- 2016: designed and deployed “CS 199: How the Internet Works”, a undergraduate course at the University at Buffalo.
- 2021: Helped organize the inaugural Illinois Computer Science Summer Teaching Workshop.
- 2011–present: Service on departmental committees including undergraduate studies, faculty hiring, diversity, curriculum revision, and others.