- COMPSCI 216 (formerly CPS 290.01), Duke University: Everything Data. Spring 2014 and Spring 2015.
- 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, Fall 2012, Fall 2013, Fall 2014, Fall 2015, and Fall 2016.
- COMPSCI 516 (formerly CPS 216), Duke University: Advanced Database Systems. Fall 2001, Spring 2003, Spring 2004, and Spring 2005.
- CompSci 590.1, Duke University: Data Cleaning and Integration. Spring 2017.
- 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.