WHAT: CSCI-UA.0101-007 Introduction to Computer Science
WHEN: Mondays and Wednesdays 11:00am - 12:15pm
WHERE: Warren Weaver Hall Room 101
WHO: Tim Mitchell, instructor
WRITE:tim mitchell cims nyu edu (replace spaces with place-appropriate characters)
SEE: Office hours are immediately after class:
Mondays and Wednesdays 12:15pm - 1:15pm (or by appointment)
Warren Weaver Hall, Room 429


ASSIGNMENTS/GRADES: All assignments and grades will be handled via NYU Classes, which is available from your NYU Home account. This means:
  • All assignments will be posted via NYU Classes
  • You will submit all assignments via NYU Classes
  • You will be able to check your grades via NYU Classes as the semester progresses.
FORUM: Open discussion on the forum is strongly encouraged for any questions/issues regarding:
  • General programming
  • Java and Processing programming
  • Discussions of lecture material
  • Algorithm considerations
  • Discussions of the programming assignments
  • But NOT for sharing solutions!
This should be the first resource you tap when you have a technical question.

We will use Piazza for the discussion forum. The class Piazza forum will also be on the NYU Classes page but you most likely find using the direct link here more convenient, so you can use tabbed browsing and resize the window as you desire.
MAILING LIST: I will send out class announcements via the email list. All enrolled students should already be automatically signed up for the mailing list. Please contact me if you are somehow not on the list.
TUTORS: CS101 tutors will be available at:
SOFTWARE RESOURCES: The following software will undoubtably be useful for this course:
  • Java SE Development Kit (Java SE SDK (JRE + SDK))
  • Java IDE: Eclipse is the Java IDE supported for this course, meaning that it is available in the labs and you may get help if you have Eclipse-related questions. However, you are free to choose another IDE if you'd like, such as NetBeans or JCreator, though if you run into problems with either, you may be on your own.
  • Processing for graphics programming


DESCRIPTION: Students will learn how to design algorithms to solve problems and how to translate these algorithms into working computer programs. Experience will be acquired through programming projects implemented in Java, a modern high-level programming language. This course is intended primarily as a first course for computer science majors and for students of other scientific disciplines.
TEXTBOOK: Introduction to Java Programming, Brief Version, 10th Edition - By Y. Daniel Liang
  • Note that the 10th edition is significantly different than previous versions.
  • There will be a copy on reserve in Bobst.
  • The comprehensive edition is NOT needed for this course, though it might be a useful reference if you plan to take CSCI.UA.0102 Data Structures.
CONCEPTS: This course covers the following topics:
  • Basic programming review: control flow, loops, methods
  • Basic data structures: arrays, multi-dimensional arrays, strings, objects
  • Object oriented programming: inheritance, polymorphism, abstract classes, interfaces
  • File input/output
  • Event-driven programming
  • Introductory graphics programming (via Processing)
  • Recursion
SEEM FAMILIAR? Students with a lot of programming experience should consider taking a placement exam to possibly enroll directly in CSCI.UA.0102 Data Structures.
AP CREDIT? If you have received a 4 or 5 score on the AP Computer Science Exam, you have already received credit for CSCI.UA.0101 and therefore cannot enroll in it. Instead, you should consider enrolling in CSCI.UA.0102 Data Structures. If you have questions, please contact the Director of Undergraduate Studies for Computer Science.


CONCEPTS: You should already have some familiarity with some high-level programming language, not necessarily Java, and be comfortable with the following concepts:
  • Variables and basic data types such as int, float, double
  • Basic arithmetic and Boolean operators and expressions
  • Assignment and comparison statements
  • Control flow: if/else statements, nested if/else statements
  • Loops: for and while loops, nested loops
  • Basic input and output
SOMEWHAT FAMILIAR? If there is a question of whether you have the prerequisite knowledge and experience or not, please consider:
  • Taking a placement exam to determine which course would be best for you.
There are absolutely no downsides for you to take the placement exam, other than the time spent to take it, which is a small price to pay to ensure that you are enrolled in the ideal course for you.
COMPLETELY UNFAMILIAR? If you do not have any previous programming experience, you will most likely be best served by first:
  • Taking CSCI-UA.0002 - Introduction to Computer Programming.

ACKNOWLEDGEMENTS: This course website was influenced by the CS101 course websites of fellow NYU CS faculty: Marsha Berger, Andrew Case, and Joanna Klukowska.