Communication Design: Creative Computing
Parsons The New School for Design
Fall 2014
PUCD 2035 D
Friday, 9:00am - 11:40am
Arnold Hall, 55 W 13th St., Room 402
Jonathan Dahan | dehanj@newschool.edu
Description
This course will introduce students to the building blocks of creative computing within the visual and media environment. Students will learn to create dynamic images, type and interfaces, that can translate into print, web and spatial forms. Through weekly problems, students will learn programming fundamentals that translate in virtually all programming platforms.
By the end of this class students should feel excitement (as opposed to dread) when encountering new programming languags, techniques, and technologies. They will know how to quickly find and participate in each community to help them learn. Students will have to learn how to feel comfortable working with the unfamiliar. In doing so, encounters with new technology can be seen as an opportunity to expand the breadth and depth of their craft, and as inspiration for new work.
Learning Outcomes
- Demonstrate knowledge of fundamental programming concepts
- Develop several visual & interactive projects
- Objectively present their design process and workflow
- Integrate a variety of media elements into their projects
- Problem solve with other students through reading other students’ code
- Demonstrate the ability to research and learn unfamiliar technical topics
Required Materials, Software, etc.
- A functioning and fully charged laptop running OSX or linux. Please bring this laptop to every class session.
- Student space on the School’s webserver.
- A text editor that supports syntax highlighting, such as atom or sublime text.
- A modern web browser, such as Mozilla Firefox or Google Chrome.
- Readings and viewings will be made available online.
Attendance
Per New School policy, 3 or more absences or excessive tardiness will result in a failing grade. If you need to miss class, please email me in advance.
Projects and Excercises
Each week there will be a small exercises to help reinforce the ideas introduced in class. In addition, there will be three more open ended assignments, that will take more time to complete. There will be one final personal project, that can be started anytime during the course. Grades are broken down as follows
20% attendance and participation, 30% exercises, 30% assignments, 20% final project
Topics
We will cover at least the following topics in depth:
- Networks
- Numbers
- The Terminal
- Hardware
- Interfaces
- APIs
- Operating Systems
An sample of interesting projects and artwork to act as inspiration for the assignments. The exercises will help ensure working knowledge to incorporate these elements in future work.
Depending on the character and interests of the class, we can cover additional topics such as security, embedded systems, functional programming, node-based programming, wireless communication, bitcoin and the blockchain, bittorrent.
Exercises
Possible exercises
- Watch Robert Hodgins' Keynote
- Contribute to a github repository
- contribute to a project with at least 15 stars on github?
- Add an element of interactivity to an existing website
- make bash script with at least 3
- programming metaphors
- use ifttt to make a new application
- Read the first 3 chapets of Code: The Hidden Language of Computer Hardware and Software
Course Outline
Below is a rough outline of the semester, subject to change. It will be updated throughout the semester. Feedback
Class 0x00
Assignment Create a program designed to be executed by a human
Motivation Language design, machine empathy, common elements
Inspiration Sol LeWitt
Excercise Sign up for github, file an issue for the class
For the first assignment we will have to write a program designed to be executed by a human. You can write this in any language, but the final output must be created only by handing a person a sheet of paper. We will review our experiences after 30 minutes, discussing what programming concepts we have discovered. The final version of this assignment will be due in 2 weeks.
Syllabus Overview (30 minutes) Program a friend explanation (15 minutes) Programming (45 minutes)
- My sample program
- Cool student programs Discussion of basic concepts (30 minutes)
- We identified variables, and loops.
- We talked about compilers, and operating systems. What are your questions about technology? (30 minutes)
- Here is the list of questions we came up with
Class 0x01
Languages and language design. Introduce javascript.
Exercise come up with a metaphor for a programming concept / program in a language you have never programmed before
Inspiration Show the same program in python, bash, piet, clojure, javascript, maybe with wikicode
Motivation get familiar with all the ways to express a concept
Class 0x02
motivation introduction to how operating systems work
inspiration kyle macdonald, r/glitchart
What is a file? We will create glitches
Class 0x03
motivation: quick prototypes, reuse of tools, composability, imperative programming
inspirations cat /dev/urandom > /dev/dsp, edit a file
The command line
30 minutes - tools and pipes 30 minutes - navigation and documentation
Show commandlinefu, stack overflow, manpages
What commands to teach?
Class 0x04
networks and communication
motivation be able to tap into the wealth of data out there
in this class, we do APIs :)
Class 0x05
Software as tools for reappropriation
Create a new piece of work only by combining existing data sources from the web
Motivation APIs Inspiration Girl talk, ART404
Class 0x06
Class 0x07
Class 0x08
Class 0x09
Class 0x0A
Class 0x0B
Class 0x0C
while(! self.sleeping()):
eat(turkey || tofurkey)