Creative Coding and Software Design: Fundamentals

Fall 2018

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 11 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.

Code

All code prepared for the class is available here.
To keep up to date you have two options:
A) Visit the link and clone the repo to your desktop.
B) Fork the repo to your own account. Then, to sync to the latest state of the master repo, follow the instructions for bash/terminal or in-browser.

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

This schedule is subject to change depending on the interests and pace of the class, etc.
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. Arrays & collections. Visualizing data.

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

Week 6: Creative coding in Javascript with P5.js. Semester project brainstorming/discussion.

Week 7: Project proposal presentations. More data visualisation and data sources.

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

  • Reading: Programming Interactivity ch5

Week 9 (+): Interacting with images and 2D arrays.

Week 10: External APIs in Processing. Network communication. The OSC protocol.

Week 11 (+): Particles in Processing. Advanced OOP: inheritance.

Week 12: Final project discussions.

Final: Final Project Presentations.
The complete source code is due by ___ @ 23h59, on your Github site. Projects will be graded on:

  • completion of the task proposed in Week 7 (and amended up to Week 12)
  • 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