CS 467 - Course Information

Office hours
Peer drop-in help
Class meetings

Course Objectives

At the completion of this class, all students should be able to:

  • Demonstrate the use of form, color, and transforms to create new pieces of algorithmic art using p5.js
  • Articulate the different forms of chaos and complexity and demonstrate their use through code
  • Implement algorithms based on rule systems, agents, and physical simulation
  • Articulate the arguments in support of and in opposition to computational creativity and identify some of the techniques that attempt to achieve it

Class deliverables

There will be five different kinds of deliverables in this class:

Projects There will be 4-5 projects. The projects will be relatively open ended and will give you a chance to demonstrate what you have learned while allowing you to exercise your creativity. The final project will be due during the final week of class. We will be mounting a show at the end of the course, and you will be expected to show your work.

Challenges Throughout the semester, I will will post challenges. These will be much more structured and frequent than the projects. Some of these will focus on technical skills and reproductions, others will start with a prompt and require some creativity.

Tutorials These will a chance for you to walk through examples yourself, tutorial-style. The will be very prescriptive and will again focus on the technical aspects of the material.

Sketches I will expect you to maintain a digital "sketchbook". This will be your collection of ideas that you are playing with, experiments with things you have seen in class, or just snippets of things you want to hang on to.

Weekly reflection Every week, you will write a brief reflection about what you learned, what you accomplished, and what still needs work. Reflections will also frequently include conceptual questions about the material you have read about or we have discussed in class.


In this class, we are going to follow a practice called Ungrading. You may have encountered the practice in other classes, though the implementation tends to vary professor to professor and class to class.

In this class it means that I will not grade any of the work that you turn in. I will provide feedback and indicate if I think the work needs to be revised. You will be able to revise any work any number of times. That said, to the best of your ability you should submit something by the deadline. You do not want to be in the position of trying to complete a lot of work at the end of the course, or not being able to work on one of the projects because you don't understand what is going on.

At the heart of ungrading is a desire to refocus your mental energies from questions like "what grade am I going to get?" to questions more like "do I really understand this concept yet?" and "did I really put my best effort into this work?". As such, we are going to adopt a more reflective practice. When you turn in assignments, you will be asked to provide a self-evaluation of how the assignment went for you and where you think the work and your understanding could be improved.

Unfortunately, at the end of the semester, I still need to record a grade in Banner (unless you all opt for CR/NCR). So, I will ask each of you to write an assessment of your progress over the semester. You will reflect on the work you completed and your understanding of the material. We will then have a short meeting and you will tell me what grade I should record for you. We will discuss your decision and I will retain ultimate veto power if I feel that you have significantly under- or over- valued your contributions, but in most cases your decision will stand.


You are expected to participate in the class beyond just turning in assignments. Class will frequently involve discussions or critique sessions, and you are expected to be active participants in both of these activities.

Getting help

We are going to be using Zulip for our class discussions outside of class. Rather than emailing questions to me, please post the questions on Zulip.This will allow other students to answer questions and to benefit from the answers you receive. This system will only work if you use it, so please do so.

Tips for using Zulip:

  • Make sure you get notifications (either by allowing notifications through your browser or use the mobile app)
  • Before asking a question, look to see if someone has already started a topic
  • Start new topics for new questions
  • Answer questions as well as asking them - if you help someone, it opens the door for someone else to help you (and saves me time I can use to help others). We will do better if we can build a community.

Honor code and collaboration

Short version Help each other, but do not share solutions.

Long version In computer science, we build on the work of developers before us. Most of us learned to code by copying code and finding ways to tweak it to do what we want. Almost no computer programs are built without building on the work of others, either in the form of algorithms, libraries, or even just short snippets of code. In the computer science department, we recognize the value of forming study groups, helping each other debug code, and working together.

On the other hand, there are questions of intellectual property and academic integrity. These are considerably murkier waters than you may face, for example, writing a history paper, or doing a problem set in math. With code, you can "accomplish" spectacular things by copying the right chunks of code without ever knowing how it works.

For the most part, navigating these waters is on your head. I encourage you to help classmates to debug misbehaving code. I encourage you to post questions (and answers!) on Slack. But you need to do so in a way that respects other people's work and in a way that contributes to your intellectual development rather than hindering it (or trying to mask your lack of it). With no grades, there is no benefit to turning in correct work that you don't understand, so please do yourself a favor and don't just go looking for code you can turn in to satisfy an assignment.

Policies: Do not work collaboratively unless indicated by the assignment. You can help one another, and work together, but you cannot work jointly on the same assignment. I do not want to see identical assignments that differ only in the name at the top. If someone does show you code (as an explanation or asking for debugging help), do not copy it. Retain ideas, and go away and write your own version later. Attribute any ideas, etc, that you pick up (this goes for classmates, books, online resources, etc). Be explicit. Tell me where you got the idea, approach, technique, etc. Explain what your contribution was. Make sure that your contribution demonstrates that you understand what was not your work alone. Finally, if you have any doubts, ask me first.

Covid-19 Policies

CS Department Policy

We in the Computer Science department want to do everything we can to create a safe learning and working environment for all. While we can't eliminate the risks associated with COVID-19, evidence suggests that widespread masking can significantly reduce the transmission and severity of disease. In order to protect the health of our community, the CS department recommends that students and faculty wear masks in CS learning spaces, including classrooms, office hours, and public spaces. We acknowledge the College policy gives instructors the final say over classroom masking requirements, and expect all students to respect instructors' stated policies in each course.

Classroom policy

Masks will be required in the classroom. The policy will be revisited as the situation on campus evolves.

Office hours

Masks will be required in my office if you pop by at a moment when my door is open.

Office hours will be held on Zoom.

Fostering an inclusive environment

As part of the Middlebury community, I support an inclusive learning environment where diversity and individual differences are understood, respected, appreciated, and recognized as a source of strength.

I expect that students in my class will respect differences and demonstrate diligence in understanding how other people's perspectives, behaviors, and world views may be different from their own. Should you experience or witness any behavior that opposes this idea, we hope you will let us know so that it can be addressed.

If you are comfortable reporting such incidents, you can use our anonymous CS departmental climate feedback form (which goes to the CS department) or fill out a Bias Incident Report (which goes to the Middlebury Community Bias Response Team).

You belong in this class and in the computer science department. Thank you for being here and for contributing to this course.

Accommodations for disabilities

Students who have Letters of Accommodation in this class are encouraged to contact me as early in the semester as possible to ensure that such accommodations are implemented in a timely fashion. For those without Letters of Accommodation, assistance is available to eligible students through the Disability Resource Center (DRC). Please contact ADA Coordinators Jodi Litchfield and Peter Ploegman of the DRC at ada@middlebury.edu for more information. All discussions will remain confidential.

Loaner Laptops

If you ever find yourself temporarily in need of a laptop, the Computer Science department has 10 rotating Dell laptops available to our students. These come pre-installed with software for most of the courses in the major. They are available to be loaned out short-term or long-term based on your need (as determined by you). Feel free to ask me ahead of time if you think you need one for just a class period.

The college also provides laptops to those who need them where “need” is based on Student Financial Services calculations. If you anticipate needing a laptop for the whole term, we encourage you to inquire with Student Financial Services and the library first due to our smaller pool of equipment. However, our department commits to meeting the needs of every student, so do not be afraid to reach out if you believe you need one of our laptops for any length of time.