Computing in Context: Computing and the Arts

Learning Objectives:

Pre-context labs

Lab 1/2: coding poetry and poeticizing code

Lab 3: Generative Art v0.1

Module 1: Visuals

Lecture 1:

Technical aspects of visuals What is the difference between real-time vs offline graphics generation? How do we understand performance bottlenecks and other basic issues in graphics systems?

Lecture 2:

Creativity and Code. Context in digital art. How can code itself be a visual artistic object? Can we treat code as literature? What are the core techniques used in generation of visuals. How do we define the difference between data visualization and computational art?

How do we tackle issues of artistic ownership of art generated by an algorithm? This is especially relevant in the machine learning setting, where training data was used in conjunction with code to generate new art.

Project: Processing

Processing is an easy to use programming framework for creating visual arts. We will use Processing in Python mode (processing.py) to create our own visual art with code. During the creation process, some of the key questions we ask are: Where will this be displayed? What is the context in which it appears? What type of viewers consume this? How do we document our work accordingly to fully communicate our artistic intentions.

Module 2: Audio

Lecture 3: Technicals of Audio

What is digital audio? How is sound represented in a computer? What new challenges arise in programming audio as opposed to non-time domain programming?

Lecture 4: Live coding Ethos

We start be examining the design of languages around creativity - how does the structure of a programming language encourage exploration and creativity? We then look at the practice of live coding and algoraves. How can language design guide us to ensure code does not break on stage? We ask - if code is art, what is virtuosity in code?

Project: Live coding with Sonic Pi

Here we look at code as a performative interface. Looking beyond code as a fixed object, we find artistic value in the process of code evolution. We explore experience of writing code in front of an audience and accepting imperfection. In a more practical sense, this is particularly good training for coding interviews.

Module 3: Physical Computing

Lecture 5:

We give a basic overview of physical computing, the maker movement, etc. How much background do you really need to build your own hardware device? What are the various ways you can approach this? What is the motivation for embedded systems, when should we just use a mobile phone?

Lecture 6:

What is Digital Art in Place, and Place in Digital Art? We explore issues of presentation of digital artifacts and how this can interface with strangers.

Project: micro:bit Art

Using the micro:bit from BBC, we will explore the basics of bringing computation to the physical world. The micro:bit can be programmed with Python. We give an overview of the basic components of the micro:bit, and how to control them with code. You will create a digital artifact that interfaces with non-technical users. Here we pay particular attention to the importance of documentation.

FAQs

Will any of this help me get a job?

Probably. In module 1, we work with processing.py. While our focus is on generative art, this is has significant amount of overlap in the skill set used for data visualization (for example, the gorgeous graphics produced by the New York Times on a daily basis). In module 2, we tackle live coding - the performative practice of writing code in front of an audience. While the art aspect of live coding may not be widely “marketable”, having the confidence to write code on the spot (especially in front of people you want to impress - audience or employer) is critical to any tech job. In module 3, we work with physical computing - an area less dominate in the tech industry at the moment, having a familiarity with this level of computing gives you a better context for what is going on in the world around you (also, IoT hype and all that).

More generally, hopefully through this class you will come to realize that any experience that you gain with computing (in any context) will be broadly applicable to many paths to gainful employment. Computing is a mindset and way of thinking more so than it is a skill set.