CS/FINE 383 Winter 2026

CS/FINE 383 Winter 2026

Computational Digital Art Studio

An upper-level studio course to create computational projects that function as art works and aesthetic experiences. Students will work in an interdisciplinary environment to combine computer science principles with fine art technical and conceptual skills.

Course calendar descriptions: CS383 and FINE383.
I don't have all the prerequisites!

Both CS383 and FINE383 require FINE228 or FINE247 so students have studio art experience in digital art.

CS383 requires CS240 to limit enrollment to students in a CS program who have completed their second year of study.

FINE383 requires CS105, CS106, and one of CS100, CS200, or CS230 so students have experience programming and understand key CS concepts.

If you don't have the prerequisites, contact Prof. Daniel Vogel and explain your situation using the guidelines below.

For FINE383:

  • You may have coding experience other than the official CS prerequisites. If you're comfortable with intermediate coding, especially in JavaScript, then an exemption is likely be possible. You will need to provide evidence of your coding experience.
  • An override for the FINE second year studio prerequisite will be considered if you have a credit in a university-level studio art course, like FINE100 or FINE130. You will need to provide a detailed explanation and include a portfolio in your request.

For CS383:

  • If you don't have CS240 and you're in third year or greater, then you must not be in a CS program. In some cases, you may be permitted to enrol assuming you satisfy the FINE requirements, but you need to ask a CS advisor about enrolling as a non-CS student.
  • If you're an engineering student, the policy is that you need to be in 3B or later with a 75% average, and you need to have completed ECE150, ECE250 and one more senior CS course.
  • If you took a first-year studio art course, like FINE100 or FINE130 and a supporting portfolio of your work, you can likely get an exemption for the second year FINE course requirements.
  • If you haven't taken a university-level fine art studio course, perhaps you have art-related experience from high school, community classes, or even a serious art-related hobby, and/or experience or courses in related areas like design and architecture. With a supporting portfolio of your work, some combination of these often leads to an exemption.

Staff

Meeting Time and Location

Tuesday and Thursday 1 - 3:30pm in ECH 1237
ECH is "East Campus Hall", it's a low-rise building housing the Fine Arts Department. ECH 1237, also called the "Flex Space", is a large open studio space at the West end of the building.

📍 How to find the meeting room: When you're coming from DC, ECH is located just behind E7 and beside E6. The easiest way to find ECH 1237 is to enter at the University of Waterloo Art Gallery (UWAG) entrance, then go down a short hall, make a quick left and right around some lockers, and you’ll see the ECH 1237 door. Here’s a map with a pin at the UWAG entrance in ECH.

Course Communication

  • Course announcements and out-of-class questions are on MS Teams (you should have received an invite).
  • Submissions and grading are on LEARN (you should see this course when you login).

About the Course

Learning Outcomes

  • Develop integrated approaches to artistic production that use computational media to generate new forms of meaning;
  • Use the creative application of software to develop innovative artworks that reflect conceptual interests, ideas, and experiences;
  • Develop advanced technical knowledge in the P5.js language and related libraries for techniques like image processing, computer vision, generative processes, sound processing, data processing, and online data APIs.
  • Use creative problem solving to overcome formal, technical, and logistical challenges;
  • Develop advanced research capabilities in and awareness of, the broad field of electronic art and contemporary artistic practice.

Format

Seminars

Introductions to the formal and conceptual principles that guide each artwork module. Seminars are structured as lectures combined with activities that support the creative development of student artworks. These activities are flexible, responsive, and open-ended, and are designed to encourage exploration and discussion.

Coding Workshops

Hands-on introductions to specific topics such as code libraries, programming techniques, or algorithmic approaches. Workshops focus on building technical skills while providing a starting point for creative exploration. Each workshop consists of guided code demonstrations interspersed with short exercises to practice key techniques. Students complete a small open-ended coding "sketch" in response to the workshop and demonstrate it in the following class.

Studios

Dedicated in-class time to work on assignments. During studio classes, the instructor and TA meet with students one-on-one to review in-progress work and help with conceptual and technical questions. Impromptu mini-tutorials are often offered in response to common questions that are useful to everyone (for example, “How do I do X?”).

Assignments

Students create three major artworks: A1, A2, and A3. Each is open-ended, but must be screen- or audio-based. A1 and A2 build on concepts from earlier workshops, while A3 serves as a capstone that synthesizes everything in the course and is designed for the final art exhibit.

Each student will also research and deliver a Pecha Kucha presentation about an artist working with computational digital art.

Final Art Exhibition

After the final critiques, we usually stage a pop-up final art exhibit. The class designs a poster and programs the large displays in our gallery-like studio classroom so that friends, family, and the broader university community can see what students have made. It’s a celebratory way to close the term and get a sense of additional aspects when designing computational art works for public exhibition.

Last modified

© Daniel Vogel

Cheriton School of Computer Science, University of Waterloo

Made with ❤ using Eleventy, Tailwind, and Alpine.js