Forrest Stonedahl

I think teaching is fun.
It can be challenging, of course. But I enjoy the challenge.

I think learning is fun.
I am always learning new things. I enjoy that too.

Good teaching reminds people how much fun learning is.

A successful class is one where I'm having a good time, the students are having a good time, and everyone is learning.

Page Outline:

Photo demonstrating
“demonstrating recursion”

Teaching Experience

Centre College (Assistant Professor):

  • CSC 117: Introduction to Computer Science
  • CSC 271: Introduction to Computational Art
  • CSC 332: Design and Analysis of Algorithms
  • CSC 334: Theoretical Foundations of Computer Science
  • CSC 339: Topics in Artificial Intelligence
    • Book cover for the A.I. class short stories project.
  • CSC 341: Principles of Programming Languages
  • CSC 390: Programming Challenges
  • CSC 400: [1 CR] Functional Programming in Scala
  • CSC 401: [1 CR] Computational/Neural Modeling
  • CSC 401: [1 CR] Android Application Development
  • CSC 401: [1 CR] Integrative Robotics and Drama
  • CSC 401: [1 CR] Genetic Coloring of Dynamic Graphs
  • CSC 402: [1 CR] Political Debate Text Analysis

Magic pointillism assignment for CSC 117.

Computational Art Fair flier (click to enlarge) [Centre news story]

Northwestern University (Teaching Assistant):

  • EECS 111: Fundamentals of Computer Programming
  • EECS 349: Machine Learning
  • EECS 372/472: Designing and Constructing Models with a Multi-Agent Language
  • EECS 395-20: Intermediate Computer Graphics
  • EECS 395-24: Comp. Graphics & Movie Merge Algorithms

The course on multi-agent modeling (EECS 372/472) deserves further comment. This course was previously taught as a project-based seminar for relatively few students. However, I worked with my advisor on a grant-funded project to develop it into a new core course for the engineering school. (I was also involved in editing the new course textbook and developing supporting software/materials.) For a taste of the course, feel free to peruse the 2009 EECS 372/472 website.

I have also mentored/advised a number of undergrads on independent research projects, some of which are discussed on my projects page.

Lecture slides about genetic algorithms, from the machine learning course.

For my RedQueen homework project students evolved decision trees to play a card game similar to BlackJack.

Computer Science education research

I am always interested in exploring new ways of introducing students to computer science, in order to increase motivation and promote student retention and diversity in the major. Also, I noticed that current introductory curricula often focus on centralized/deterministic algorithms and programming, neglecting distributed, parallel, and stochastic problem solving approaches.

The MAgICS (Multi-Agent Introduction to Computer Science) project is about creating an introductory (early undergrad or high school) level curriculum that uses multi-agent systems as a theme for learning computer programming while also learning about upper-level CS topics and developing skills in decentralized thinking.

For more information on MAgICS, see:

  • Stonedahl, F., Wilkerson-Jerde, M. & Wilensky, U. (2011). MAgICS: Toward a Multi-Agent Introduction to Computer Science. In M. Beer, M. Fasli, & D. Richards (Eds.), Multi-Agent Systems for Education and Interactive Entertainment: Design, Use and Experience. IGI Global.
    [ pdf ]
  • Stonedahl, F., Wilkerson-Jerde, M., & Wilensky, U. (2009) “Re-conceiving Introductory Computer Science Curricula through Agent-Based Modeling.” Proceedings of the EduMAS Workshop at AAMAS '09, May 12. Budapest, Hungary. pp. 63-70.

Multi-agent simulation can intuitively explain how Google's PageRank™ algorithm works. View my PageRank model online.

Pedagogical Side Projects

Happy Birthday Darwin!

Sometimes my educational endeavors take an artistic turn, as was the case with my Happy Birthday Darwin interactive art exhibit/demo, which won first prize at Northwestern's Art of Evolution exhibition. This applet was created in honor of Charles Darwin's 200th birthday (on February 12, 2009), and it demonstrates a genetic algorithm by evolving arrangements of a happy birthday song for Darwin until the correct arrangement is reached. (This Java-based demo uses MIDI sound, and unfortunately doesn't work consistently in all browsers.)

Musical evolution

Teaching principles of evolution

I also played a minor role in the development of the BugHunt online participatory simulation, which demonstrates how natural selection can lead to the adaptation of species to their environment. In this activity, people from anywhere in the world can log in and compete to catch the most bugs, and the emergent result is that the population of bugs becomes more camouflaged against the image backdrop.

(There aren't always other people logged in to compete with, but you can still try it out, as long as you have Java enabled in your browser.)

Screenshot from BugHunt

Pythonic polymorphism
on the blackboard