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

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

  • Slides
  • Reading: Processing, Structure 3, Shape 2, Math 1&2&4, Color 1, Input 2&3.
  • Assignment (due before following class): Interactive sketch.

Week 4 (2.11): Getting started with Object Oriented Programming.

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

Week 5 (9.11): Arrays & collections. Visualizing data. Creative coding in Javascript with P5.js. Project brainstorming.

  • Slides
  • Reading: Processing, Motion 1&2, Data 4, Synthesis 3.
  • Assignment (due before following class): Create a visualisation using .csv data and arrays.

Week 6 (16.11): Guest lecture (Ciprian Făcăeru): introduction to Unity for interaction and VR.

Week 7 (23.11): Project proposals. More data visualisation and data sources.

  • Slides
  • Assignment (due before following class): Create a visualisation using .csv / XML / JSON data.

Week 8 (7.12): Interacting with images and 2D arrays.

  • [ Slides]

Week 9 (14.12): Guest lecture (Marius Bădiță): video game development in Unity.

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

Week 11 (11.01): Particles in Processing. Collaborative systems.

Week 12 (18.01): 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