“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

BioAI Course Schedule

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.