Programming Languages

CSCI-GA.2110-001
Summer 2012

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
    Language standards (large, be patient): C99, C++ 2003, C++0x, JLS7
    Homework 1

  2. Memorial day. No class.


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

    Lecture slides
    Readings: Scott, ch 3

    C++ to Assembly Example

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

    Lecture slides
    Homework 1 Due
    Readings: Scott, ch 6, 8.1 - 8.3


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

    Homework 2
    Readings: Scott, ch. 10 (including 10.6.1 on the CD),
    Dybvig ch. 1,2 (optional)
    Lecture slides
    A short introduction to the Lambda Calculus (from the University of Birmingham)
    Lambda-calculus lecture notes (from Brown University)
    Scheme standard
    Racket Download
    Sample Scheme Code

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

    Homework 2 Due
    Lecture Slides
    Readings: Scott, ch. 7

     
  7. Midterm exam, July 2 (in class). Garbage collection, allocation/deallocation, reference counting, concurrent programming.

    Lecture Slides
    Readings: Scott ch 7.7.3

  8. Overview of ML. Pattern matching, type inference, data types, pattern matching, continuations.

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


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

    Readings: Scott, ch. 11 (including 11.3 on CD)
    Homework 4
    Lecture Slides
    SWI Prolog
    ELIZA Sources (for HW4)

  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), 8.5.
    Lecture Slides

  11. Concurrent programming: threads, tasks, synchronization, communication. Generic programming and templates in C++, Java, and ML. Containers and iteration.

    Readings: Scott ch. 8.4-5,12, Stroustrup ch. 8.3, 13, 18 (optional), Barnes ch. 18. (optional), Arnold ch. 12, 14 (optional).
    Lecture Slides
    Standard Template Library (STL) Programmer's Guide

  12. Final exam in class. August 6.