Creative Coding and Software Design

Fall 2017

Instructor - Grigore Burloiu / moc.liamg|uiolrubg#moc.liamg|uiolrubg

Credits - 6 ECTS

Course Prerequisites

This class assumes a high degree of computer and media literacy, but not a high degree of programming ability. A logical, structured approach to solving creative problems is encouraged. Previous experience in languages such as C++ or Javascript is a plus, but not required.

Course Description

This is an introductory creative programming course, aimed at students without a programming background looking to start developing interactive, media-rich applications. We focus on event-driven, concurrent real-time processes, and how to design them into systems that implement various behaviours, user interfaces and graphical outputs. The resulting sketches will form the basis for applications such as games, installations, data visualisations etc.

Course Objectives

Students in this course will:

  • understand fundamental programming techniques in C++/openFrameworks, Processing, Arduino, Unity, p5.js
  • apply data visualisation and graphical processes
  • integrate various input/output methods and digital media into coherent designs
  • complete an interactive creative coding project

Course Structure

This course will be comprised of 13 weekly classes, 1 final project proposal, and 1 final project. Additionally, there will be small weekly homework assignments, which we will go over and build upon in class. Homework assignments will often be supplemented by reading unless otherwise noted.

The grading breakdown is as follows:

  • Class attendance and participation (25%).
  • Weekly homework studies (15%): to be published on Github by the due date.
  • Final project proposal (10%): to be presented to class and approved.
  • Final project (50%): each project is individual, and can be any application showing creative skills and design clarity, as approved based on your proposal.


  • Programming Interactivity: A Designer's Guide to Processing, Arduino, and openFrameworks, by Joshua Noble.
  • Processing: A Programming Handbook for Visual Designers and Artists, by Casey Reas and Ben Fry.
  • Beginning 3D Game Development with Unity 4: All-in-one, multi-platform game development, by Sue Blackman.
  • Make: Getting Started with p5.js: Making Interactive Graphics in JavaScript and Processing, by Lauren McCarthy, Ben Fry, and Casey Reas.
  • The Nature of Code, by Daniel Shiffman. Link
  • ofBook. Link

Class Schedule

This schedule is subject to change depending on the interests and pace of the class, etc. All code prepared for the class is available here.

Week 1 (12.10): Introduction to creative coding platforms: C++/oF, Processing, Arduino, Max, p5.js, D3.js, Pd, Unity. Installing required software. Version control and Github.

  • Slides
  • Reading: Programming Interactivity, ch1
  • Assignment (due before following class): Create your Github repo and your first homework entry.

Week 2 (19.10): Variables, simple data types, math. Conditionals, loops, and simple algorithms. Basic 2D drawing. Mouse interactivity.

  • Slides
  • Reading: Programming Interactivity, ch2. Processing, Structure 2, Shape 1, Input 1.
  • Assignment (due before following class): Processing sketches using mouse-based animation.

Week 3 (26.10): Functions. Math and stochastic processes. Colour. Keyboard interactivity.

  • Reading: Processing, Structure 3, Shape 2, Math 1&2&4, Color 1, Input 2&3.

Week 4 (2.11): Arrays & collections. Visualizing data. Introduction to creative coding in Javascript with P5.js.

Week 5: Vectors and Forces: A look at simple systems used when creating motion and animation.

Week 6: Introduction to Unity: basic interaction and control.

Week 7: Project proposals.

Week 8: Oscillation: Waves, repetition, and sound. External APIs in Processing.

Week 9: Particle Systems and getting started with Object Oriented Programming.

Week 10: Object oriented programming continued. Introduction to oF.

Week 11: OpenGL in oF. 3D worlds in Unity.

Week 12: Network communication. The OSC protocol. Collaborative systems.

Week 13: Computer vision. oF & Unity recap.

Week 14: Final project discussions.

Final: Final Project Presentations.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License