Programming Languages

CSCI-GA.2110-001
Summer 2013

Course Outline

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

  1. May 28, 2013 
    Course overview. History, standards, syntax, semantics, grammars, parsing.
    Readings: Scott, ch 1 - 2
    See resources folder for language standards documents: C99, C++ 2003, C++0x, and JLS7.

     
  2. June 4, 2013
    I
    mperative languages. names, binding, scope, lifetime, nesting, control structures.
    Readings: Scott, ch 3

     
  3. June 11, 2013
    Subprograms: functions and procedures. Parameter passing. Nested procedures. First-class and higher-order functions. Implementation issues.
    Readings: Scott, ch 6, 8.1 - 8.3

     
  4. June 18, 2013
    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)
      
  5. June 25, 2013
    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

     
  6. Midterm exam, July 2 (in class). Garbage collection, allocation/deallocation, reference counting, concurrent programming.
    Readings: Scott ch 7.7.3

     
  7. July 9, 2013
    Overview of ML. Pattern matching, type inference, data types, pattern matching, continuations.
    Readings: Ullman, ch 1-4, 5 (optional)

     
  8. July 16, 2013
    Overview of Prolog. Logical programming, goals, subgoals, backtracking, unification.
    Readings: Scott, ch. 11 (including 11.3 on CD)

     
  9. July 23, 2013
    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.

     
  10. July 30, 2013
    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).

     
  11. August 6, 2013
    To be announced.

     
  12. August 13, 2013, Final exam.