Syllabus

Expectations

This class will involve a lot of work on your part.  Each class will begin with a discussion of the assigned readings.  Following this, one of you will give a presentation on a open research question which was posed the previous week.  This presentation should be about 5-15 minutes long and be informative to everyone in the class, myself not excluded.  There will be a group Q & A after that where we discuss together any open questions.  I will the present in depth the material that was touched upon in the assignments and the reading, and hint at the challenges for the following week.  As the class progresses you will begin pitching and critiquing each others ideas and delving into any research related to your particular interests.  In this sense, you’ll be fully encouraged to look ahead on topics you know you want to use.  This class is as much developing your ideas for Little Computing as it is about developing your technical expertise.   Theory & Praxis as one.

Ground Rules

  1. No Laptops. I’ll give you fairly tough problems and readings each week, if you return the following week without questions I will be very surprised. If you have answers you should share them in class.  If you need to take notes, take them on paper.
  2. Grades, 20% participation & discussion, 20% solo presentation, 30% midterm, 30% final.

Office Hours

I will be in the Long Lab after class from 3:30 to 5:30.  Feel free to ask me as many questions as you want.  Also you should use the class Google Group as I’ll be following along closely there as well.

Class 1: History & Heuristics

How we got there- Alan Kay to Steve Jobs.

How to solve it!

A Morsel

A Challenge

A Question: What are some interesting flags to gcc?

Class 2: Languages, Tools & Open Societies

A brief history of some interesting programming languages

C, still evolving and still important

Philosophy of Tools

Philosophy of Sharing

Network Effects

A Question: Branching with git?

Class 3: On Objects, On Messaging, On Design

A Comparison

Objective-C? What the —-!

Patterns

Design Patterns

Elegance

A Question: Calling a message on an object with pure C?

Class 4: All Kinds of Interface

Foundations

Scaffolds

Readymades

It’s Alive!

Again, Networks…

A Question: forwardInvocation, respondsToSelector, multiple inheritance ?

Class 5: Time & Events (the Immediate Data of Consciousness)

Presentations

Events

Multitouch

Again, Networks…

A Question: How do you draw an image using only Quartz?

Class 6: Form, Color & Space

Events redux

Path-based drawing

Geometry

OpenGL

Class 7: Assessments

Class 8: Architecture

Program Structure

MVC again

Patterns

Controlling Complexity

Properties

What is Bonjour?

Class 9: Location, Location, Location

Class 10: Extended Networks

Class 11: Special Topics

Class 12: Studio

Class 13: Topics in Analysis

Class 14: Final Presentations