- COMPSCI 316 (formerly CPS 116), Duke University: Introduction to Database Systems. Fall 2002, Fall 2003, Fall 2004, Fall 2005, Fall 2006, Fall 2007, Fall 2008, Fall 2009, Fall 2011, and Fall 2012.
- COMPSCI 516 (formerly CPS 216), Duke University: Advanced Database Systems. Fall 2001, Spring 2003, Spring 2004, and Spring 2005.
- CPS 296.1, Duke University: Project in Computational Journalism. Spring 2012.
- CPS 296.1, Duke University: Database and Programming Languages: Crossing the Chasm. Spring 2010.
- CPS 296.3, Duke University: Information Management and Mining. Spring 2009.
- CPS 399.28, Duke University: Research Seminar and Project in Databases. Spring 2008.
- CPS 296.4, Statistical and Applied Mathematical Sciences Institute, cross-listed at Duke, North
Carolina State, and UNC Chapel Hill: Sensor Networks for Environmental Monitoring. Fall 2007.
- CPS 296.1, Duke University: Sensor Data Processing. Spring 2007.
- CPS 296.1, Duke University: Topics in Database Systems. Spring 2002.
- CPS 300, Duke University: Introduction to Graduate Study. Fall 2008, Fall 2009, Fall 2010, and Fall 2011.
- CS 145, Stanford University: Introduction to Databases. Spring 1999.
I wrote RA, a simple,
portable relational algebra interpreter written in Java that works on top of
(many) SQL-based relational database systems. It's perfect for learning
relational algebra. I've used it in teaching my courses, and a variant of it
has been used by Prof. Jennifer Widom's popular online database course at Stanford.