Teaching
“Teaching is the highest form of understanding.” – Aristotle
My goal as a teacher is to understand each student’s motivations and challenges, and to create environments where students take on optimal challenges. I’m strongly influenced by embodied and embedded cognition: I see students as agents navigating complex environments, and my job is to structure those environments so that productive struggle leads to real understanding.
I value learning quality over strict timeliness, provide generous extensions, and create explicit expectations to increase transparency. I use systems like “awesomesauce” extra credit and incentive points to recognize exceptional effort and engagement.
Courses at Rose-Hulman
CSSE220: Object-Oriented Software Development
My most-taught course, which I still love teaching. CSSE220 is the second course in the CSSE major sequence, bridging from Python to Java.
I’ve invested heavily in this course, developing:
- The Genetic Algorithm Research Project (GARP) as an alternative final project connecting coursework to real research
- Exam wrappers for metacognitive reflection
- Video lectures, pre/post-course surveys, and an incentive points system
- TA-led course improvement projects (topic summaries, GradeScope migration, and more)
CSSE314: Bio-Inspired Artificial Intelligence
Designed from scratch and iteratively developed, this course covers a great range of content leaves countless opportunities for constructive creativity. I utilize the excellent text from Floreano & Mattiussi: Bio-Inspired AI (MIT Press, 2008), it features:
- “Build Your Own Homework” assignments
- Jigsaw readings and Hypothesis annotations
- Browser-based interactive labs
- Final presentations complete with cookies, theatrical intros, intermissions, guest experts, and awards
CSSE280: Introduction to Web Programming
Taught many times in a variety of formats and content. Latest iteration includes a python webserver from scratch, with basic HTML/CSS/JS, and a final project where students learn a new web framework and develop a project in the final weeks.
Other Courses
- CSSE340: Introduction to Cybersecurity (Winter 2021)
- CSSE490: Evolutionary Computation (Fall 2019, 6 students, entirely new)
- CSSE290: What is Life? (in Computers) – Co-developed and co-taught with Robert Williamson (Winter 2021). Led to a Learning & Teaching grant for a new Artificial Life course.
- CSSE290: Research Lab I, II, III (2023–2024) – Organized the first-ever CSSE Research Symposium (Spring 2024) with a keynote speaker, alumni speakers, a printed program, and surprise awards.
- CSSE290: Artificial Life (2024–2025) – New course developed with support by a Learning & Teaching grant. Pilot course included 4 students who developed a portfolio of their learning and presented weekly to each other while covering a wide range of topics in artificial life, including cellular automata, agent-based modeling, and evolutionary robotics.
Prior Teaching
Indiana University (2009–2017): Associate Instructor for 16 courses including Object-Oriented Software Development, Intro to Software Systems (6 semesters), Theory of Computation, and more.
Johns Hopkins Center for Talented Youth (Summers 2011–2016): Taught Fundamentals of Computer Science to 7th–10th graders in intensive 3-week sessions (7 hours/day, 5 days/week). Won the Sarah D. Barder Fellowship Award in 2017.
World Vision, Rural Peru (July 2007): Volunteer math instructor for ~120 children ages 5–12, taught in Spanish.