Syllabus

CSCI-UA.0380: Topics of General Computing Interest: Interactive Computing, Fall 2015
Section #01 – Monday & Wednesday, 12:30PM — 1:45PM, CIWW 312

Professor Craig Kapp
Office Hours: Tuesdays from 12:30pm to 3:00pm in WWH 805
E-mail: kapp [-at-] cs [-dot] nyu [-dot-] edu
Course Blog: http://cims.nyu.edu/~kapp/courses/cs0380fall2015

Tutoring

Our Interactive Computing tutor (Spencer) is available to meet with you by appointment or via e-mail. Please fill out the form on our tutoring page to get in touch with him.

Prerequisites

Students wishing to enroll in this special topics course must have successfully completed the following courses:

  • CSCI-UA.0002 – Introduction to Computer Programming
  • CSCI-UA.0004 – Introduction to Web Design and Computer Principles

Course Description

In this course you will learn how to develop multimedia applications for both the desktop and the web. The course focuses on general programming techniques with an emphasis on the production of interactive graphical environments. In addition, a number of advanced topics will be covered including image processing, video games, simulations, basic computer vision, augmented reality and creating simple mashups using popular web services such as Flickr and SMS message integration.

Topics

This semester we will explore ways in which we can develop graphical software that is designed to interact with the user using a variety of techniques. The following list of topics serves as a general overview of what we plan on covering in this course – note that this list can (and probably will) change as the semester progresses.

  • The “Processing” graphics framework
  • Algorithmically produced graphics
  • Preparing a graphical application for desktop and web deployment
  • Simple interactivity: interfacing with the keyboard and mouse
  • Simple physical interfaces (designing your own controllers)
  • Introduction to Object Oriented Programming (with a focus on graphics)
  • Working with music and sound
  • Basic video game logic
  • Working with libraries (Physics, Gestures, Audio Detection, and more)
  • Working with live video, including color and motion tracking, face tracking, QR codes, augmented reality and specialized vision sensors (Microsoft Kinect & Leap Motion)
  • Working with data sources
  • Projection mapping
  • Virtual reality (Oculus Rift)

Course Materials

Learning Processing: A beginner’s guide to Programming Images, Animation, and Interaction (2nd edition, to be released on May 29th, 2015)
Shiffman, Daniel

Grading

The primary focus of this course is to develop your programming skills and explore new and interesting ways in which we can develop software to interact with a wide variety of users. As such, the majority of your grade will be based on projects and hands-on programming assignments. You will also be responsible for a midterm exam (given in-class) as well as a final exam (given during finals week).

In addition, you will be producing a final project which will be developed during the second half of the class. You will be presenting this project to your classmates during the last week of class.

  • Weekly Homework Assignments (including a “midterm” project): 50%
  • Midterm Exam: 15%
  • Final Project – Development & Presentation: 20%
  • Final Exam: 15%

Grades will be determined using the following scale:

A 94-100
A- 90-94
B+ 87-90
B 84-87
B- 80-84
C+ 77-80
C 74-80
C- 70-74
D 65-70
F less than 65

Assignments

There will be roughly ten assignments in this course that will be assigned on a weekly basis. In general, assignments are due one week (7 days) after they are assigned at 11:55pm (just before midnight). For a full outline of assignment due dates please refer to the “Schedule” link to the left. Each assignment will be scored out of 20 points.

All assignments will be submitted via your digital portfolio site. We will discuss how you can set up this site on the first day of class.

It is important not to get behind in turning your assignments (this class is cumulative). Late submissions will be penalized by 10% off per day late, and assignments that are more than 7 days late can not be turned in for credit. That being said, sometimes there are unforeseen situations that may impede your progress, as a result you are being given 7 grace days for the entire semester. These grace days cover all late submissions regardless of personal, professional, or technical related delays (e.g. a job interview, computer hardware failure, etc.) and no further exceptions will be granted (so don't waste them simply by procrastinating). You don't need to do anything special to use these "grace" days - the course graders will keep track of these on your behalf and will apply them to your work as necessary.

All grading will be done via NYU’s official course management system (NYU Classes). You can check your grades at any time by logging into your NYU Home page (http://home.nyu.edu) and clicking through to the NYU Classes section established for our class. If you notice an irregularity (i.e. you mistakenly lost points for an item that you successfully completed) please let me know and I will be happy to sit down with you to review your work. All grade changes must be completed in person and cannot be done over e-mail.

Assignments that you turn in should be your own work. It is fine to talk to other students and to get assistance in how to do something, but you should not ask your fellow students to actually do the work for you. When you turn in an assignment, you are saying that you have done this work yourself. The definition of plagiarism is to present someone else’s work as though it were your own. Please read the Computer Science Department statement on academic integrity for more information.

During the second half of the course (after Midterm #1) you are allowed (and encouraged!) to work in teams of 2 or 3 students for your weekly homework assignments. Your final project will be team-based as well, so finding a good group early on in the semester might not be a bad idea!

Portfolio

During this class you will be maintaing a digital portfolio that will showcase your work and serve as a documentation repository for all of your projects. In the spirit of "openness" a link to your portfolio will be made available on the "Portfolio" page of our class website. I encourage you to check out the projects that your fellow students are working on and use their ideas as inspiration in your own work! However, if you wish to not be included in this directory please let me know and I will be happy to remove you from the page.

Software

The main software package that we will be working with this semester is the Processing programming framework. Processing is an open-source project, and anyone can get their own copy free of charge at http://www.processing.org

Saving your work in the lab

You will be able to save your work ITS labs under your NYU Home Account and/or on your own flash drives. Although you can write to the hard disks of the machines in the labs, you cannot be sure that you will have access to the same machine the next time you enter the lab and the drives in the lab are frequently erased. The best option is to upload your files online and download them as needed (we will go over this in class).

Home Computers

Many students will have access to home computers or computers at work. It is fine to do your assignments on whatever resources you have available, as long as your software is current. You are more than welcome to bring your computer to class and follow along, but please stay focused (i.e. browsing Facebook in class is frowned upon)

Feedback

I recognize that every student has a different level of background knowledge prior experience when it comes to technology. This course is designed as an introductory level class and topics will be presented assuming very little prior exposure to the topics. With that said, every student learns differently and I want to ensure that each of you is getting the maximum amount out of the course content as possible. Please do not hesitate to get in touch with me via e-mail or during office hours if you feel as though you are falling behind or you are not understanding a certain concept.