A summary of courses taught Fall 2008 - Spring 2010, and links to their contents on the WWW.
Spring 2012
CMPSC 195: Media Computation
Another way of looking at computing—by making and modifying digital media.
CMPSC 420: Compilers
Transform language A into language A'. Repeat.
Fall 2011
FS101: Leadership and Creativity (v2)
A Freshman Seminar at Allegheny College exploring leadership and creativity. Much like the previous version, but with revision.
CMPSC220: Programming Languages
This semester, we will spend the first 8+ weeks exploring the design and implementation of programming languages through the construction of interpreters in Scheme. We will spend the last four weeks learning about the fundamental patterns of parallel programming through the use of the programming language occam-pi on the Arduino.
Spring 2011
FS102: Making the Future
A Freshman Seminar at Allegheny College exploring the people and technologies that are shaping our future. Or, something like that.
CMPSC112: Data Structures
A second course in computing based on Peter Drake's Data Structures and Algorithms in Java, with a touch of Android mobile phone development thrown in for fun.
Fall 2010
FS101: Leadership and Creativity
A Freshman Seminar at Allegheny College exploring leadership and creativity where college and the world of open source collide.
CMPSC303: Human Centered Design
This course will have us engaging in the design and testing of user interfaces. Unlike my previous experiences with this course, we will be focusing our efforts on FLOSS (free, libré, open source software) projects. This way, as we engage in the interface design process, we will be doing so with the knowledge that we are giving something back through our efforts.
Spring 2010
FS102: Technology and Activism
A Freshman Seminar at Allegheny College exploring the role of technology in activist agendas.
CMPSC220: Programming Languages
The first half of our course explores scripting languages followed by parallel programming for embedded systems. The second half of the course explores the design and implementation of programming languages through the construction of interpreters in Scheme.
CMPSC580: Junior Seminar
I am excited to work with students across a broad range of topic areas, especially on cross-disciplinary research that explores the intersections of computing, environmental science, and art. I will be leading one, two-week module in this semester's CMPSC580.
Fall 2009
FS101: British Comedy in Translation
A Freshman Seminar at Allegheny College, focusing on some fun stuff while we practice our writing and speaking skills.
CMPSC112: Data Structures
A second course in computing based on Peter Drake's Data Structures and Algorithms in Java, leveraging BlueJ and Greenfoot.
Spring 2009
CMPSC 220: Programming Languages
CMPSC 220 Spring 2009. An introduction to programming languages based on "Programming Languages: Application and Interpretation" by S. Krishnamurthi.
CMPSC 580: Junior Seminar
CMPSC 580 Spring 2009. The Allegheny CS introduction to research methods and the senior comp.
CMPSC 600: RepRap Construction
CMPSC 600 Spring 2009. An independent study project building community around the construction of a RepRap 3D printer.
Fall 2008
CMPSC 111: Introduction to Java
CMPSC 111 Fall 2008. Although a traditional course in many respects, we experimented this semester with Greenfoot, a new pedagogic microworld for Java.
CMPSC 190: Virtual Worlds and Real Robots
CMPSC 190 Fall 2008. A gentle introduction to programming through Star Logo and LEGO Mindstorms. A unique instance that will hopefully run again in some form.

