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

Time and Place

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


Time and Place for CSCI-UA-0002-011
Room 60 Fifth Avenue, Room 150
Time 11:00AM–12: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 1:30PM–3: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.

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 150). 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 Tuesday, October 9, 2018
Midterm 2 Wednesday, November 14, 2018
Final Exam

Section 007: 8:00AM -- 9:50 on Wednesday, December 19, 2018

Section 011: 10:00AM -- 11:50 on Monday, December 17, 2018


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 below, complete with links to the homework descriptions. Although descriptions of later homework is listed below, some details may change as the term progresses.

Date and Time Due Assignment

Monday September 10 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 Modules 1 and 2 to Class 4, 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')

Wednesday September 12 at midnight

(Date of Class 3)


Wednesday September 19 at 11AM

(Date of Class 5)

Boolean Logic

Wednesday September 19 at midnight

(Date of Class 5)

Print Statements and Data Types

Wednesday September 26 at 11AM

(Date of Class 7)


Wednesday September 26 at midnight

(Date of Class 7)

Decision Trees

Wed October 3 at 11AM

(Date of Class 9)


Wed October 3 at midnight

(Date of Class 9)


Prepare for Midterm on Tuesday October 9 (Class 10)

Wed October 17 at midnight

(Date of Class 13)

Graphics and Random Numbers

Mon October 22 at 11AM

(Date of Class 14)


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

Mon October 29 at 11AM

(Date of Class 16)


Mon October 29 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 November 5 at midnight

(Date of Class 18)

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

Mon November 5 at 11AM

(Date of Class 18)

Exceptions and Input/Output

Mon November 12 at midnight

(Date of Class 20)

File Input/Output and Exceptions

Prepare for Midterm on November 14 (Class 21)

Mon November 19 at 11AM

(Date of Class 22)


Mon December 3 at midnight

(Date of Class 25)


Mon December 3 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 December 10 at 11 AM

Object Oriented Programming

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

Monday December 10 at midnight

(Date of Class 27)


Prepare for Final Exam

Section 007: 8:00AM -- 9:50 on Wednesday, December 19, 2018

Section 011: 10:00AM -- 11:50 on Monday, December 17, 2018


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: Wednesday, September 5

Class 2: Monday, September 10


Introductory Slides

Program for calculating your grade

Class 3(A): Wednesday, September 12

Class 4(B): Monday, September 17

Lecture and Lab

Programming Basics

Contents of Idle Buffer Contents of Idle Buffer

Class 5(A): Wednesday, September 19

Class 6(B): Monday, September 24

Lecture and Lab Flow of Control Contents of Idle Buffer Contents of Idle Buffer

Class 7(A): Wednesday, September 26

Class 8(B): Monday, October 1

Lecture and Lab Loops

Class 7.5: Friday, September 28, 12:30PM to 1:45PM in WWH 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: Wednesday, October 3 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).
Holiday: Monday October 8
Class 10: Tuesday, October 9 Exam Midterm 1

Class 11(A): Wednesday, October 10

Class 12(B): Monday, October 15

Lecture and Lab Graphics, Randomness and Probability
Class 13: Wednesday, October 17 Review Session Post Midterm Review

Class 14(A): Monday, October 22

Class 15(B): Wednesday, October 24

Lecture and Lab Sequences Part 1

Class 16(A): Monday, October 29

Class 17(B): Wednesday, October 31

Lecture and Lab Sequences Part 2

Class 18(A): Monday, November 5

Class 19(B): Wednesday, November 7

Lecture and Lab File Input/Output and Exception Handling Idle Buffer Contents 11/5/2018
Class 20: Monday, November 12 Review Session Midterm 2 Review Idle buffer Contents 11/12/2018 Idle buffer Contents 11/12/2018
Class 21: Wednesday, November 14 Exam Midterm 2

Class 22(A): Monday, November 19

Class 23(B): Monday, November 26

Lecture and Lab Dictionaries Idle Buffer Contents November 19
Holiday: Wednesday November 21
Class 24: Wednesday, November 28 Review Session Post Midterm 2 Review

Class 25(A): Monday, December 3

Class 26(B): Wednesday, December 5

Lecture and Lab Recursion
Class 27: Monday, December 10 Lecture and Lab Brief Introduction to Object Oriented Programming
Class 28: Wednesday, December 12 Review Session Final Review
December 17 and December 19 Final Exam
  • Section 007: 8:00–9:50AM on Wednesday December 19, 2018
  • Section 011: 10:00–11:50AM on Monday December 17, 2018