INFO 1100
Intro to Media Programming

Instructor: Phoebe Sengers
Location: TBD
Time: M, W 10:10-11:25

Online syllabus: http://www.cs.cornell.edu/people/sengers/Teaching/INFO1100/index.php

Topic

In this course, you will learn how to program a computer by manipulating media: generating images, producing animations, manipulating text, and making media that respond interactively to user input. We will use Processing, an artist-designed programming language designed for visual and interactive applications, as a basis for creating and developing software 'sketches' that allow you to express yourself visually. In the process, you will learn basic programming skills, including understanding and controlling how data is represented in computers (data types and structures), telling the computer how to make decisions on the fly (conditionals) and how and when to repeat instructions (loops), structuring and organizing your computer code (functions and objects), and techniques for debugging your code.

This course is designed particularly for students with background in arts, humanities, and social sciences who are interested in better understanding how computers work and in learning to create their own digital media, though students of all backgrounds are welcome. The course assumes basic high school math and no technical background.

Learning objectives

Upon completion of this course, students will be able to:

  • Program in an object-oriented paradigm using data structures, functions, conditionals, and loops
  • Manipulate and generate media in image and text formats, in memory, in files and over networks
  • Generate time-based and interactive media
  • Imagine, design, and debug novel, creative programs
  • Use APIs and libraries as resources in developing programs

Prerequisites

This course is designed for students with no technical background; students who have already completed CS 1110 or have similar programming background may take the course by permission of the instructor only.

For further information

If you have questions, please contact the instructor, Prof. Phoebe Sengers, at sengers @ cs.cornell.edu.

You can download the full syllabus with all information from this website in print-friendly format.

Course Philosophy

You do not have to be a geek hiding out in a basement to control computers and create cool, compelling digital applications. This course is designed to showcase how fun and creative programming can be, and to make the process of programming accessible to everyone. We will present programming in multiple ways to be relevant and exciting for people with a variety of perspectives, skills, and backgrounds. Teaching staff will work with you one-on-one to help tailor the course content to your needs and interests. We appreciate your willingness to help us by raising issues that may stand in the way of your success in this course.

Course design

An important aspect of programming is practice. Just like learning to draw or riding a bicycle, you can't learn to program just by reading or listening to someone lecture. Our classes are designed as interactive laboratories which interleave mini-lectures with hands-on exercises, personally guided by the teaching staff. You are requested, if you have access to one, to bring a laptop to class. However, because all exercises will be done in pairs, you do not need to have a laptop to participate. Regular attendance is expected.

Textbook

The course uses the following textbook:

Daniel Shiffman. Learning Processing: A Beginner’s Guide to Programming Images, Animation, and Interaction. Morgan Kaufmann, 2008.

You will also likely find the processing.org website a useful reference.

If you would like to get a different angle on Processing, another great textbook is the following:

Casey Reas and Ben Fry. Processing: A Programming Handbook for Visual Designers and Artists. MIT Press, 2007.

This book will be available on reserve at the library.

Assignments

The assignments in this course are designed to help you develop and assess programming skills. Your work for the class will consist of the following components: readings from the course textbook and in-class handouts; near-weekly homeworks that let you practice and develop your programming skills; and a mid-term and final exam. Of all these assignments, the homeworks are most critical because they are where you will really be learning the course material.

Homework assignments are posted to, and can be submitted at, our Course Management System. If you do not have an account for this class, please contact the professor to be added.

Grading formula

  • Homeworks: 50% (lowest completed homework dropped (grade D or higher))
  • Midterm: 25%
  • Final: 25%
Grading is not just a matter of numbers, but also of judgment. The instructor reserves the right to adjust grades by up to half a letter grade based on knowledge of your performance not summed up in this tidy formula.

Due dates

Homeworks are generally due on Sundays at 11:00pm, via submission to our Course Management System. Late assignments accrue a half-letter-grade penalty for every 24 hours they are late, starting directly after the deadline (i.e. submitting at midnight on the due date would make a one-day penalty). All students may submit up to 2 homeworks in the semester up to 2 days late without a penalty - please save these for emergencies such as sickness, as additional extension requests will only be granted in extraordinary circumstances.

Regrade requests

If you believe that there may have been an error in grading your assignment, you may request a regrade in the 7 days after an assignment has been graded by contacting the professor in person or by email, explaining the nature of the mistake. The professor reserves the right to lower the grade as well as to raise it.

Academic Integrity

Academic integrity is taken seriously in this course. Please be aware of the specific requirements of academic integrity at Cornell.

You may be wondering what 'academic integrity' means in the context of programming. In this course, you may consult with other students for conceptual and debugging help while working on your code, but unless otherwise specified on the assignment the final code you submit should be written, tested, and documented by you. This means that, with the exception of code developed in in-class exercises, if 2 students submit code that is substantially the same we will consider this a likely academic violation. All assignments will be automatically scanned for similarity.

It is a usual practice for real-world programmers to find and adapt publically available code written by others in their own projects, and you may also do this in this class. If you use 'found code' from on-line sources you must bring that code up to the standards expected in this course. You must also identify which code is 'found' and document its source with a comment in your code, just as you would for an academic citation in a written paper. Unless otherwise specified for a particular assignment, found code may not take up more than 10% of the code that you submit (counting by correctly formatted lines).