Teaching

Papers and Talks

Verification and Parallelism in Intro CS. Talk at Microsoft Research Redmond, 2014; at POPL Post-PC Meeting, 2014; at Wesleyan Natural Sciences and Mathematics Lunch, 2015; at ETAPS, 2016.

Teaching statement, April 2013

Short courses

In Summer 2016, I taught programming languages background at the Oregon Programming Languages Summer School (also on youtube).

In Summer 2013, I taught Agda at the Oregon Programming Languages Summer School.

I have written many articles for the Twelf Wiki, and organized the Twelf Tutorial at POPL'09.

Wesleyan University

In Spring 2017, I am teaching Functional Programming and Algorithms.

In Spring 2016, I taught Functional Programming and Computer-Checked Programs and Proofs.

In Fall 2015, I taught Functional Programming.

In Spring 2015, I taught Functional Programming.

In Fall 2014, I taught Principles of Imperative Computation.

In Spring 2014, I taught Principles of Programming Languages and Principles of Imperative Computation.

In Fall 2013, I taught Computer-Checked Programs and Proofs.

Carnegie Mellon University

From Spring 2011 to Spring 2012, I designed and taught 15-150: Functional Programming, a new introductory functional programming course that does parallelism and verification from the start.

I was the TA for 15-317: Constructive Logic in Fall, 2008.

I was a TA for 15-312: Principles of Programming Languages in Spring 2006.

Brown University

At Brown, I was a TA / Head TA for CS17/18: An Integrated Introduction to Computer Science from Fall 2001 to Spring 2004.