Lecture 1 (27 Jan)
Creative coders are artists, designers, architects, musicians, and poets who use computer programming as their chosen media. These practitioners blur the distinction between art and design and science and engineering […].
~Golan Levin and Tega Brain
Ties Robroek
Thomas Sandahl ChristensenFun facts:
Axel Lolle Døring

Why I love programming
Fun facts

Kirstine Lund Hansen
Line Larsen

Generally (but check the course plan!)
| When | What | Where | Who |
|---|---|---|---|
| Tuesday 8:00-12:00 | Lectures | 5A14-16 | Ties |
| Thursday 12:00-16:00 | Exercises | 5A14-16 | TAs |
| When | What |
|---|---|
| Tuesday Week 7 | Group and Project introductions |
| Tuesday Week 10 | Milestone 1: Present Project Concept |
| Thursday Week 15 | Milestone 2: Present Project Progress |
| Tuesday Week 19 | Milestone 3: Final Presentation |
| Friday Week 22 | Report Hand-in |
Please note: during the design process, the only evaluations that you will do are by you yourself as designers in your creative programming experiments!
| Exam type | C1G: Submission of written work, internal (7-trinsskala) How well you have attained the ILO’s of the course |
| Report | 12 pages group report Documenting the group project Including 1-page individual reflection per member Including individual reflection on the process |
| Hand-in | Fri, May 29, 2026 (14:00) |
After the course, the student should be able to:
Apply programming fundamentals in a creative programming environment.
After the course, the student should be able to:
Program creative and interactive artifacts using P5.JS (in JavaScript)
After the course, the student should be able to:
Analyze and describe creative programming projects.
After the course, the student should be able to:
Use programming as a tool to communicate your perspectives on a pressing issue in a broader society.
After the course, the student should be able to:
Reflect on the principles and issues underlying a creative programming process.
This course uses quarto slides instead of PowerPoint.
Creative Programming is all about interactivity, and the slides reflect this. Lectures are hands-on!
You can open the slides on any device; they are websites.
While there is no audio/video recording, these slide are narrated with text.
Did you miss a slide or want to revisit? Open the narration tab while studying to get an explanation of difficult slides.

Throughout this course we will have many slides with coding examples.
Sometimes the code is shown without displaying what it does:
Other times we have interactive coding blocks, just like the editor on your computer.
Hello World: a simple computer program that emits (or displays) to the screen a message similar to “Hello, World!”.
These two weeks we are going to make a creative version of a “Hello World!” program.
First time we are expressing ourselves in programming - make a program that displays your name / favourite colour / hobbies / mood.
Brainstorm together in groups of 5-6 - who are you and how do you want to say “Hello World!”?
This info will be really useful for the first exercise!
The tldraw results are available on LearnIT.
Go to https://processing.org/download
Install Processing.


Open Processing, click away the welcome message, and select “Manage Modes” in the top right.
Select and install the p5.js mode.
Back in the editor, select the p5.js mode.
Make sure you have your Processing editor running and ready.
Our p5.js sketch has a sketch (javascript) file and an index.html file.
We will just focus on the sketch file (for now).
Saving a sketch will result in a folder with both these files.
There are a bunch of examples available inside of the editor.
Double click an example to open it up.
Running the code (▶) opens up your web browser.
Javascript is a website language.
Right mouse button -> Inspect to see any errors or other console output.
Every Sketch starts with two functions: setup and draw.
setup() runs once at the start of the sketch.
Every Sketch starts with two functions: setup and draw.
draw() runs forever, repeating continuously.
console.log() allows us to write a message to the debugging console.
This is very useful for when you are trying to get rid of issues (bugs) in your code.
console.log() is the function that writes a message. The message it writes is the argument that is within ( ... ).
"Hello! This executes once." is a string, a sequence of characters. Strings are surrounded by " to signify their start and end.
Let us now move our console.log() to the draw() function instead.
;) to indicate the end of the instruction.//) are invaluable to explain the inner workings of the code to the reader./* */)Making mistakes is human. What happens if we forget the second " in our code?
The code does not know where the string ends, resulting in a syntax error.
(0, 0)x is the horizontal position and y is the vertical positionsetup() (only once), we define the size of the canvascreateCanvas() requires two arguments:
w (width horizontal) and h (height vertical) specify the size of the canvaspoint() function with two argumentsstrokeWeight() to define the thicknessrect() requires 4 argumentsx and y as well as the width w and height hcircle() draws a circle with 3 arguments: x, y and sizeellipse() draws an ellipse with 4 arguments: x, y, w, hbackground() and fill() so far to add colourred, green, blue; a higher value indicates a stronger intensity of that colortext() puts our text on the canvas, with the args being the text string, and position x and ytextSize() before drawing to set the size of the textrandom() to generate random numbersmouseX and mouseY allows us to use the position of the mouserandom() generates a random number that we can use e.g. as an argument for drawingmouseX returns the horizontal x position of the mouse and mouseY the vertical y positionrandom(), we can also use these numbers in mathPractice and do not be afraid to make mistakes :)

Creative Programming 2026 Lecture 1 - Ties Robroek - IT University of Copenhagen
Comments
Remember to comment your code to make it legible to someone else (and your future self!).