Github Organization Link: https://github.com/CSVADFall25
Instructor: Jennifer Jacobs (jmjacobs@ucsb.edu)
Lecture Time: Monday-Wed 3:30-4:45 PM in Elings 2003
Office Hours: Wed 10-11:00 AM by appointment only
Course Registration Survey
Computational systems can extend traditional art and design practices or support new creative workflows and outcomes. In this course, we will investigate the design and engineering of computational systems for visual art and design. We will investigate algorithmic approaches for generating and modifying the core elements of visual works of art and design, including, but not limited to, form, color, composition, and pattern. We will also examine human-computer interaction elements of computational systems for art and design by designing and testing new interfaces and interactions for computational authoring of graphics, animation, and other visual media. Lastly, we will analyze the impacts of different methods of computational automation and generativity in the process of authoring visual media.
Students will learn fundamental computer graphics methods, basic interface development techniques, and methods for physical interface prototyping. Relevant readings from graphics, HCI, and art and design theory, and a review of seminal works in computational art and design, will complement technical production.
Examine concrete opportunities and challenges of using computational methods to create works of visual art and design through creative practice.
Contextualize practical approaches to creative coding within the history and theory of computational art and design.
Introduce students to techniques for modifying existing programming languages, tools, and interfaces to support new audiences and new forms of expression
Engage in critical reflection on the dominant paradigms and approaches in computational art and design and explore alternatives.
Provide an opportunity for students to develop their own artworks, software applications, and programming abstractions.
The course is divided into bi-weekly class meetings on Mondays and Wednesdays from 3:30-4:45 PM Pacific Daylight Time.
On Mondays, the course time will be split into discussions of mini assignments when assigned, lectures introducing fundamental principles, works, and methods, and initial technical demonstrations. Mini assignments should be posted to GitHub before the start of the following class. By Monday's course, students should also provide comments on the reading reflections of other students from the past week's reading.
On Wednesdays, the course time will be split into a discussion of the readings during the first half and additional technical demonstrations, Q&A sessions, and lectures during the second half. Readings and reading reflection slides should be completed before 11 AM on Wednesdays.
Barring any restrictions enforced by the University, all classes will be in person.
Students will be assigned weekly readings drawn from Fine Art, Computer Graphics, Computational Design and Human Computer Interaction texts. Students are expected to complete the required readings and a reading reflection slide by Wednesday at 11AM, as well as engage in group discussions in class on Wednesday. Students should also leave comments on at least 2 other reading reflections from their peers by the following Monday.
Reading reflections should focus on analysis and response of resonant themes in the reading, or provide comparisons or contrasts between readings. Required and optional readings can be found in the Schedule tab, as well as in the daily overview pages (subtabs of the Schedule tab).
Students will be assigned two mid-course coding assignments and one final project.
Code assignments should be uploaded to the class GitHub organization.
All code assignments will primarily be demonstrated in the p5.js javascript programming language, with some exceptions in C++, Python, and Javascript when necessitated by the assignment. However, students are free to use any language they wish to in the course of the class, as long as the language is capable of producing perceivable visual output and the code can be shared via github. Some alternatives include regular Java Processing, openFrameworks (C++), and Max.
A portion of the class will be devoted to small-group discussions of readings and concepts from the lecture (on Wednesdays, in class), as well as group critiques of peer work and presentations during assignment reviews. Students are responsible for actively and thoughtfully contributing to these discussions and critiques. Students are also responsible for providing feedback on reading reflections and course assignments by other students. Students will also receive participation credit for supporting other students in addressing technical challenges or coding questions via the class slack, or in class sessions.
Generative AI is fundamentally altering how people generate text, code, and images. Given that both programming and image generation are subjects of this class, we will critically examine, to the extent feasible with existing tools, Generative AI methods of image and code creation. Students are permitted to use Generative AI technologies to write and modify code, but you must acknowledge and document the use of these technologies as comments in your source- e.g., what tool was used and for what general purpose.
Students are discouraged from relying exclusively on Generative AI technologies alone for image and animation generation —e.g., it is not recommended that you enter a prompt into ChatGPT to generate the visual output for an assignment. You are being evaluated on the creativity, effort, and novelty of your assignments. So while it is technically acceptable to turn in AI-slop, this will result in a very low grade. You may, however, incorporate LLMs as part of a pipeline into a larger system for an assignment. We will examine examples of research projects that adopt this approach.
Students will never be required to use Generative AI for an assignment.
Students are permitted to use grammar-checking tools for their reading responses. Submitting any text generated by an LLM as your own for a reading response will be considered academic dishonesty, as you are misrepresenting the output of a model as your own writing. Using LLMs to summarize reading assignments is strongly discouraged.
Final grades will be calculated as follows
Assignment 1: 22.5%
Assignment 2: 22.5%
Reading reflections (evaluated both for quality and completion) 20%
Participation 15%
Final Project 25%