Creative Coding and Software Design: Fundamentals

Fall 2019

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 build towards event-driven, real-time processes, and how to design them into systems that implement various user interfaces, behaviours, 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 Processing, Arduino, Python, 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 12 weekly classes 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:

  • Weekly homework studies (80%): to be published on Classroom by the due date. Each assignment is graded out of 10. Grading: 0 (missing) - 4 (superficial attempt) - 8 (complete) - 10 (extra). Every 7 days' delay detracts one point. Maximum accumulated points is 80, out of a potential maximum of 11*10 = 110 points.
  • Final project (20%): each project is individual, and will be a simple application showing creative skills and design clarity, as chosen from a list of subjects.

Readings

  • 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

2019 students: go to Google Classroom. 2018 syllabus is archived below.

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.

Sessions in common with the Art of Game Design MA programme are marked with a plus (+).

Week 1 (2.10) (+): Introduction to creative coding concepts and platforms: C++/oF, Processing, Arduino, Max, p5.js, Python, Pd, Unity.

  • Slides
  • Reading: Programming Interactivity, ch1
  • Assignment (due before following class): Install Processing and Github.

Week 2 (9.10) (+): Version control and Github. 2D drawing basics.

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

Week 3 (16.10) (+): Variables, simple data types, basic math. Conditionals and simple algorithms. Basic 2D drawing. Mouse interactivity.

  • Slides
  • Reading: Processing (2nd. ed) ch3, ch5, ch6
  • Assignment (due before following class): Processing sketches using mouse-based animation.

Week 4 (30.10) (+): Loops. Colour. Keyboard interactivity.

  • Slides
  • Reading: Processing ch4, ch7, ch8
  • Assignment (due before following class): Processing sketches using loops and keyboard interaction.

Week 5 (6.11) (+): Math and stochastic processes. Functions.

  • Slides
  • Reading: Processing ch24
  • Assignment (due before following class): Interactive sketch.

Week 6 (20.11): Arrays & collections. Visualizing data. Image animation. Semester project brainstorming/discussion.

Week 7 (28.11): Project proposal presentations. More data visualisation and data sources. Creative coding in Javascript with P5.js.

  • Slides
  • Reading: Processing, ch32. Learning Processing, ch18 p383
  • Assignment (due before following class): Create a visualisation using .csv / XML / JSON data.

Week 8 (17.12): Getting started with Object Oriented Programming.

  • Slides
  • Reading: Programming Interactivity ch5. Processing ch25, ch26.
  • Assignment (due before following class): Use objects and functions to generate moving shapes.

Week 9 (8.01): External APIs in Processing. Network communication. The OSC protocol.

  • Slides
  • Reading: Learning Processing, ch12&19

Week 10 (15.01): Particles in Processing. Advanced OOP: inheritance.

Final (5.02): Final Project Presentations.
The complete source code is due by Monday 4 Feb @ 23h59, on your Github repo. Projects will be graded on:

  • completion of the task proposed in Week 7 (and amended up to Week 10)
  • clarity of style (incl. appropriate indentation, comments etc)
  • elegance of design (logical program structure, good modularity, avoiding redundancy etc)
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License