Generative Computer Graphics - Fall 2025
★★★ This repository is published here ★★★
📂 Repository Structure
📚 Lessons
lessons/
- Contains all 12 lessons with structured content- Each lesson includes: README.md, code/, docs/ (with images), and specific subfolders
- Lessons 01-12 follow the canonical course schedule
📓 Journals
- Switch to ghe branch
journal
to write your daily explorations.
🎨 Assets & Slides
📅 Course Schedule (12 × 2.5h Lessons)
- Lesson 01 - Introduction & Foundations - Course intro, analog computing, p5.js setup
- Lesson 02 - Grids & Iterative Patterns - Structured generative systems
- Lesson 03 - Clock / Time - Generative representation of time
- Lesson 04 - Drawing Machines - Generative systems as drawing tools
- Lesson 05 - Reflection / Collect / Prepare - Mid-course checkpoint
- Lesson 06 - Faces / Parametric Generators - Parametric design through faces
- Lesson 07 - Pixels (Part 1) - Pixels as material
- Lesson 08 - Pixels (Part 2) - Advanced pixel transformations
- Lesson 09 - Advanced Composition / Mixed Media - 3D, spatial design, hybrid projects
- Lesson 10 - Integration & Experimentation - Merge multiple techniques
- Lesson 11 - Final Project Workshop - Refinement and peer review
- 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:
- Learn techniques of “generative art”
- Get to know the history and artists
- Document and communicate your ideas
Goals:
- Create original artwork(s)
- Write a journal describing your journey
Evaluation criteria:
- Attendance, participation and engagement in others’ projects (1/3)
- Research, Documentation (1/3)
- Final Project (1/3)
Deliverables:
- Presentation + Source code + Documentation
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
- Vera Molnar Journal: Part01 - Part02
- Notebook archives:
- The coding train 🌈 (course)
- Nature of code (book)
- Canvas demos (demo)
- Webgl demos (demo)
- Designing programs (course)
- Shaders tutorials (tutorials)
P5
- Getting started with P5.js (intro)
- Learn
- Wiki
- Demos (demo)
- Reference
- Kadenze P5.js (course)
JS
Three.js
- Getting started with three js (intro)
- Three.js fundamentals (articles)
- Three.js demos (demo)
Journaling + js editors
🧑🎨 Inspirations
🐦 Who to follow
- Manolo Gamboa Naon
- Lia Something
- Jo
- Etienne Jacob
- Keita Yamada
- Lolo Armdz
- Generate Me
- Tim Rodenbroeker
- 🐝💣
- Martin
- Manoloide
- Articulation copy (2)
- Kjetil Golid
- Guillaume Pelletier-Auger
- grgrdvrt
- Marcin Ignac
- Nicolas Barradeau
- Matt DesLauriers
- Frederik Vanhoutte
- Daniel Shiffman
- Zach Lieberman
👾 Other
- Artnome - Blog on digital art
- Big list of resources
- Useful Tips to generate infinite loops
- Generating things with code
- Gallery of experiments
- Tumblr
- Making noise
- History
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:
- In this class, it’s OK to give and receive help. In fact, it’s better than OK! But students who receive help from someone else are obliged to acknowledge that person in their project report, clarifying the nature of the help that was received.
- We are all teachers. Students with advanced skills are expected to help others, yet refrain from doing another’s work for them. You can usually tell when you’re about to cross the line: Ask yourself whether you are teaching someone to fish, or merely giving them the fish.
- When in doubt: give credit to the people who have helped you.
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:
- Use proper social distancing. In light of the ongoing the COVID-19 pandemic, please respect University and other health guidelines regarding personal distance. Do not share computer keyboards, sit at least 6 feet apart, etcetera.
- Notify the Professor. It’s helpful for me to know who is working with whom. Students who wish to collaborate should jointly inform the professor as early as possible.
- Only pairs. Unless permission is explicitly granted by the Professor, collaborations in this course are restricted to pairs of students.
- Describe who did what. Written reports for collaborative projects should describe how your effort was distributed.
- Only known collaborators. Your project collaborator, if you have one, must be in this class. You may not collaborate with people from outside the course (e.g. your housemate).
- Avoid co-dependency. You may not collaborate with the same person (i.e. submit an assignment jointly) on more than two projects.