Spring 2025

Instructor: Anya E. Vostinar

Course materials: (All materials are optional or freely available)

Drop in hours:

  • M: 1-2pm in Olin 308
  • W: 2-3pm in Olin 308
  • F: 1:30-2:30pm in Olin 304

Remember that you are always welcome to schedule an appointment with me outside of these times. To schedule an appointment, please see my calendar, find a time that isn’t marked ‘Busy’ within 9-4 M-F and either send an invite to an event or email me.

Overview and Learning Goals

Welcome to Artificial Life and Digital Evolution! 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 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.

This term you will:

  • Learn about the field of artificial life, with a particular focus on digital evolution
  • Learn how to program in C++
  • Create several smaller artificial life software programs
  • Dive deeper into a particular facet of artificial life that you choose, and contribute to the Encyclopedia of Artificial Life
  • Create your own larger artificial simulation to demonstrate and expand on previous results from the scientific literature

Prerequisites: CS201 (Data Structures)

Course expectations

I have done my best to design the course so that everyone can be successful, regardless of personal circumstances. Communication will be key; please keep me updated about your situation in addition to reaching out to the other relevant offices on campus. If you experience significant technological problems that limit your ability to participate, please contact the ITS Helpdesk at 507-222-5999 or helpdesk@carleton.edu. For announcements of known technical issues, visit the Helpdesk portal. If your personal situation begins to impact your ability to engage with the course, please contact the Dean of Students Office and also let me know.

I expect you to attend every class session and log in to Moodle every day for updates on activities and assignments. When engaging with course activities online, use your Carleton Gmail/Google account; do not use other personal email accounts. I will show you civility and respect and expect you will do the same to me and each other in both asynchronous and synchronous discussions, at the whole class level, and when in small groups.
I look forward to working with you to find ways for you to effectively engage with the course given your circumstances.

All out of class written communication will happen via the course announcement forum. Please make sure you have email notifications on and are reading your emails regularly. Each class day will have activities for you to complete and a section on Moodle to guide you through what you should do. All materials will be released at least 48 hours before they are due.

Types of Engagement and Collaboration Policies

We’ll have lots of different ways of engaging with the course material:

  • Readings, which will introduce ideas and have checks for you to verify that you’ve got the basics down before the class session.
  • Labs for writing somewhat longer code with significant guidance from the instructions in order to make ideas from class more concrete.
  • Shorter assignments earlier in the term to give you more practice outside of class.
  • Larger project that you will complete pieces of for specific dates where you can apply what you’ve learned and pursue a question of interest to you.

I believe each of these types of activities will give you a different lens on the core class ideas and help you to deeply learn and understand the material. In many of these activities you’ll have the option to work collaboratively.

Assessment

One of my goals for you in this course is for you to continue to develop as an independent programmer and learner. I’m much more interested in what skills and understanding you have mastered by the end of the course than the exact pace at which you master them. However, it isn’t healthy for you or me if you leave everything to the last minute. It also isn’t fair to your partners on an assignment or in class if you haven’t prepared as much as they have. Therefore, my goal with the following evaluation metrics is to balance providing you flexibility to learn at your own pace while also making sure to spread your learning out over the entire term.

Towards that end, your performance in this class will be evaluated in the following ways according to the learning goals for the course:

  • Engagement credits There is a great benefit to you to fully and authentically engage with the course content in and out of class time. To encourage this engagement while providing some flexibility, the course has an “engagement credit” system. You will need a specific number of engagement credits to earn a specific grade (shown in the list below). You can earn these credits in many ways, but the main way is through completing the preparatory work and attending (and engaging with class). You may earn 1 credit for completely preparatory work satisfactorily and 1 credit for attending and engaging effectively in class. There may be additional ways to earn engagement credits during the term as well.

  • Individual deliverables There will be several “individual deliverables” during the term, particularly in the first half. These will consist of both programming and writing assignments. The individual deliverables allow you to demonstrate individual mastery of the key learning objectives in this course – which will provide you with more targeted feedback on your performance. This contributes to your final grade according to the specifications grading scale outlined below.

  • Group deliverables This course also involves a group project that will be the focus of the second half of the term and has components that you will create and get feedback on along the way. Your work will be evaluated on the effectiveness of the process you and your team utilize, the product you attain (and how closely this product meets the project deliverable requirements), and the effectiveness of your team’s collaboration. This contributes to your final grade according to the specifications grading scale outlined below.

Grading Scale

I’ll be using a version of specifications grading this term. Each assessment that you hand in will be evaluated against a checklist or rubric related to one or more of the course learning objectives. I will distribute the rubrics and checklists I’ll use to assess each assignment so that you know exactly what constitutes each of these levels. I will rank each learning objective, and the overall submission, according to a five-level scale:

  • Insufficient evidence (basically nothing turned in)

  • Not yet proficient (something was turned in but it did not fulfill the criteria)

  • Proficient (the submission demonstrates achievement of the learning objectives)

  • Exemplary (the submission demonstrates achievement of the learning objective(s) at a higher level (e.g. more nuance, sophistication, etc).)

An important aspect of specifications grading is revision. You may revise any group or individual deliverable up until the end of classes. Learning is not a linear process, and learning involves making mistakes and learning from them. You may revise and resubmit a deliverable at least once, within a week after its assessment has been released. I will keep the higher of the {original, revised} levels (though if you end up with a revised submission at a lower level than the original, we should meet to discuss it). You may further revise that deliverable before the final submission and request additional feedback via this form. However, you may only request one additional individual and team assessment per week.

How this translates to course grades

To earn a C in the course: you must have 75% of the deliverables at “Proficient” and have earned 40 engagement credits.

To earn a B in the course: you must have 100% of the deliverables at “Proficient” and have earned 45 engagement credits.

To earn an A in the course: you must have 90% of the deliverables at “Exemplary”, the remaining 10% at “Proficient” and have earned 50 engagement credits.

(There are 28 class days, so by just completing preparatory work and engaging in class, you will earn 56 engagement credits.)

If you have met the deliverables requirements for a letter grade, but not the engagement credits, you will receive that grade with a “-“. For example, if you have completed all the deliverables at an Exemplary level but have only 40 engagement credits, you will receive an A-.

Late work and extensions

In this course, we need to balance flexibility for individuals with structure for teams, the class as a whole, and a reasonable workload for the grader and me (your instructor). I also want to help you avoid procrastinating to the point that you can’t get everything submitted by the end of the term.

All deliverables have a 1-hour grace period after their posted due date and time to account for slight delays in submission while allowing assessment of submissions to start soon after the due date. If you miss that cutoff, you will still be able to submit something during the revision period. I highly recommend you aim to submit something in the original submission window, even if it isn’t complete, so that you can benefit from feedback and revision.

Preparation work cannot be submitted late. If you miss the submission for a given day, you cannot earn the engagement credit for that work.

All work except for the final team submission must be submitted by the end of the last day of classes as per College policy. The final team submission must be submitted the the end of the last final. All that said: This term (like every term for a while now) is going to be weird, and hard, and disruptive, for all sorts of non-academic reasons. If you’re staring down a deadline that you know you can’t meet, or if you’ve fallen behind, get in touch with me immediately and we’ll work something out. While I need to put boundaries in place for my own health and wellness, and for fairness to everyone in the class, I also want to make sure you are progressing in your learning.

AI-Assistance

We are in a new age of software development (and everything else) with the arrival of generative AI. This term, we will be experimenting with these new tools. You will be expected to use Github Copilot for all coding work and allowed/encouraged to use Google’s Gemini for additional assignments. We will spend time as a class exploring where these tools are useful and where they might not actually be helpful.

How to Succeed in this Class

  • Keep trying and ask for help: Learning a new topic can be challenging, and one of my hopes for this class is that you’ll struggle at times and learn more because you had to really work to understand something. That means you’re expected to be willing to try again when things don’t work the first time, and to seek out help when you’re truly stuck. (See below for more on seeking help!)
  • Work consistently: For all learning engaging with the material in shorter, more frequent sessions is likely to be helpful. Set aside time each day to work on the course, and make sure that you’re keeping up with the daily activities. Try to find a space that you can just use for studying, and if that’s not possible, have a way to physically cue to yourself that this is studying time, such as by getting out a specific notebook for this course.
  • Minimize distractions: There’s a lot going on in the world right now, and it can be tough to ignore that. However, you’ll learn more and likely be happier if you can minimize those distractions during the time you’re working on the course. When you’re working on 361, put your phone away unless that’s what you’re using to access materials, and close your email and any browser windows that aren’t being used for this course. Set a time limit for how long you’ll work, and don’t check those things until the time limit is up. People tend to believe they’re good at multitasking, but in actuality, multitasking hurts productivity and learning.
  • Monitor your own learning: After each activity or work session, write down (on paper) a few things about what you learned and any questions that you have. Look back at those questions as you work through more activities, and if you aren’t able to resolve the questions on your own, ask about them on the forum.
  • Take notes: Research has shown that writing things down in your own words helps you to remember and understand it better. Take handwritten notes when watching videos and reading. Research has also shown that handwritten instead of typed notes help you retain the information better.
  • Pay attention to longer-term assignments and start early: I deliberately have pieces of the final project due throughout the term so that you are steadily working on it. By starting early, you have more opportunities to work through problems that come up and time to ask for help! Even if you can’t immediately start on the assignment, read over the prompt so that your brain can start thinking about it in the background; it really does help!
  • Ask questions and reach out for help:
    If you have a question about something, chances are other people do too. By asking questions during our class time, on the forum, and in office hours, you’ll keep up with the course and gain a deeper understanding of the concepts.

How to Get Help

I want to see all of you succeed in this class, and I believe you can succeed if you engage with the class material and activities consistently and reach out for help when you’re confused. To learn computer science, you’ll need to be willing to try new things and experiment with different solutions. Cultivating persistence to keep trying will be helpful not only in this course, but in any other problem solving activities. Sometimes, you may need assistance - here’s how you get it:

  • Take a break: Often, taking a break from homework will help you to regroup and you’ll be able to succeed when you come back to it. Leave yourself enough time to be able to take breaks!
  • Moodle Forum: You’re welcome to post questions about videos, readings, and activities on the forum, as well as about your project. Since each of your projects is unique, your classmates may not be able to help as much with a project question, but you are still encouraged to post them on the forum since they might! You are all thinking about the same general things after all and I will answer forum questions as well.
  • Talk to me: I have both drop in office hours and office hours that are by appointment (for one on one conversations). See links at the top of this document for more details. Talking to students is literally my favorite part of this job, please talk to me!
  • Other Carleton resources: There are lots of resources to help you at Carleton, and these resources have persisted in virtual form. The Academic Skills center is a wonderful resource for helping you develop study skills, improve your ability to plan large projects, or manage procrastination. Oscar Alarez is an academic skills coach in the office with whom you can make individual video conferencing appointments.

Inclusivity and Universal Learning

I strive to create an inclusive and respectful classroom that values diversity. Our individual differences enrich and enhance our understanding of one another and of the world around us. This class welcomes the perspectives of all ethnicities, genders, religions, ages, sexual orientations, disabilities, socioeconomic backgrounds, regions, and nationalities.

My goal is that everyone should be able to learn from this class and feel comfortable asking questions and participating. In class, on the forums, and when working with one another, be respectful and inclusive. If something makes you uncomfortable or you’re concerned about an interaction, please come talk to me!

Carleton College is committed to providing equitable access to learning opportunities for all students. The Disability Services office (Henry House, 107 Union Street) is the campus office that collaborates with students who have disabilities to provide and/or arrange reasonable accommodations. If you have, or think you may have, a disability (e.g., mental health, attentional, learning, autism spectrum disorders, chronic health, traumatic brain injury and concussions, vision, hearing, mobility, or speech impairments), please contact disability@carleton.edu or call Sam Thayer (’10), Director of Disability Services (x5250) to arrange a confidential discussion regarding equitable access and reasonable accommodations. If you’ve already arranged accommodations, please let me know if there’s anything you want me to know beyond what’s in the accommodations letter. If you do not have official accommodations, I am still happy to discuss with you ways in which I can help you succeed in this class.

The Assistive Technologies program brings together academic and technological resources to complement student classroom and computing needs, particularly in support of students with physical or learning disabilities. Accessibility features include text-to-speech (Kurzweil), speech-to-text (Dragon) software, and audio recording Smartpens. If you would like to know more, contact aztechs@carleton.edu or visit go.carleton.edu/aztech.

Carleton College urges you to make yourself –- your own health and well-being –- your priority throughout this ​term and your career here. It is important to recognize stressors you may be facing, which can be personal, emotional, physical, financial, mental, or academic. Sleep, exercise, and connecting with others can be strategies to help you flourish at Carleton. If you are having difficulties maintaining your well-being, please contact me and/or pursue other resources, such as Student Health and Counseling or resources on the Office of Health Promotion website. Student Health and Counseling is currently offering telehealth services.

Carleton is committed to fostering an environment free of sexual misconduct. Please be aware all Carleton faculty and staff members, with the exception of Chaplains and SHAC staff, are “responsible employees.” Responsible employees are required to share any information they have regarding incidents of sexual misconduct with the Title IX Coordinator. Carleton’s goal is to ensure campus community members are aware of all the options available and have access to the resources they need. If you have questions, please contact Laura Riehle-Merrill, Carleton’s Title IX Coordinator, or visit the Sexual Misconduct Prevention and Response website: https://www.carleton.edu/sexual-misconduct/.

Academic Honesty and Collaboration Policy

As noted in Carleton’s policy on academic integrity, violations of academic honesty are dealt with at the college level. If I suspect academic dishonesty, I will refer the case for appropriate action to the Academic Standing Committee (ASC) via the Associate Dean of Students or the Associate Dean of the College. Please familiarize yourself with Carleton’s academic integrity policies and make sure that you have read the collaboration and academic honesty policies for this course. A possible penalty for academic dishonesty in a course is an F in the course. It’s not worth it – please seek help using the resources above instead.