CSCI-UA.0002-003 & CSCI-UA.0002-008

Time and Place

Time and Place for CSCI-UA-0002-003
Room 60 Fifth Avenue, Room C10
Time Tuesday and Thursday: 8:00AM–9:15AM


Time and Place for CSCI-UA-0002-008
Room 60 Fifth Avenue, Room C10
Time Monday and Wednesday: 8:00AM–9:15AM


Instructor Contact Information and Office Hours

Instructor Contact Info Email: meyers at cs dot nyu dot edu
Telephone: 212-998-3482
Office: 60 Fifth Avenue, Room 301
Instructor Office Hours Monday 10:30AM–12:00PM
Thursday 2:30PM–4:00PM
Or by appointment


Opportunities for Being Tutored

Description: Prerequisites, Curriculum and Textbooks.

A gentle introduction to the fundamentals of computer programming, which is the foundation of computer science. Students design, write, and debug computer programs. No knowledge of programming is assumed.

Prerequisites: Three years of high school mathematics or equivalent. No prior computing experience is assumed. Students with any programming experience should consult with the department before registering. Students who have taken or are taking Introduction to Computer Science (CSCI-UA 101) will not receive credit for this course. Does not count toward the computer science major; serves as the prerequisite for students with no previous programming experience who want to continue into CSCI-UA 101 and pursue the major.

Common Curriculum: All sections of this class share a common syllabus, including course books, tutoring services, software, etc. See the Common Syllabus Website for information about the textbook, syllabus and other information. There will eventually be additional information there, e.g., a schedule of the tutoring available at Kimmel computer lab. All sections of this class share a common syllabus, including course books, tutoring services, software, etc.

My Classes:. While I am guided by the common curriculum, I will still teach the class in a way that reflects my own teaching style and experience. My background includes the arts, literature, linguistics and natural language processing. So you can expect this class to include aspects of these areas. I last taught this class last semester and my lectures and homework for that class can be found here. I will use a lot of this same material for this class (although there will be some changes). So looking at them should provide you with an idea of what this class will be like.

Alternative Textbook Information: If you would like the option of using the 2nd edition of the textbook, rather than the 3rd or 4th edition, click here for guidelines.The difference between the 3rd and 4rth edition is not important at the present time.

This website will be updated many times. I expect that it will contain most of the lecture slides for the first few classes before the semester begins. It will then be continuously updated throughout the semester.

If you are on the waiting list: Learning to program involves sequential material. It is very important that you keep up with the material during the course of the semester and missing the first few classes of the semester can be detrimental to your understanding of the material. I therefore recommend that nobody joins the class after the 2nd class of the semester. If you start the class late, I recommend catching up on the lectures, modules, etc. before the next class. All class material should be avaiable to you. Check the schedule below and you should find the appropriate in-class slides, for example.

If you are near the front of the waiting list and can fit in my classroom without violating the fire code: I suggest that you attend the classes until you know whether or not you are going to be added. If you are in this situation, please let me know and I will give you access to the course materials on NYUClasses.


Tests: Two Midterms and a Final

Please make a note of the test times and plan accordingly. In particular, please do not purchase plane tickets that require you to leave New York before the final at the end of the term. All midterms are given in the same classroom where the class meets (60 Fifth Avenue, Room C150 or 251 Mercer Street, Room 201). The midterms are 1 hour and 15 minutes (just like the class). The final exam is 1 hour and 50 minutes and is usually (but not always) scheduled in the same classroom as the class.

Exam Dates
Test Date
Midterm 1

Thursday Feb 27 (003) or Monday Mar 2 (008)

Midterm 2

Tuesday Apr 14 (003) or Wednesday Apr 15 (008)

Final Exam

TBA: Some time between May 13 and May 19


Homework: There are 3 types of homework

  1. Self-Study Modules and Quizzes: These are elearning modules that are shared across sections of this class including videos, interactive components and quizzes. This page provides more details. The quizzes are available through your NYUClasses account (beginning a few days before the first day of class).In aggregate, the quizzes account for 5% of the final grade. Note about Turtle Graphics: The graphics section of the modules (the turtle package) will not be covered in the class lectures or the homework assignments until about 1 month and a half into the semester. Please feel free to experiment with turtles and I will be happy to answer any turtle questions.
  2. Reading Assignments: These are mostly assignments from the Gaddis book, although I also will assign some other reading material as well.
  3. Programming/Writing Assignments: These assignments, highlighted in yellow, mainly consist of writing computer programs, although I may also ask you to write pseudo-code. I regard these as the most important type of homework because I believe that practice doing programming assignments is crucial to understanding the material. In aggregate, programming assignments account for 20% of the final grade. However, they also are essential for preparing for the tests. Please adhere to the attached guidelines for all programming assignments.


Homework Schedule, Including Descriptions and Due Dates.

Generally speaking, all reading assignments and modules are due before class (their purpose is to get you ready for class) and programming assignments are due at the end of the day of a class (this gives you the opportunity to ask questions about the assignment on the day that it is due). Note that quiz deadlines are hard deadlines -- after a deadline, you no-longer have access to the quiz (due to complications of the add/drop period, there is some additional leeway for the first 2 quizzes, but the other 9 quizzes have strict deadlines). Programming assignment deadlines are soft -- it helps your understanding of the class if you do these on time, but doing them 5 minutes or 30 minutes or 3 hours after the deadline (or even a day late) does not matter at all. Homework for the first few week of classes is listed early in the semester, complete with links to the homework descriptions. Descriptions of later homework will be listed before they are officially added. Some details may change as the term progresses. While the lateness policy for programming assignments is fairly forgiving during the semester, homework assignments submitted after May 15 may not be graded at all.

Date and Time Due Assignment

Jan 30 at 11:00 AM

(Date of Class 2)

Basics: variables, statements, debugging, operators, ...

Thurs Feb 4 at Midnight

(Date of Class 3)


Tues Feb 11 at 11 AM

(Date of Class 5)

Boolean Logic

Tues Feb 11 at midnight

(Date of Class 5)

Print Statements and Data Types

Wed Feb 19 at 11AM

(Date of Class 7)


Wed Feb 19 at midnight

(Date of Class 7)

Decision Trees

Prepare for Midterm 1

Thursday Feb 27 (003) or Monday Mar 2 (008)

Wed Mar 4 at 11AM

(Date of Class 11)


Wed Mar 4 at midnight

(Date of Class 11)


Wed Mar 11 at midnight

(Date of Class 13)

Graphics and Random Numbers

Mon Mar 23 at 11AM

(Date of Class 14)


  • Module 7 and Quiz 7
  • Chapters 7 and 8 (we are reading out of order)

Mon Mar 30 at 11AM

(Date of Class 16)


Mon Mar 30 at midnight

(Date of Class 16)

Difficult Assignment: Solving a problem by comparing consecutive items in a list.

Specifically, converting words representing numbers to integers.

Mon Apr 6 at midnight

(Date of Class 18)

More List Problems: Sorting, Random Elements, Implementing a Game of Chance

Mon Apr 6 at 11AM

(Date of Class 18)

Exceptions and Input/Output

Mon Apr 13 at midnight

(Date of Class 20)

File Input/Output and Exceptions

  • Programming Assignment 8

Prepare for Midterm 2

Tuesday Apr 14 (003) or Wednesday Apr 15 (008)

Mon Apr 20 at 11AM

(Date of Class 22)


Wed Apr 29 at midnight

(Date of Class 25)


  • Programming Assignment 9

Wed Apr 29 at 11AM

(Date of Class 25)

(reading only)


  • Chapter 12 in Gaddis book (normal textbook)
  • Read Chapter 8 in Common Lisp: A Gentle Introduction to Symbolic Computation by David S. Touretzky. The pdf can be found here.
  • Read the stories about the dragon, but don't read about the lisp code (sections 8.3, 8.5 and 8.7) Instead look at the following python code corresponding to sections 8.3, 8.5 an 8.7 (and read the comments):

Wed May 6 at 11AM

(Date of Class 27)

Object Oriented Programming

  • Module 11 and Quiz 11
  • Chapter 10.1 and 10.2 in the Gaddis book

Wed Dec 9 at midnight

(Date of Class 27)


  • Programming Assignment 10 (optional)

Prepare for Final Exam

TBA: (between May 13 and May 19)


Class Schedule, Lecture Slides and other Materials from Class

This table will be continuously updated during the semester. Documents will be updated; errors will be corrected and additional material will be added. The schedule contains documents relevant to the first few classes: pdfs of slides, sample programs, etc. I have included descriptions of future material based on last semester's curriculum. While versions of these materials are currently available on last semester's website, they are all subject to change until I add the (new versions of the) documents here. I will also add some materials created during the classes themselves (traces of programs we run, additional sample programs created in class, etc.) I also may correct errors in the current documents over the course of the semester.

Proprietary material will be distributed using links to NYUClasses and will require an NYUClasses login to access. However, I will assume that most materials that I am distributing should be considered as open source for any non-commercial purpose: I will assume a Creative Commons NonCommercial License for all my personal materials unless we reach an agreement otherwise.

Class Number & Part A or B & Class Dates Class Type Slides Code, Examples, Etc CSCI-UA.0002-003 Materials CSCI-UA.0002-008 Materials
Class 1

Mon Jan 27 and Tues Jan 28

Class 2

Wed Jan 29 and Thurs Jan 30


Introductory Slides

Program for calculating your grade
Class 3(A)

Mon Feb 3 and Tues Feb 4

Class 4(B)

Wed Feb 5 and Thurs Feb 6

Lecture and Lab

Programming Basics

Class 5(A)

Mon Feb 10 and Tues Feb 11

Class 6(B)

Wed Feb 12 and Thurs Feb 13

Lecture and Lab Flow of Control
Holiday: Mon Feb 17
Class 7(A)

Tues Feb 18 and Wed Feb 19

Class 8(B)

Mon Feb 24

Lecture and Lab Loops
Class 9

Tues Feb 25 and Wed Feb 26

Review Session Midterm Review
  • sample midterm
    • Longer than actual midterm:
      • more questions
      • larger number of complex questions
  • sample midterm py file:
    • code to run for part 1
    • sample answers for part 2
  • Link to last term's midterm part1, last term's midterm part 2 and answers.
    • Same difficulty level as actual midterm
    • (Somewhat) Different format than current test.
    • More previous midterm1s available from previous term websites. See links to previous classes on my homepage and find instances the part of the schedule where midterm1 is reviewed (after the midterm is given).
Class 10

Thurs Feb 27 and Mon Mar 2

Exam Midterm 1
Class 11(A)

Tues Mar 3 and Wed Mar 4

Class 12(B)

Thurs Mar 5 and Mon Mar 9

Lecture and Lab Graphics, Randomness and Probability
Class 13

Tues Mar 10 and Wed Mar 11

Review Session Post Midterm Review -->
Class 14(A)

Thurs Mar 12 and Mon Mar 23

See Description Below
Spring Break: March 16 to March 22
Class 14(A)

Thurs Mar 12 and Mon Mar 23

Class 15(B)

Tues Mar 24 and Wed Mar 25

Lecture and Lab Sequences Part 1
Class 16(A)

Thurs Mar 26 and Mon Mar 30

Class 17(B)

Tues Mar 31 and Wed Apr 1

Lecture and Lab Sequences Part 2
Class 18(A)

Thurs Apr 2 and Mon Apr 6

Class 19(B)

Tues Apr 7 and Wed Apr 8

Lecture and Lab File Input/Output and Exception Handling
Class 20

Thurs Apr 9 and Mon Apr 13

Review Session Midterm 2 Review
Class 21

Tues Apr 14 and Wed Apr 15

Exam Midterm 2
Class 22(A)

Thurs Apr 16 and Mon Apr 20

Class 23(B)

Tues Apr 21 and Wed Apr 22

Lecture and Lab Dictionaries
  • &
Class 24

Thurs Apr 23 and Mon Apr 27

Review Session Post Midterm 2 Review --> Midterms
  • Version 1 (011): booklet1; booklet2; Answer Key (Code)
  • Version 2 (007): booklet1; booklet2; Answer Key (Code)
Class 25(A)

Tues Apr 28 and Wed Apr 29

Class 26(B)

Thurs Apr 30 and Mon May 4

Lecture and Lab Recursion
  • (This is a sample turtle program that comes with the Turtle Graphics Python Library
Class 27

Tues Apr 5 and Wed May 6

Lecture and Lab Brief Introduction to Object Oriented Programming
Class 28

Thurs May 7 and Mon May 11

Review Session Final Review
Final Exam

Date and Time To be Announced (between May 13 and May 19)

Final Exam