Introduction To Computational Media on the Web (ICM-W)
Shawn Van Every Shawn.Van.Every@nyu.edu
Office Hours: Mondays, Tuesdays and Wednesdays from 4PM to 5PM or by appointment
Room 447
Fall 2009
H79.2788
What can a global network of interconnected computers add to art, culture, humanity? Creating web based applications, rather than just being a user of them, will provide you a deeper understanding of the possibilities available through networking and computation. The course focuses on the fundamentals of programming (variables, conditionals, iteration, functions, and objects) and touches on some more advanced topics such as user interface, text parsing, databases, and communicating through and with the physical world. PHP (Hypertext Preprocessor) and JavaScript are the primary programming vehicles for the class. The course is designed for programming novices. In particular it is geared towards those with no programming or web development experience. Those whom already have web development experience should consider taking ICM instead as it will open up a different set of tools and capabilities. Weekly assignments are required throughout the semester and the end of the semester is spent developing and executing an idea for a web based application. This course fulfills the computational media foundation requirement and should not be taken together with ICM.
Important Resources:
Syllabus (this page): http://itp.nyu.edu/~sve204/icmw_fall2009/syllabus.html
Homework Wiki: http://itp.nyu.edu/varwiki/ClassWork/Homework-Van-Every-ICM-F09
Listserv: http://lists.nyu.edu/read/all_forums/subscribe?name=itp-icm-w
Books:
There are probably a thousand books that cover some aspect of this course: JavaScript, PHP, programming concepts, HTML, CSS and so on. For this course, I do not have a recommendation on which might be suitable for you. I will not be assigning any particular assignments nor will I be going according to any one text. Having said that, a book can be a very valuable tool and very worthwhile. Books from O'Reilly and the "Head First" series generally come recommended.
Before purchasing, I would try the following: Browse the available books at your favorite bookseller, identifying potential winners. After making a short list, open up to a random section of the book (half way through or more) and start reading. If the text is comprehensible, looks useful and feels right, that is probably the book for you. I would also make sure I looked at customer reviews online and so forth before buying.
Administrative:
Office Hours:
Mondays, Tuesdays and Wednesdays from 4PM to 5PM or by appointment
Signup: https://www.itp.nyu.edu/~sve204/cgi-bin/pwiki/wiki.pl?OfficeHours
Additionally, two of the residents, Kacie Kinzer and Corey Menscher have office hours available that you should take advantage of.
Kacie's Office Hours
Corey's Office Hours
Grading:
20% Assignments
20% Class Participation
30% Final Project
15% Paper
15% Midterm
(75% or less is a failing grade. See Pass/Fail for more info.
Attendance:
Mandatory, unexcused absences will effect your final grade. If you are going to be absent, please let me know ahead of time if you can.
Tardiness:
Excessive lateness will effect your grade. Don't be late.
Laptops:
Laptop use is prohibited while other students are presenting or during discussion. While I am lecturing you may use them for note taking or class related work. In other words, respect your fellow students and don't check your email.
Weekly Rundown:
Week 1 - September 8
Introductions, Syllabus, Programming in English and Intro to HTML
Notes
Assignment:
Signup for the mailing list
Create a series of web pages using HTML and CSS that describe/detail/explain/illustrate a portion of your summer.
(Be sure to upload your assignment and post it to the wiki)
Reading:
As We May Think, Vannevar Bush
Week 2 - September 15
Intro to JavaScript
Basic Constructs: Loops, Conditionals, Variables and Basic Functions
HTML Forms
Notes (up through "while loops")
Additional Loop Examples (don't forget to view source): Example 1, Example 2, Example 3, Example 4
Assignment:
Review the notes up to "while loops" and look over the new loop examples posted above.
Modify one of the loop examples to include different content inside the <div> that is being written out. You will have to pay attention to "escaping the quotes", string concatenation and how the loop is executed.
I would like you to work with a partner on this. I have assigned partners on the homework wiki
Reading:
Read Handout: The Graphical Revolution, Chapter 25 of CODE The Hidden Language of Computer Hardware and Software
Week 3 - September 22
Modularity: Functions and Objects
Notes
Jazz up your website from week 1 homework with JavaScript interaction. Make it all function on one page.
Build something else using JavaScript and HTML. Try out modifying the elements on the page using various style attributes with changes triggered by form elements.
Reading:
Read Handout: Pattern on the Stone, W. Daniel Hillis: Chapter 9, Beyond Engineering
Week 4 - September 29
Many of the same: Arrays and Iteration
Notes
Assignment:
Create an Object that moves on the screen in some manner (you will probably need setInterval). Then using an Array, create multiples of that object.
Extra Credit: Try creating a Tic-Tac-Toe game
Week 5 - October 6
Intro to PHP
Strings and Networking
Notes
Assignment:
Using PHP and HTML/JavaScript, create a guest book for your site. Take it to the next step, allow users to leave comments for an individual piece of content (image or text or the like).
Using PHP and HTML/JavaScript, create a page that pulls data from another source (RSS/XML/HTML) on the web and visualize that information in some manner.
Week 6 - October 13
Hooking up with Devices: Serial
Embedding and Controlling Media (Audio/Video)
Assignment:
(Build something in JavaScript that is controlled by or controls a physical device (taken loosely but other than the mouse or keyboard) OR Build a Video DJ System in JavaScript and/or PHP
Come up with a mid-term idea. I am looking for concept, background and some thoughts about how you are going to implement it. We will be going over the ideas next class.
Week 7 - October 20
Review and Midterm Workshop
Canvas Test
Example Site (with separate files)
Week 8 - October 27
Show Midterms
Assignment:
Paper: Write a short 2 to 3 page story about a day in your life 10 years in the future.
Some suggestions: Citizen journalists swarm you after finding out about your new dream control software; Cyborg has become the fashion and you need some body work before you go to a party; Your video databank has been corrupted and you have a deadline in the morning.
Week 9 - November 3
Web Services, XML, AJAX
Notes
Example from class
AJAXify an existing project (midterm, comment form, saving state)
Try out a webservice of your choosing for a purpose of your choosing
Week 10 - November 10
MySQL
Notes
Assignment:
Prepare your final project proposal (in the form of a website)
It should include the following:
Project name or title
Short description
Materials: References such as other software, code, video, websites and so on.
Development plan: Pseudo code, diagram or other documents that you can start with
Week 11 - November 17
Final Project Proposals
Week 12 - November 24
Do it again, Intro to Processing and Processing.js
Additional Topics: File Uploads, Tagging/Rating, Cron
Notes
Week 13 - December 1
Final Project Workshop
Additional Topics: Mobile, Web based Operating Systems
Week 14 - December 8
Let's See it! Show final projects