Front Matter

Instructor Dr. Acacia Ackles
Code CMSC 500
Units 6
Room Briggs 419
Time TR 12:40 - 2:25

Course Materials

Material Name Link Notes
Gradebook Canvas Link Learning Hub
Reading Portal Persuall via Canvas Reading

You will also need a personal laptop to bring to class each day. If this is a barrier for you, please let me know ASAP.

Student Drop-In Hours

Office Time Days
Steitz 131 (NOT Briggs) 9:00 AM - 11:00 AM Tuesday & Friday

These are the times when my schedule is blocked off for nothing but to talk to you. So please do come by!

If you are busy during these times, you can always schedule an appointment with me instead. Or you can swing by Steitz and see if my door is open; if it is, you are completely welcome to stop by.


Welcome to Topics in Artificial Life! In this course you’ll learn how we can use a computational and algorithmic approach to understand the dynamics of biological life, both as it currently is on Earth and as it could be! You’ll see and demonstrate that evolution is 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 in biological systems. And surprisingly, all that is necessary for evolution to occur is three ingredients: variation, inheritance, and competition. With those three things and time, it is logically impossible for evolution not to occur.

Learning Goals

By the end of this course, you should be able to do the following:

  • L1: Evolution as an Algorithm. Understand the basic principles of evolution. Understand the basic principles of evolution as an algorithm. Be able to instantiate evolution in a computer using the three principles of evolution: variation, inheritance, and competition.
  • L2: Artificial Life as a Field. Understand the strengths and limitations of biological research using computational tools vs. using wet-lab research vs. field study. Understand the current advancements and limitations in digital evolution/evolutionary computing/artificial life. What is Artificial Life? What isn’t? What concerns and considerations should we take into account as we work in this emerging field?
  • L3: Computational Collaboration. Be able to work with existing software databases as a user and as a contributor. Understand and practice good code etiquette. Be able to read and write documentation for large, complex, interconnected systems of code.
  • L4: Failure. Take risks and push the boundaries of your understanding to the point where you are not always succeeding at a given problem. Stray out of your comfort zone and be able to evaluate your failures and your mistakes in a holistic way. Be able to reroute back-on-track when failure happens through a variety of means (troubleshooting, asking for help, taking a different approach, scaling back, scaling up).
  • L5: Reflection and Metacognition. Be able to self-evaluate and self-reflect on your work, your learning, and your understanding or lack thereof. Identify where you struggle, where you excel, and how you know what you know.

Grades and Evaluation

This class is based on an ungrading model. In this course, I want you to focus on what you are learning and how you are learning it, and not on how many points your work is worth. Therefore, none of your reading, homework, quizzes, or projects will be assigned a numerical score. You will instead receive feedback from me and be encouraged to revise any work if either you or I feel you could gain additional understanding through revision.

Biweekly Checks

To clear up any murky confusion about what your “current grade” is or how you are currently doing with the objectives for the course, we will hold biweekly (every other week) meetings. These will be 20-minute meetings focused on your learning. What are you doing to prepare for class? What are you doing to practice the material? Where are you still struggling? How can we make sure you are on track for the outcome you want for this class–whether in terms of a grade or in terms of content knowledge?

Each of these biweekly checks comes with a short self-evaluation worksheet and an opportunity for you to practice giving yourself a grade for the course. You’ll have four of these checks over the course of the term, so your final grade hopefully should not come as a surprise to either of us!

Final Grades

Of course, at the end of the day, we still have to assign a letter grade for your transcript.

You will complete a final portfolio for the course in lieu of a final exam or final project. This portfolio will consist of “evidence” for each learning objective: what assignments, projects, artefacts, etc. do you have to demonstrate that you have met or exceeded the learning outcomes for the course? Based on your answers to those questions, you will assign yourself a final grade with justification.

Here is a guideline for what each letter grade might mean in terms of this portfolio.

Base Grade Looks like…
A Consistently meets and often exceeds the expectations for all learning outcomes for the course
B Consistently meets the expectations for all learning outcomes for the course
C Often, but not always, meets the expectations for all learning outcomes for the course, or consistently meets expectations for most learning outcomes and shows progress towards other outcomes
D Shows progress towards the expectations for all learning outcomes for the course
F Does not provide sufficient evidence of progress towards learning objectives to assign a grade for the course

+/- Grades: You may notice that Lawrence also has +/- grades. You should feel free to assign yourself a +/- grade if you feel you are “in between” two of the categories above. For example,someone who consistently meets minimum expectations and perhaps had one really exemplary homework that they went above-and-beyond on might assign themselves a B+.

Exceptions: Lawrence does not allow grades of A+.

Further details about the format of your final portfolio can be found in the Self-Evaluation tab.

Collaboration and Plagiarism Policy

None of us want to have to go through the honor council process, so I want to lay out clearly what is and isn’t considered acceptable collaboration for this course.

It is important to note that my primary concern is that you are learning. I allow you to revise and resubmit work to try to alleviate some of the pressure of strict, points-based grading that, in my experience, encourages gaming the system over learning.

If there is ever a situation where you’re unsure if something is acceptable collaboration or not, please just ask, even if you have already turned in the assignment. I will never hold it against you if YOU are the one pointing out the issue. At worst I will ask you to resubmit.

Acceptable Collaboration

The following are always allowed on homeworks, labs, and projects.

  • Attending student hours and asking questions about the approach you are taking, then incorporating that approach into your code.
  • Discussing the concepts in the class with your classmates on a general level, e.g. in words or with pseudocode
  • Having someone else read your code with you and provide suggestions which you then implement yourself
  • Reading someone else’s code to provide them with suggestions
  • Looking online for help to your general problem, or a component of your problem with proper citation. Example: Your homework question is “Implement a program that will randomly generate four dice rolls and drop the lowest value.” It is fine to look up how to randomly generate numbers in python, how to find the minimum value, and how to return those numbers, and then paste the links as comments in your code. It is not fine to look up “python 4d6 drop lowest” and copy the code whole.

Unacceptable Collaboration/Plagiarism

The following are never allowed.

  • Copying any code that another student has written
  • Copying code from online without attribution
  • Posting solutions to the course materials to online aggregation sites (e.g. Chegg) or using solutions from such sites
  • Having a friend debug your code for you and then turning in the revised code
  • Looking at a friend’s code (or code on the internet for a similar purpose) and then using what you see to write your own code.*
  • Looking at code from someone in class and then reproducing it verbatim in your own files
  • Directly copying code out of the book, or relying heavily on book code and not citing your use of it in the comments when the assignment does not specifically state that you may do so.

* This one is tricky. Sometimes seeing what other people are doing right or wrong can be helpful for understanding our own code, but often when we’re just starting out, it’s hard to find the line between learning something new and implementing something without really understanding how it works. If you are ever unsure, ask first.

What about chatGPT?

Since this is an Artificial Life course, you might be interested how Artificial Intelligence plays a role, and specifically the use of Large Language Model (LLM) tools like chatGPT. We will discuss these programs and how they work in class; for now, let’s keep the question of how and when to use chatGPT for this course open.

Course Policies

Late Work Policy

Work turned in late without an extension won’t receive feedback; however, work can receive unlimited rounds of feedback upon request up until the last day of the term. Therefore, it’s always best to turn in something rather than nothing, since then you can continue to work at your understanding if something doesn’t quite make sense.

If you need an extension on an assignment for any reason, leave a comment on Canvas for the appropriate assignment and give yourself a new due date. Work turned in by your self-selected due date will be considered “on time”.


Attendance is tracked in this course; there is no “magic number” of attendances required, but for most students, regular attendance has a large impact on your final understanding of the material in the course.

First Week Policy: Per LU policy, attendance is required for the first week of class. If you do not attend the first day AND do not let me know why, I will reach out to you to check if you are still attending; if you do not respond and do not attend the first week, the registrar will drop you from the course.


I make every effort to incorporate universal design and inclusive learning into my course materials, but individualization is an important part of learning.

I will follow the guidance of any academic accomodations you request through the Center for Academic Success.

I will also make a good-faith effort to follow other academic accomodations you may need, regardless of whether or not you have documentation from CAS, a doctor, or otherwise. If there is something I can do that you know will allow you to engage fully with the course, please do not hesitate to ask. (If you need help figuring out what that ‘something’ is, we can chat about that too.)

Illness Policy

Please do not come to class if you are sick. Please do not come to class if you think you might be sick. Please do not come to class if you were exposed to any sort of highly contagious airborne disease. You do not need a doctor’s note and I do not need an excuse for you to miss class.

Other Policies

Here are some other assorted course policies that may be added to over the term.

  • Food and drink are always okay to have in class, but I’m not responsible if your laptop gets drenched.
  • If you are experiencing a childcare or dependent care emergency, you are welcome to bring your child/dependent to class if you choose to attend.
  • Your health and wellbeing as a human are more important than any university course, including mine.


This section exists because I’m a big believer in transparency. For one, I think many students learn better when they understand their professors’ teaching choices. For another, you’re dedicating quite a lot of your time and money to be in this classroom; it seems only fair that you get insight into how it works. If you aren’t interested in the pedagogy behind this course, feel free not to read this. But it is here for you if you want it.

Metacognition and Student Reflection

Metacognition has been repeatedly shown to enhance student independence and success (1, 2). Metacognition is literally “thinking about thinking”; what leads you to the conclusions you reach when you’re learning a new topic? What assumptions are you making when approaching a new topic that might be helping or hurting your understanding?

Ten weeks is a pretty short time frame to try to get really deep into metacognitive practices, so I really just try to incorporate reflection and revision into the course as much as possible. That’s why all assessments can be revised and resubmitted at any time.


My goal is for students to focus more on what they have learned than how many points they have received for learning it. To encourage such focus, I myself prioritize feedback over scoring. This has led me to the mastery-based “grade” scheme that I use.

Ungrading is also a more equitable form of student feedback. In computer science classrooms, ungrading typically enhances recruitment and retention of historically excluded students and reduces student stress, while maintaining a high standard of student work (3, 4).

For more on ungrading, see (5).

Parts of this syllabus is based heavily on one by Dr. Anya E. Vostinar. Thanks!