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.

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

  2. May 29, 2023 - Memorial Day (NYU Closed)

  3. May 31, 2023 - Legislative Day - NYU Meets on a Monday Schedule
    Imperative languages. names, binding, scope, lifetime, nesting, control structures.
    Readings: Scott, ch 3
     
  4. 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
      
  5. June 12, 2023
    Functional programming. Overview of the lambda calculus and Scheme.
    Readings: Scott, ch. 11 (except 11.4), Dybvig ch. 1,2 (optional)
     
  6. June 19, 2023 - Juneteenth (NYU Closed)

  7. 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
     
  8. 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)

  9. 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 
     
  10. July 17, 2023
    Overview of Prolog. Logical programming, goals, subgoals, backtracking, unification.
    Readings: Scott, ch. 11 (including 11.3 on CD)

  11. July 24, 2023
    Garbage collection, allocation/deallocation, reference counting, concurrent programming.
    Readings: Scott, ch. 7 

  12. 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).

  13. August 7, 2023
    Concurrent programming: threads, tasks, synchronization, communication. 
    Readings: Scott ch. 13

  14. August 14, 2023 - Final Exam