Programming Languages
CSCI-GA.2110-001
Summer 2023
This outline is subject to change, but should give you some idea of what will be covered and when.
- May 22, 2023
Course overview. History, standards, syntax, semantics, grammars, parsing.
Readings: Scott, ch 1 - 2
See resources folder for language standards documents: C11, C++ 2017, ECMA-334, ECMA-262, and JLS10.
- May 29, 2023 - Memorial Day (NYU Closed)
- May 31, 2023 - Legislative Day - NYU Meets on a Monday Schedule
Imperative languages. names, binding, scope, lifetime, nesting, control structures.
Readings: Scott, ch 3
- June 5, 2023
Subprograms: functions and procedures. Parameter passing. Nested procedures. First-class and higher-order functions. Implementation issues.
Readings: Scott, ch 6, 8.1 - 8.3
- June 12, 2023
Functional programming. Overview of the lambda calculus and Scheme.
Readings: Scott, ch. 11 (except 11.4), Dybvig ch. 1,2 (optional)
- June 19, 2023 - Juneteenth (NYU Closed)
- June 26, 2023
Data types and representation. Typing: strong vs. weak, static vs. dynamic. Type declarations, type equivalence, type inference. Subtypes and derived types. Scalar and composite types (arrays, records, variant records). Pointers and references.
Readings: Scott, ch. 7
- July 3, 2023 (Class Meeting over Zoom)
Overview of ML. Pattern matching, type inference, data types, pattern matching, continuations.
Readings: Ullman, ch 1-4, 5 (optional)
- July 10, 2023 (Lecture & Midterm Exam)
Continuations and Exception Handling.
Generic programming and templates in C++, Java, and ML. Containers and iteration.
Readings: Scott ch. 6.2, 7.3, 9.4, Stroustrup ch. 13, 18 (optional), Scott 6.2.1, 6.2.2, 9.4
- July 17, 2023
Overview of Prolog. Logical programming, goals, subgoals, backtracking, unification.
Readings: Scott, ch. 11 (including 11.3 on CD)
- July 24, 2023
Garbage collection, allocation/deallocation, reference counting, concurrent programming.
Readings: Scott, ch. 7
- July 31, 2023
Object oriented programming: objects, classes, data and function members, constructors/destructors. OOP in C++ and Java, objects vs closures, classes vs datatypes, OO pitfalls.
Readings: Scott ch 10, Stroustrup ch. 8-9 (optional), Arnold ch. 13 (optional).
- August 7, 2023
Concurrent programming: threads, tasks, synchronization, communication.
Readings: Scott ch. 13
- August 14, 2023 - Final Exam