CSC 295 F18: Evolutionary Algorithms and Artificial Life


Evolution is simply an algorithm and arguably one of the most powerful algorithms of all time. It has proven exceedingly useful in solving problems that have been difficult for humans both in engineering and of course in biological systems. All that is necessary for evolution to occur is variation, inheritance, and competition. With those three things and time, it is logically impossible for evolution not to occur.

In this class you will use the power of evolution to create an innovative game in the Unity3D platform. There are many many ways that this can be done and therefore you will be customizing the class to your interests this semester. I believe in self-teaching and learning through teaching, so you will be presenting frequently throughout the semester and teaching each other. You will learn to read and discuss the primary literature and can potentially create a game mechanism that has never been done before. You will write a technical paper that will be able to be submitted to a computer science conference if you so choose. I hope you will also have a lot of fun! 🙂


If you have any disability that requires accommodations, please speak with me as soon as possible so we can figure out how I can best facilitate your learning in this course. Note that you will also need to provide documentation of your disability to the Dean for Student Academic Support and Advising, John Hirschman, located on the 3rd floor of the Rosenfield Center (x3089). If you do not have documentation for any reason, please still contact me to discuss options.

Class Format

This course will be structured around a semester long project. The project will be a game in Unity3D that includes evolution of some kind. Groups for the project will be 3-4 people so that you have the ability to make a complete simple game. Many of the class meetings will involve presenting and getting feedback from your peers. Unity has a free hobbyist version which will be installed on the computers in 3820 and you are welcome to download it on your personal computer. There are many many free Unity assets that you are welcome to use for the graphics of your game. You are also welcome to keep a very simple graphics aesthetic, as the use of evolution is the focus of the project. The most important thing is that evolution is implemented correctly and used as a central aspect.

We will use Piazza to communicate about the class. You are expected to read everything posted to the class Piazza and are responsible for announcements made there. Click here to join.


Instructor: Anya E. Vostinar [vostinar], Science 3809.
Office hours: Posted here
Be aware that I bring Cache the wonder dog to my office regularly and she will likely be at office hours. If you would like a dog-free meeting, just let me know a day ahead of time and I’ll make arrangements.

On email and Piazza questions: I do my best to answer class questions on Piazza when I’m able. However, I have chronic migraine and therefore cannot give a guarantee on when I’ll respond, even during traditional business hours.


Please note that there will be several opportunities to get feedback on drafts. You will be required to attend the final presentations during finals week.

  • Literature Presentation: 10%
  • Proposal and Presentation: 15%
  • Code review presentation and participation: 10%
  • Final Project: 25%
  • Final Presentation: 15%
  • Final Paper: 25%

Learning Goal

To understand and implement evolution as an algorithm.

Absence Policy

While there isn’t a specific participation grade, your grade for all of the presentations will be partly based on your attendance and participation during others’ presentations. Therefore, missing a few days won’t add up to any impact on your grade, but missing half the class days and not participating much the other half will have an impact. You don’t need to tell me why you are missing class unless you are missing several classes, which could affect your grade.

If you think you are ill with a contagious illness, please do not come to class.

If you miss a day for whatever reason, email to let me know and I’ll provide you the content that you missed that day. It is your responsibility to review the content.

Class Activities Specifics

Literature presentation: Each student will need to select and summarize a paper from the literature. This can be a paper from the evolutionary algorithms and artificial life literature, evolutionary biology, or evolution education. The paper should be about a topic that will be of use for your classmates to know about as they are planning their projects. Further, each student will need to prepare a hands-on exercise for the rest of the class to dig deeper into the topic of the paper. The earliest presenter gets first pick of paper. You will have an entire class period.

Proposal and presentation: Each group will submit a written proposal and will present their proposal for peer feedback.

Code review presentation: Code review is a valuable process frequently used in software industry. Each group will display and explain their in-progress code for peer feedback and to learn from each other.

Final project: Each group will submit a Unity project of a finished game that includes evolution as a central mechanism.

Final presentation: Each group will present a debriefing about their project and a demonstration.

Final paper: Each group will submit a conference-style paper on their project and specifically how they implemented evolution in the game. This paper must have the typical conference-style sections which are: Abstract, Introduction, Methods, Results and Discussion, Conclusion. I recommend a ‘methods paper’ style where the Methods section is the longest and main focus of the paper so that someone else could replicate what you’ve done.