Code and Platform

A class + Summer 2016 session, School for Poetic Computation + Instructor, Nick Montfort

This is an updated draft of 14 July 2016. The syllabus may be updated before or during the term.

This course welcomes students to exploratory programming, a practice in which the outcome of development is not known to begin with, and is determined in the process of writing code, working with the chosen platform, and uncovering technical and artistic possibilities. This programming practice is appropriate for both new and experienced programmers. The mini-projects assigned have “low stairs” to allow newcomers to get started and do interesting work, and “high ceilings” to allow those with more background to do even more elaborate work. To understand this practice deeply, we consider how programming relates to the platform on which it is done. A platform is not just an accidental conglomeration of hardware and software, but an intentional, thoughtful idea about computing and how it should be used - one that takes material form. Learning about this involves platform studies, but also platform practices in which we write programs for different platforms. Finally, our work investigates and is informed by history, situating the explorations we are now undertaking in the context of computing and artistic work for decades past and the framework of platform and coding choices.

Recommended Books

1 (June 7) Exploring with Code

Modification and in-class sharing of short text-generating programs.

Consideration of HTML/JavaScript vis-a-vis Python, as platforms.

A talk on exploration (as opposed to exploitation or the implementation of specifications) in programming, using programming as a means of inquiry and creativity.

Read for next time: From Mindstorms, Seymour Papert, 1980. In The New Media Reader.

Project for next time: Modify "Upstart."

2 (June 16) Essentials of Computing Platforms

Discussion of the Mindstorms excerpt.

Discussion of modified programs and the two platforms.

A talk on platform studies, covering some of the major insights in Racing the Beam and introducing the work done in the Platform Studies series.

Programming fundamentals and “starter program” work, in class, in pairs.

Read for next time: Chapter 1, “Stella,” and the afterword from Racing the Beam, Nick Montfort and Ian Bogost, 2009.

Our planned project was delayed by a week.

3 (June 23) A View of Platforms from Code

Discussion of the Racing the Beam excerpt.

Discussion of starter programs.

A talk on code, platform, and history as seen through a one-line Commodore 64 BASIC program.

Read for next time: From 10 PRINT CHR$(205.5+RND(1)); : GOTO 10, Nick Montfort, Patsy Baudoin, John Bell, Ian Bogost, Jeremy Douglass, Mark C. Marino, Michael Mateas Casey Reas, Mark Sample, and Noah Vawter, 2012. The link is to a PDF of the entire book; Read at least “10 Introduction,” “50 BASIC,” and “60 The Commodore 64.”

Project for next time: Write a starter program in Python, JavaScript, BASIC, or any other language you choose. If you are uncertain about what to choose, use Python. This should be a program that you genuinely think is a good way to introduce programmer to newcomers. It should be very short: no more than 140 characters, so that it fits in a tweet.

4 (June 30) Platform Perspectives

Discussion of starter programs. I'll show and (as best I can) run each of the programs from my computer, as they were sent to me, and we will discuss them - what they rhetorically and poetically suggest, how they work in the languages chosen, and what we can learn about computation and programming from them.

Discussion of the excerpts from Racing the Beam and 10 PRINT. How do these short but fairly in-depth discussions of the Atari VCS, the Commodore 64, and BASIC help us think about platforms and they are programmed? Is there a poetics to platforms as well as programs?

Read for next time: “Personal Dynamic Media” by Alan Kay and Adele Goldberg, 1977. In The New Media Reader.

Project for next time: Prepare a five-minute talk with 15 slides to be shown for 20 seconds each. Email your slides to Nick in PDF format (not another format, but PDF) by midnight Wednesday. The topic should be a computing platform of your choice, such as a particular home computer or videogame system, a historical computer of some significance, a software platform such as Flash or a specific programming, or a modern-day computational platform such as iOS, Android, Windows, Mac OS X, or Linux. It needs to be programmable, and you should be able to write or modify a program for this platform.

5 (July 7) Programming Text

Student presentations on platforms.

Discussion of “Personal Dynamic Media.”

Built-in ways of manipulating text in Python: strings, indexes, slices, and more.

Read for next time: “The GNU Manifesto” by Richard Stallman, 1985. Also in The New Media Reader.

Project for next time: Choose to do either a project based on a particular platform OR a text transformation system in Python. If you choose the platform project, show me a working setup on your computer in class, demonstrating to me that you can program or hack ROM/disc images for your platform. If you choose the text transformation project, email me by NOON on Wednesday July 13 a "stub" program or text transformation "framework" - a Python program you wrote that accepts text (reading it from a file is fine) and transforms it in some way. This is not your complete project, just a demonstration that you can read in text and output it somehow changed.

6 (July 14) Deeper into Text

Discussion of “The GNU Manifesto.”

Platform experience: Apple //c and Commodore 64.

7 (July 21) Open Workshop

Bring work of yours to discuss.

8 (July 28) Open Workshop

Bring work of yours to discuss.