Programming Languages

CSCI-GA.2110-001
Summer 2011

Course Outline

This outline is subject to change, but should give you some idea of what will be covered and when.

  1. Programming languages overview. History, standards, syntax, semantics, grammars, parsing.

    Readings: Scott, ch 1 - 2
    Lecture Slides
    C++ standard [ISO/IEC 14882]
    C++0x proposed language standard [ISO/IEC JTC 1/SCC22/WG21 N2800]

  2. Imperative languages. names, binding, scope, lifetime, nesting, control structures.

    Readings: Scott, ch 3
    Lecture Slides
    Homework 1
      

  3. Subprograms: functions and procedures. Parameter passing. Nested procedures. First-class and higher-order functions. Implementation issues.

    Readings: Scott, ch 6, 8.1 - 8.3

    Lecture Slides

  4. Functional programming. Overview of the lambda calculus and Scheme.

    Readings: Scott, ch. 10 (including 10.6.1 on the CD),
    Dybvig ch. 1,2 (optional)

    A short introduction to the Lambda Calculus (from the University of Birmingham)

    Lambda-calculus lecture notes (from Brown University)
    Scheme standard
    Homework 2
    Sample Scheme code
      
  5. 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
    Lecture Slides

  6.  
  7. Midterm exam in class (June 28).
     
  8. Overview of ML. Pattern matching, type inference, data types, pattern matching.

    Readings: Ullman, ch 1-4, 5 (optional)
    Lecture Slides
    ML tutorials
    ML '97 Standard (purchase required)
    Standard ML of New Jersey (required for Homework 3) plus documentation.
    Homework 3
    Homework 3 cheat sheet.

  9. Overview of Prolog. Logical programming, goals, subgoals, backtracking, unification.

    Readings: Scott, ch. 11 (including 11.3 on CD)
    Introduction to Prolog.
    Lecture Slides
    SWI Prolog (for the upcoming homework)

  10. Program structure: Modules, packages, and interfaces. Abstract types and information hiding. Exception handling.

    Readings: Scott ch 3.3.4-3.3.5, 3.7 (review).
    Lecture Slides
    Homework 4

  11. Generic programming and templates in C++, Java, and ML. Containers and iteration.

    Readings: Scott ch. 8.4, Stroustrup ch. 13, 18 (optional).
    Standard Template Library (STL) Programmer's Guide
    Lecture Slides

  12. Garbage collection, allocation/deallocation, reference counting. Review of course topics.

    Readings: Scott ch 7.7.3
    Lecture Slides


  13. Final exam in class (Aug 9).

Time permitting: Continuations. Concurrent programming: threads, tasks, synchronization, communication. Concurrency in Ada and Java.