Teaching
Carleton College
I held a two-year appointment as a Research Associate with the Computer Science Department at Carleton College in Northfield, MA. from 2018-2020.
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 tenured faculty in Computer Science. I had incredible colleagues within and without my department.
2016 - 2017
Spring 2017
Fall 2016
2015 - 2016
Spring 2016
Fall 2015
- GSTR 110: Tradition, Diversity, Change
- CSC 335: Computer Organization
- TAD 460: Advanced Electronics
- CSC 493: Senior Projects
2014 – 2015
Spring 2015
- Craft of Electronics
- Programming Languages
- Software Design
Fall 2014
- Craft of Electronics
- Computer Organization
- Design and Documentation - Closed off behind Moodle’s gates…
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.
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.