Skip to the content.

Generative Computer Graphics - Fall 2025

MIT License Twitter

★★★ This repository is published here ★★★

📂 Repository Structure

📚 Lessons

📓 Journals

🎨 Assets & Slides


📅 Course Schedule (12 × 2.5h Lessons)

  1. Lesson 01 - Introduction & Foundations - Course intro, analog computing, p5.js setup
  2. Lesson 02 - Grids & Iterative Patterns - Structured generative systems
  3. Lesson 03 - Clock / Time - Generative representation of time
  4. Lesson 04 - Drawing Machines - Generative systems as drawing tools
  5. Lesson 05 - Reflection / Collect / Prepare - Mid-course checkpoint
  6. Lesson 06 - Faces / Parametric Generators - Parametric design through faces
  7. Lesson 07 - Pixels (Part 1) - Pixels as material
  8. Lesson 08 - Pixels (Part 2) - Advanced pixel transformations
  9. Lesson 09 - Advanced Composition / Mixed Media - 3D, spatial design, hybrid projects
  10. Lesson 10 - Integration & Experimentation - Merge multiple techniques
  11. Lesson 11 - Final Project Workshop - Refinement and peer review
  12. Lesson 12 - Final Presentations & Critique - Sharing and evaluation

Intro

Welcome to the classes generative design @ HSLU / Digital Ideation. This is the main page for the class, you will find a list of resources available below as well as some other information to help with this semester long workshop. It is advised to download / clone this repo at the beginning of the class and eventually keep it updated. All the assignments and their accompanying documentations should be collected by the students in the journal branch of this repo.

Suggested themes

During the class we will be looking at the core functions of p5.js and three.js, and some simple useful maths technics. We will experiment with shapes, patterns, agents, etc… We will learn how color spaces are created and how to generate them dynamically. We will then adapt what we’ve learned and play with new concepts such as noise and random values.

Class

Learning objectives:

Goals:

Evaluation criteria:

Deliverables:

Tools

We will use p5.js for the front end. It’s a high level creative programming framework with an intuitive API. If some of you have used Processing before you should be confortable using p5.js.

References

📚 Resources

General

P5

JS

Three.js

Journaling + js editors

🧑‍🎨 Inspirations

🐦 Who to follow

👾 Other

Academic integrity

(Copied from Golan Levin’s 2020 CMU class)

Use of free and open source code

Credit is perhaps the most important form of currency in the economies of commons-based peer production and open-source media arts. You are expected to cite the source of any code you use. Please note the following expectations and guidelines:

Use Libraries. In your Projects, the use of general, reusable libraries is strongly encouraged. The people who developed and contributed these components to the community worked hard, often for no pay; acknowledge them by citing their name and linking to their repository.

Be Careful. It sometimes happens that an artist places the entire source code for their sketch or artwork online, as a resource from which others can learn. The assignments professors give in new-media arts courses are often similar; you may discover the work of a student in some other class or school, who has posted code for a project which responds to a similar assignment. You should probably avoid this code. At the very least, you should be very, very careful about approaching such code for possible re-use. If it is necessary to do so, it is best to extract components that solve a specific technical problem, rather than those parts which operate to create a unique experience. Your challenge, if and/or when you work with others’ code, is to make it your own. It should be clear that forking an artwork from someone’s page on GitHub, Glitch, OpenProcessing, etc., and simply changing the colors would be disgracefully lazy. Doing so without proper citation would be plagiarism.

Informal colaborations

Our course places a very high value on civic responsibility that includes, but is not limited to, helping others learn. In this course, we strongly encourage you to give help (or ask others for help) in using various toolkits, algorithms, libraries, or other facilities. Please note the following expectations:

Formal colaborations

The assignments in this course are primarily intended to be executed by individuals. That said, I am in favor of students collaborating if such collaborations arise organically and can be conducted safely. Please note the following expectations: