CSCI-UA.0002-004 & CSCI-UA.0002-009

Time and Place

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


Time and Place for CSCI-UA-0002-009
Room 60 Fifth Avenue, Room C10
Time Monday and Wedneday: 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 2:30PM–4:00PM
Thursday 10:30AM–12: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 tests are given in the same classroom where the class meets (60 Fifth Avenue, Room C10). The midterms are 1 hour and 15 minutes (just like the class) and the final is 1 hour and 50 minutes.

Exam Dates
Test Date
Midterm 1

CSCI-UA.0002-004: Thurs Feb 28

CSCI-UA.0002-009: Mon Mar 4

Midterm 2

CSCI-UA.0002-004: Tues Apr 16

CSCI-UA.0002-009: Wed Apr 17

Final Exam

CSCI-UA.0002-004: 8:00AM–9:50 on Thursday May 16, 2019

CSCI-UA.0002-009: 8:00AM–9:50 on Wednesday May 15, 2019


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 31 at 11:00 AM

(Date of Class 2)

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

  • Do Modules 1 and 2 and the corresponding quizzes 1 and 2 in NYUClasses. Note: Due to Add/Drop, I will extend the deadline for quizzes 1 and 2 to Thurs Feb 7 (class 4) at 11AM, but subsequent quiz deadlines will be strictly enforced.
  • Read the first 2 Chapters in the Gaddis book
  • Install Python on your home computer or laptop (preferred) unless you plan on only using the lab computers.
    • Follow the website's instructions for Windows or Apple operating systems. See the instructions here
    • Linux installation is also fairly straight-forward, but if you attempt this and have trouble, please feel free to email me.
    • Chromebook installation is possible, but has some limitations and I really don't recommend it. However, if you insist, first take a look at this. Even if you install Python3 successfully on a Chromebook, expect to have some difficulty with graphics programs in the middle of the semester. Rather than attempting to fix the installation, I suggest for the Turtle questions (relating to graphics), you work on the lab PCs in one of the recommended OSs.
  • Test Python to make sure it is working (you don't need to hand this in). In Idle, try the following statements:
    • 2+2
    • 3-1
    • print(3-1)
    • print('Hello World')

Wed Feb 5 at Midnight

(Date of Class 3)


Tues Feb 12 at 11AM

(Date of Class 5)

Boolean Logic

Tues Feb 12 at midnight

(Date of Class 5)

Print Statements and Data Types

Wed Feb 20 at 11AM

(Date of Class 7)


Wed Feb 20 at midnight

(Date of Class 7)

Decision Trees

  • Programming Assignment 3

Wed Feb 27 at 11AM

(Date of Class 9)


Wed Feb 27 at midnight

(Date of Class 9)


  • Programming Assignment 4

Prepare for Midterm on Tuesday October 9 (Class 10)

Wed Mar 13 at midnight

(Date of Class 13)

Graphics and Random Numbers

  • Programming Assignment 5

Thurs Mar 14 at 11AM

(Date of Class 14)


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

Mon Apr 1 at 11AM

(Date of Class 16)


Mon Apr 1 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.

  • Programming Assignment 6

Mon Apr 8 at midnight

(Date of Class 18)

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

  • Programming Assignment 7

Mon Apr 8 at 11AM

(Date of Class 18)

Exceptions and Input/Output

Mon Apr 15 at midnight

(Date of Class 20)

File Input/Output and Exceptions

  • Programming Assignment 8

Prepare for Midterm on November 14 (Class 21)

Mon Apr 22 at 11AM

(Date of Class 22)


Tues Apr 30 at midnight

(Date of Class 25)


  • Programming Assignment 9

Tues Apr 30 at 11 AM

(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):

Monday May 8 at 11 AM

(Date of Class 27)

Object Oriented Programming

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

Wed May 8 at midnight

(Date of Class 27)


  • Programming Assignment 10 (optional)

Prepare for Final Exam

Section 004: 8:00AM–9:50 on Thursday May 16, 2019

Section 009: 8:00AM–9:50 on Wednesday May 15, 2019


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-004 Materials CSCI-UA.0002-009 Materials
Class 1

CSCI‑UA.0002‑009: Mon Jan 28

CSCI-UA.0002-004: Tues Jan 29

Class 2

CSCI-UA.0002-009: Wed Jan 30

CSCI-UA.0002-004: Thurs Jan 31


Introductory Slides

Program for calculating your grade
Class 3(A)

CSCI-UA.0002-009: Mon Feb 4

CSCI-UA.0002-004: Wed Feb 5

Class 4(B)

CSCI-UA.0002-009: Wed Feb 6

CSCI-UA.0002-004: Thurs Feb 7

Lecture and Lab

Programming Basics

Class 5(A)

CSCI-UA.0002-009: Mon Feb 11

CSCI-UA.0002-004: Tues Feb 12

Class 6(B)

CSCI-UA.0002-009: Wed Feb 13

CSCI-UA.0002-004: Thurs Feb 14

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

CSCI-UA.0002-004: Tues Feb 19

CSCI-UA.0002-009: Wed Feb 20

Class 8(B)

CSCI-UA.0002-004: Thurs Feb 21

CSCI-UA.0002-009: Mon Feb 25

Lecture and Lab Loops
Class 7.5

Fri Feb 22


251 Mercer Street
Room 101

Special Session: Review Class for Late Entrants due to Add/Drop

The first 7 sessions of Python in 75 Minutes

This Lecture is Geared for Students who missed the First 3 to 7 Classes due to Add/Drop. This lecture covers Python basics for those who missed earlier lectures. It is important not to fall behind in this class as it can have a negative effect both on your understanding of the material and on your grade.

Class 9

CSCI-UA.0002-004: Tues Feb 26

CSCI-UA.0002-009: Wed Feb 27

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

CSCI-UA.0002-004: Thurs Feb 28

CSCI-UA.0002-009: Mon Mar 4

Exam Midterm 1
Class 11(A)

CSCI-UA.0002-004: Tues Mar 5

CSCI-UA.0002-009: Wed Mar 6

Class 12(B)

CSCI-UA.0002-004: Thurs Mar 7

CSCI-UA.0002-009: Mon Mar 11

Lecture and Lab Graphics, Randomness and Probability
Class 13

CSCI-UA.0002-004: Tues Mar 12

CSCI-UA.0002-009: Wed Mar 13

Review Session Post Midterm Review
Class 14(A)

CSCI-UA.0002-004: Thurs Mar 14

Lecture and Lab Sequences Part 1
Spring Break: Mon Mar 18–Sunday Mar 24
Class 14(A) (continued)

CSCI-UA.0002-009: Mon Mar 25

Class 15(B)

CSCI-UA.0002-004: Tues Mar 26

CSCI-UA.0002-009: Wed Mar 27

Lecture and Lab
Class 16(A)

CSCI-UA.0002-004: Thurs Mar 28

CSCI-UA.0002-009: Mon Apr 1

Class 17(B)

CSCI-UA.0002-004: Tues Apr 2

CSCI-UA.0002-009: Wed Apr 3

Lecture and Lab Sequences Part 2
Class 18(A)

CSCI-UA.0002-004: Thurs Apr 4

CSCI-UA.0002-009: Mon Apr 8

Class 19(B)

CSCI-UA.0002-004: Tues Apr 9

CSCI-UA.0002-009: Wed Apr 10

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

CSCI-UA.0002-004: Thurs Apr 11

CSCI-UA.0002-009: Mon Apr 15

Review Session Midterm 2 Review
Class 21

CSCI-UA.0002-004: Tues Apr 16

CSCI-UA.0002-009: Wed Apr 17

Exam Midterm 2
Class 22(A)

CSCI-UA.0002-004: Thurs Apr 18

CSCI-UA.0002-009: Mon Apr 22

Class 23(B)

CSCI-UA.0002-004: Tues Apr 23

CSCI-UA.0002-009: Wed Apr 24

Lecture and Lab Dictionaries
Class 24

CSCI-UA.0002-004: Thurs Apr 25

CSCI-UA.0002-009: Mon Apr 29

Review Session Post Midterm 2 Review
Class 25(A)

CSCI-UA.0002-004: Tues April 30

CSCI-UA.0002-009: Wed May 1

Class 26(B)

CSCI-UA.0002-004: Thurs May 2

CSCI-UA.0002-009: Mon May 6

Lecture and Lab Recursion
Class 27

CSCI-UA.0002-004: Tues May 7

CSCI-UA.0002-009: Wed May 8

Lecture and Lab Brief Introduction to Object Oriented Programming
Class 28

CSCI-UA.0002-004: Thurs May 9

CSCI-UA.0002-009: Mon May 13

Review Session Final Review
Final Exam

CSCI-UA.0002-004: Thurs May 16 8:00AM–9:50AM

CSCI-UA.0002-009: Wed May 15 8:00AM–9:50AM

Final Exam