CSCI-UA.0002-007 & CSCI-UA.0002-011

Time and Place

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


Time and Place for CSCI-UA-0002-011
Room Warren Weaver Hall, 251 Mercer Street, Room 201
Time Monday and Wednesday: 2:00PM–3:15PM


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

Monday October 7

Midterm 2

Wednesday November 13

Final Exam

Monday Dec 16


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

Sept 9 at 11:00 AM

(Date of Class 2)

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

Wed Sept 11 at Midnight

(Date of Class 3)


Wed Sept 18 at 4PM

(Date of Class 5)

Boolean Logic

Wed Sept 18 at midnight

(Date of Class 5)

Print Statements and Data Types

Wed Sept 25 at 4PM

(Date of Class 7)


Wed Sept 25 at midnight

(Date of Class 7)

Decision Trees

Wed Oct 2 at 4PM

(Date of Class 9)


Wed Oct 2 at midnight

(Date of Class 9)


Prepare for Midterm 1

Mon Oct 7

Wed Oct 16 at midnight

(Date of Class 13)

Graphics and Random Numbers

Mon Oct 21 at 4PM

(Date of Class 14)


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

Mon Oct 28 at 4PM

(Date of Class 16)


Mon Oct 28 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 Nov 4 at midnight

(Date of Class 18)

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

  • Programming Assignment 7

Mon Nov 4 at 4PM

(Date of Class 18)

Exceptions and Input/Output

Mon Nov 11 at midnight

(Date of Class 20)

File Input/Output and Exceptions

  • Programming Assignment 8

Prepare for Midterm 2

Wed Nov 13

Mon Nov 18 at 4PM

(Date of Class 22)


Mon Dec 2 at midnight

(Date of Class 25)


  • Programming Assignment 9

Mon Dec 2 at 4PM

(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 Dec 9 at 4PM

(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

Monday December 16


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-007 Materials CSCI-UA.0002-011 Materials
Class 1

Wed Sept 4

Class 2

Mon Sept 9


Introductory Slides

Program for calculating your grade
Class 3(A)

Wed Sept 11

Class 4(B)

Mon Sept 16

Lecture and Lab

Programming Basics

Class 5(A)

Wed Sept 18

Class 6(B)

Mon Sept 23

Lecture and Lab Flow of Control
Class 7(A)

Wed Sept 25

Class 8(B)

Mon Sept 30

Lecture and Lab Loops
Class 7.5>

Time to be Announced

Place to be Announced

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

Wed Oct 2

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

Mon Oct 7

Exam Midterm 1
Class 11(A)

Wed Oct 9

Lecture and Lab Graphics, Randomness and Probability
Holiday: Mon Oct 14

Class 12(B)

Tues Oct 15 (Legislative Day Tuesday with Monday Schedule)

Lecture and Lab Continuation of Graphics, Randomness and Probability
Class 13

Wed Oct 16

Review Session Post Midterm Review
Class 14(A)

Mon Oct 21

Class 15(B)

Wed Oct 23

Lecture and Lab Sequences Part 1
Class 16(A)

Mon Oct 28

Class 17(B)

Wed Oct 30

Lecture and Lab Sequences Part 2
Class 18(A)

Mon Nov 4

Class 19(B)

Wed Nov 6

Lecture and Lab File Input/Output and Exception Handling
  • alternative format files for phone numbers:
    • phone_list.txt
    • phone_list.tsv
    • phone_list.csv
Class 20

Mon Nov 11

Review Session Midterm 2 Review
  • sample midterm2
  • sample midterm2 python file (answers)
  • Last Semester's midterm2 Booklet 1
  • Last Semester's midterm2 Booklet 2
  • Last Semester's midterm2 python file (answers)
Class 21

Wed Nov 13

Exam Midterm 2
Class 22(A)

Mon Nov 18

Class 23(B)

Wed Nov 20

Lecture and Lab Dictionaries
  • &
Class 24

Mon Nov 25

Review Session Post Midterm 2 Review
Holiday: Wed Nov 27
Class 25(A)

Mon Dec 2

Class 26(B)

Wed Dec 4

Lecture and Lab Recursion
Class 27

Mon Dec 9

Lecture and Lab Brief Introduction to Object Oriented Programming
Class 28

Wed Dec 11

Review Session Final Review
  • practice final 1: 2 booklets in one pdf file
  • practice final 1 python file: answers and sample programs
  • files used in running the python code to get the answers or produced by the sample code: specimens.tsv, paragraph_from_wikipedia.txt character_dict.tsv
  • practice final 2: 2 booklets in one pdf file
  • practice final 2 python file: answers and sample programs
  • file used in running the python code to get the answers or produced by the sample code: animals.tsv
Final Exam

Monday December 16

Final Exam