Forrest Stonedahl

I think teaching is fun.
It can be challenging, of course. But I really enjoy it.

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:



Teaching Experience

Centre College (Assistant Professor):

  • CSC 332: Design and Analysis of Algorithms
  • MAT 190: Discrete Mathematics
  • CSC 271: Introduction to Computational Art
  • CSC 334: Theoretical Foundations of Computer Science
  • MAT 110: Math in Our Society

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, 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. (in press). 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.


Younger students & community outreach

Northwestern's Take Our Daughters To Work Day

I also enjoy teaching about computers, technology, and math to younger audiences.

I was a volunteer for several years either leading or assisting with computer programming tutorials (using NetLogo) for Northwestern's Take Our Daughters To Work Day (mostly elementary/middle school), and the McCormick Engineering School's Career Day For Girls (middle/high school). In addition to basic computer programming, we also discuss the use of computers for scientific modeling and simulation.

I was also a member of the Construction For Learning (CFL) club, which is an interdisciplinary organization of graduate students across Northwestern University who are interested in building tools for learning. Through CFL, I was involved in several community outreach events that expose underprivileged children to technologies such as computers, robotics, and electronics.

I was also an instructor/coach for a group of local home-schooled students in the Math Olympiad and MATHCOUNTS programs over the past 4 years. I have always enjoyed mathematical problem solving, and coming up with interesting puzzles. Moreover, I enjoy teaching computer science and math at all levels.


Pedagogical 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.)

Screenshot from BugHunt