CS 467 - Course Information
Professor Christopher Andrews
Office 215 75 Shannon Street
Course Website go/cs467/
Lectures TTh 1:30 - 2:45, 75SHS 224 Changed: Q&A sessions TTh 3:30p-4:30p online
Discussion forum Piazza
or by appointment
Casey Reas, Chandler McWilliams, LUST, "Form+Code In Design, Art, and Architecture", Princeton Architectural Press, 2010. Daniel Shiffman, "The Nature of Code", 2012. online
Please consult the Updates page for changes to the syllabus
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
For more details, consult the description of the grading tiers below.
There will be a number of different types of exercises and deliverables in this class.
- Programming assignments
- These will happen roughly every week, though the timing and duration will be dictated by topic and difficulty. You should expect these to require progressively more independent creativity as the semester progresses.
- Readings and responses
- There will be regular readings with short written responses. Expect 1-3 prompts or questions per reading.
- Part of being an active participant in this class will involve a lot of experimentation with code. Just as in some classes you are expected to maintain a journal, in this class, you will maintain an online "sketchbook" where you can try out ideas.
- In-class exercises
- As in many of my classes, we will be doing a series of in-class exercises. I will endeavour to provide time in class for these, but expect to occasionally finish these outside of class time.
- Active attendance will be required in this class. We will frequently have discussions and critique sessions and participation will be expected.
We will be using an approach to assessment called specifications grading. You may have encountered this in one of Pete's classes, though we are using a form borrowed from Professor Mittell's 'Television & American Culture' course.
Your work will be assessed as Satisfactory/Unsatisfactory. Satisfactory work is work that meets all of the learning goals of the assignment. This is not the minimal amount required to pass, it is closer to a B or Meets Expectations in another class. Unsatisfactory means that the deliverable does not yet meet the required specifications. There will be a third gradation of Sophisticated for programming assignments. These will be reserved for work that demonstrates a higher level of complexity. Assignments may spell out what is required for a Sophisticated mark (more advanced requirements) or for later work it will be applied to pieces that bring in outside concepts and approaches or explore the techniques of the assignment at a higher level of sophistication.
These marks wil not be directly translated into a letter grade. Instead, there are bundles of requirements attached to the different possible grades. You can decide which level of engagement you are targeting, and fulfill the corresponding requirements.
At the Competency tier (worth a C), your goal will be to demonstrate a basic level of competence at creating visuals from algorithms using basic generative algorithms in a variety of styles. You should also display a basic level of knowledge about the issues surrounding computational creativity and generative art theory. To reach this level, you will need to fulfill the following requirements:
- Actively attend all course meetings with up to five absences
- Complete at least six sketches over the course of the semester
- Complete most in-class exercises with no more than three skipped or not at the Satisfactory level
- Complete most reading responses, with no more than three skipped or not at the Satisfactory level
- Complete all programming assignments with no more than two at the Unsatisfactory level
At the Proficiency tier (worth a B), your goal will be to extend the learning at the Competency level to include more advanced techniques, engage in the practice of critiques in class and be able to demonstrate the ability to successfully analyze existing works and reconstruct them. To reach this level, you will need to fulfill the following requirements:
- Actively attend all course meetings with up to three absences
- Complete at least twelve sketches over the course of the semester
- Offer up work to be critiqued or offer substantial thoughts at least three times
- Complete most in-class exercises with no more than two skipped or not at the Satisfactory level
- Complete most reading responses, with no more than two skipped or not at the Satisfactory level
- Complete all programming assignments at the Satisfactory level and at least one at the Sophisticated level
At the Mastery tier (worth an A), your goal will be to extend the learning at the Proficiency level to include techniques not directly provided in class and demonstrate the ability to create new creative works using a wide variety of techniques. To reach this level, you will need to fulfill the following requirements:
- Actively attend all course meetings with up to two absences
- Complete at least eighteen sketches over the course of the semester
- Offer up work to be critiqued or offer substantial thoughts at least five times
- Complete all in-class exercises at the Satisfactory level
- Complete all reading responses at the Satisfactory level
- Complete all programming assignments at the Satisfactory level and at least three at the Sophisticated level
Plus and minus modifiers will be applied to the grade in instances where deliverables exceed or fall short of a tier without rising or falling completely to the neighboring tier.
To reduce any stress implicit in the all or nothing approach, there are a couple of "Get Out of Jail Free" cards.
- With the exception of the final assignment, a work marked Unsatisfactory can be resubmitted to fulfill Satisfactory requirements for up to a week after the work is returned.
- With the exception of the final assignment, a work marked Satisfactory can be resubmitted to fulfill Sophisticated requirements for up to a week after the work is returned.
- You will have three late days that you can use on any programming assignment or reading response.
- Up to two additional absences can be replaced by substantive sketches (they should be unique and non-trivial).
We are going to be using Piazza for our class discussions outside of class. Rather than emailing questions to me, please post the questions on Piazza. 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.
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 Piazza. 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). As such, don't just go looking for code that you can turn in to satisfy an assignment. You can probably find some, but it won't help you much, and I'll probably be able to tell.
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.
Accommodations for disabilities
Students who need test or classroom accommodations due to a disability must have a Letter of Accommodation from the Disability Resource Center. Please contact one Jodi Litchfield (email@example.com or 802.443.5936) for more information. Students with Letters of Accommodation are encouraged to make an appointment with me as soon as possible. All discussions will remain confidential.