Programming Languages

CSCI-GA.2110-003

NYU, Graduate Division, Computer Science Course - Fall 2012

Information

Class MeetingsWed 7:10-9pm in CIWW 102
RecitationsThu 8:10-9pm in CIWW 102
First LectureSep 5, 2012
Last LectureDec 6, 2012
Midterm ExamOct 17, 2012, 7:10-9pm in CIWW 102
Final ExamDec 19, 2012, 7:10-9pm in CIWW 102
InstructorThomas Wies, office hours: Thu 3:00-4:00pm in CIWW 407, or by appointment
Teaching AssistantSahil Vora, office hours: Thu 7:00-8:00pm in CIWW 412

News

  • 10/30/12 - Due to the closing of NYU, the class on Wed 10/31/12 and the recitations on Thu 11/01/12 have been cancelled.

Course Description

Design and use of mainstream programming languages: naming, scoping, type models, control structures, procedural abstractions, modularization. Implementation issues and runtime organization. We will study languages such as C, C++, Java, Scala, Scheme, and ML. The course work includes extensive programming exercises in various languages.

Prerequisites

Undergraduate courses in data structures and algorithms or equivalent, as well as familiarity and programming experience in a high-level language like C, C++, Java, or a similar language.

Syllabus

  • Syntax
  • Names, Scopes, and Bindings
  • Control Flow
  • Subprograms and Control Abstraction
  • Functional Programming
  • Types
  • Object-Oriented Programming
  • Generic Programming
  • Exceptions
  • Concurrency

Reading Materials

Required Reading

Recommended Reading

Scheme Resources

Standard ML Resources

Scala Resources

Syllabus

Week Date Topics Materials
1 09/05 Programming Languages Introduction; Syntax Slides; Readings: PLP, ch. 1-2
09/06 No recitations
2 09/12 Names, Bindings, Scopes Slides; Readings: PLP, ch. 3.1-3.4 except 3.3.4 and 3.3.5
09/13 Recitations
3 09/19 Basic Control Flow Mechanisms Slides; Readings: PLP, ch. 6.1-6.5
09/20 Recitations
4 09/26 Subprograms and Control Abstraction Slides; Readings: PLP, ch. 3.6, 6.6, and 8.1-8.3
09/27 Recitations
5 10/03 Functional Programming Slides; Lambda calculus; Scheme code
Readings: PLP, ch. 10 including 10.6.1 on the CD
10/04 Recitations
6 10/10 Types Slides; Readings: PLP, ch. 7
10/11 Recitations
7 10/17 Midterm exam
10/18 No recitations
8 10/24 ML Slides; Code; Readings: PLP, ch. 10;
Optional: Programming in Standard ML; ML for the Working Programmer
10/25 Recitations
9 10/30 Class cancelled (rescheduled to Thu, 12/06)
11/01 Recitations cancelled
10 11/07 Modules and Program Structure Slides; Stack.sml; PriorityQueue.sml;
Readings: PLP, ch. 3.3.4, 3.3.5, 3.8
11/08 Recitations
11 11/14 No class (rescheduled to Thu, 11/29)
11/15 Recitations
12 11/21 Object-Oriented Programming Slides; Readings: PLP, ch. 9, 3.6.3
11/22 No recitations (Thanksgiving)
13 11/28 Scala Slides
11/29 7:10-8pm: Recitations (in CIWW 101)
8:10-9pm: Class (in CIWW 102)
Slides; Readings: PLP, ch. 8.5
14 12/05 Generic Programming Slides; Readings: PLP, ch. 8.4
12/06 7:10-8pm: Recitations (in CIWW 101)
8:10-9pm: Class (in CIWW 102)
15 12/12 No class (Monday schedule)
11/13 Recitations

Homework

For submission of solutions, please follow the instructions on the assignment sheets. Sample solutions to homework assignments will be available after the submission deadline has passed.

Grading

Weekly Assignments (30%), midterm exam (30%), final exam (40%).

Academic Integrity

Please review the departmental academic integrity policy. In this course, you may discuss homework problems and assignments with other students, but the work you turn in must be your own. Do not copy another student's work. Also, you should consult the instructor before using materials or code other than that provided in class. Copying code or other work without giving appropriate acknowledgment is a serious offense with consequences ranging from no credit to potential expulsion.