Teaching

Carleton College

I currently hold a two-year appointment as a Research Associate with the Computer Science Department at Carleton College in Northfield, MA.


Bates College

At Bates, I was the department chair and held the Colony Family Professorship in Digital and Computational Studies.

2018 - 2019

Short Term 2019

  • DCMU s23: Interactive Sound Art

Winter 2019

  • DCS202: Nature of Data, Data of Nature

Fall 2018

  • DCS103: People, Place, Prose, and Programming

2017 - 2018

Short Term 2018

  • DCS s13: Community-Engaged Computing

Winter 2018

Fall 2017


Berea College

At Berea, I was faculty in Computer Science. My time there was profoundly impactful. I had incredible colleagues within and without my department.

2016 - 2017

Spring 2017

Fall 2016

2015 - 2016

Spring 2016

Fall 2015

2014 – 2015

Spring 2015

Fall 2014

2013 – 2014

TAD 460: Digital Electronics

A project-centered course involving the iterative design of a wireless home temperature sensor and customer-driven projects on and around campus.

CSC 186: Apps for Appalachia (www)

A first course for beginners that introduces students to programming in AppInventor on the Android platform. Two sections.

CSC 111: Storytelling and Computer Animation

An introduction to storytelling and animation as exemplified by Alice.

TAD 265: Electricity and Electronics (www)

Unofficially titled Craft of Electronics, it even has its own domain.

2012 – 2013

CSC 435: Computer Organization (www)

Based on Elements of Computing Systems, this course introduces students to the design of a simple CPU, the design of simple virtual machines, and the opportunity to implement the results of their study on the Arduino.

CSC 397: Advanced Android App Development (www)

An upper-division, independent team study for students interested in learnign more about mobile application development on the Android plaform. Students will leverage the Nexus 7 tablet from Google, and explore a combination of native programming in Java as well as PhoneGap, an open source stack for developing mobile apps in HTMl5, CSS, and JavaScript.

CSC 186: Better Apps for a Better World (www)

A first course for beginners that introduces students to programming in AppInventor on the Android platform.

CSC 126: Robotics

This first course in robotics introduces students to programming in RoboLab on the RCX and NXT; co-taught two sections with Jan Pearce.

TAD 265: Electricity and Electronics F12

This course was co-designed with Sebastian Dziallas and Mel Chua; we threw the book out more than once in putting it together. It is unofficially titled Craft of Electronics, and even has it’s own domain.


Allegheny College

I had many wonderful colleagues in many departments at Allegheny College, and I believe my time at Allegheny changed the way many people viewed the CS department.

2011 — 2012

CMPSC591: Collaboratory Studio

This group independent study provided students, first- through final-year, from all backgrounds, the opportunity to explore topics at the intersection of computer science and electronics. Put simply, it turned my laboratory into a maker space for Allegheny students twice per week.

CMPSC420: Compilers

As this course had seven prerequisites, and had not run for 8 years or more, this offering of Compilers was interesting. We used Elements of Computing Systems to refresh our memories regarding the structure of the computer from microcode up, and then developed a series of small compilers in Racket, each supporting an increasingly complex language.

CMPSC195: Intro to Media Computation

Co-taught with Bob Roos. This course represented a break from the traditional, lecture-style course that is common in the Allegheny CS department. We implemented a “lab-centric” or “flipped” classroom model using Processing, and challenged the students to prep actively before exploring pairwise during 2- and 3-hour long in-class sessions.

FS101: Creativity and Leadership

CMPSC220: Programming Languages

This was the first time I turned students free on Arduino projects. They did some really cool stuff.

2010 — 2011

RESEARCH: Rescue Robotics in occam-π

Molly Mattis ‘12 (Allegheny) and Kathryn Hardy ‘12 (Centenary) collaborated year-long on this CREU-supported research. Developed fire-fighting robots in occam-π, and went on to explore genetic algorithms for the evolution of robotic controllers.

FS101: Creativity and Leadership

This Freshman Seminar introduced students to writing, presentation, and discussion surrounding topics related to leadership and creativity as it pertained to their experiences in secondary and higher education.

FS102: Making the Future

This seminar will involve starting a business to turn Operation: Stick Figure Army into a service, while exploring writings regarding end-user customization and the new maker economy.

CMPSC303: Human Centered Design

This design-centric course involved two hands-on projects: website testing prior to the Fedora 14 fp.o refresh, and a longer-term interaction with a FOSS project of the students’ choosing. Based on a previous offering of HFID at Olin College.

CMPSC112: Data Structures and Algorithms

Similar to previous offering, but wrappers for Drake’s programs allowing students to explore data structures in the context of games executing on the Motorola Droid mobile phone.

2009—2010

RESEARCH: Operation: Stick Figure Army

Worked with Stephanie Cost ‘10 and Sara Doan ‘10 on this CRAW-supported research. Developed tools for the production of 3D artifacts to support blind readers of modern textbooks.

CMPSC112: Data Structures and Algorithms

Using Drake’s Data Structures and Algorithms in Java, students were supported by extensive use of video, so as to minimize lecture and maximize discussion and interaction time in-class.

FS101: British Comedy in Translation

Developed and led this first-year seminar to introduce students to the fundamentals of writing and presentation by asking the question “What is funny?” in the context of British comedy through the ages.

FS102: Technology and Activism

This Freshman Seminar explored topics related to technology, art, and activism (linked closely with FS102: Art and Activism taught by D. Miller). Students engaged in hands-on activities surrounding the construction of a cardboard computer and making contributions to the Fedora 13 release to anchor their writing and presentations in a meaningful, shared set of experiences.

CMPSC220: Programming Languages

Similar to previous offering, but introduced a module on synchronous message-passing-based parallel programming. Students built a through-hole Freeduino and learned about parallelism in the context of embedded control.

2008—2009

INDS: 3D Printing @ Allegheny

Worked with Maja Sweeney ‘09 (Art). Maja led a group of volunteers in the building of a RepRap 3D printer. Project weblog available at baseplate.org.

CMPSCI 220: Programming Languages

A half-depth, half-breadth introduction to languages. During the first half of the semester, we developed interpreters in Scheme using PLAI by Shriram Krishnamurthi. During the second half of the semester, I presented a history of interesting languages and “mini-labs” exploring these tools, while students worked on a final project exploring deeply a language of their choosing. Course homepage.

CMPSCI 580: Junior Seminar

Led this third-year seminar leading into the Allegheny senior comprehensive. Course homepage.

CMPSCI 190: Virtual Worlds, Real Robots

Developed and taught this unique pre-intro to computing. Used StarLogo:TNG to study distributed systems and little robots to explore computing in the context of the world around us. Lab based.

CMPSCI 111: Introduction to Computer Science I

Taught one section of our introduction to computing. Developed new materials to support introducing Java using Greenfoot, a Java-based microworld, as well as Objects First with Java. Lab based.


Olin College

I had a marvelous, 1-year visit at Olin. Incredible colleagues and students.

2007 — 2008

SCOPE: Senior Consulting Program for Engineering

Mentored the aPriori team during this intense, year-long senior consulting experience. scope.olin.edu

ENGR 3390: Robotics

Co-taught with Dave Barrett. A project-based introduction to sensing, perception, cognition, and actuation, as well as parallel architectures for robotic control.

ENGR 3220: Human Factors and Interface Design

An introduction to the user-centric, interface design process. hfid.olin.edu

ENGR 2510: Software Design

An introduction to incremental development, modular design, and testing in Scheme. Reflections on student feedback in the context of how the course will evolve.

INDS: Independent Study

Worked with Nikki Lee on interface design and development for supporting communities of OLPC software developers.

INDS: Independent Study

Worked with Michael Hughes on analysis of novice programming behavior using data collected in collaboration with researchers at the Ateneo de Manila University.

INDS: Independent Study

Worked with Kevin Brettney on the design and development of a UAV controller board and accompanying control software.

(This was a busy year, yes.)


University of Kent

Living abroad was a marvelous, five-year experience. I think many of my favorite teaching moments came from Cool Stuff in Computer Science.

2006—2007

CO620: Research Project

Mentored J. Simpson on his project “A Native Transterpreter for the LEGO Mindstorms RCX.”

CO631: Concurrency

Developed and delivered laboratory assignments on the theme of of concurrency and robotics using RoboDeb; laboratory materials available online.

CO531: Software Engineering Practice

Delivered four guest lectures on practical aspects of software engineering, focusing on version control systems, source code management, and refactoring. Included practical examples in all cases.

2005—2006

INDS: Independent Study

Worked with J. Simpson (2nd year). His project culminated in the publication of Mobile Robot Control: The Subsumption Architecture and occam-pi (PDF), for presentation at CPA 2006.

CO631: Concurrency

Developed materials and presented laboratories regarding concurrency and robotics. RoboDeb and support documentation were a direct outcome of this work.

CSCS: Cool Stuff in Computer Science

LEGO robotics, systems administration, programming languages and art, Greenfoot, and other topics as per student interest.

2004—2005

CSCS: Cool Stuff in Computer Science

LEGO robotics, scripting languages, RPC, and building a small PDA-based robotics platform from scratch.

CO137: A Java Programming Primer

As previous year; developed BlueJ Trails to support the teaching of this and CO138. Also employed by other instructors in CO320.

CO138: Further Java Programming

Continuation of CO137.

2003—2004

CSCS: Cool Stuff in Computer Science

Extracurricular sessions on LEGO robotics; second semester, a large group project attempting to develop an IRC bot network. Students were challenged; project was too difficult.

CO137: A Java Programming Primer

Intensive introductory programming course for continuing students. Used Objects First with Java for course material.

CO138: Further Java Programming

Continuation of CO137.

CO313: Information Systems

Laboratory sessions.

2002—2003

CO313: Information Systems

Laboratory sessions.


Indiana University

As a graduate student at Indiana, I had the good fortune of working with good colleagues in both CS and IST. The highlight was developing and delivering A290: Introduction to LEGO Robotics.

2001—2002

A290: Introduction to LEGO Robotics

A course of my own creation (fun!). An entirely lab-based course. Students, working in teams, developed solutions to increasingly challenging tasks using the LEGO Mindstorms RCX. Writing and reflection were critical parts of the evaluation process.

A110: Intro to Computing

Continued Vincent development.

2000—2001

A290: Introduction to LEGO Robotics

A course of my own creation (fun!). An entirely lab-based course. Students, working in teams, developed solutions to increasingly challenging tasks using the LEGO Mindstorms RCX. Writing and reflection were critical parts of the evaluation process.

A110: Intro to Computing

Continued Vincent development.

1999—2000

A290: Introduction to LEGO Robotics

A course of my own creation (fun!). An entirely lab-based course. Students, working in teams, developed solutions to increasingly challenging tasks using the LEGO Mindstorms RCX. Writing and reflection were critical parts of the evaluation process.

A110: Intro to Computing

Continued Vincent development.

1998—1999

A110: Intro to Computing

Lab session leader; developed teaching and support materials. Developed Vincent, a course handin system still widely used in the IUB CS department, to support A110. Ran a prototype of A290 in A110 labs during Spring semester.

Q515: Learning with LEGO Robots

Co-taught this course for practicing science teachers in secondary education.