Programming Languages

CSCI-GA.2110-001
Summer 2015

Course Outline

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

  1. May 26, 2015 
    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 2, 2015
    I
    mperative languages. names, binding, scope, lifetime, nesting, control structures.
    Readings: Scott, ch 3

     
  3. June 9, 2015
    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 16, 2015
    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 23, 2015
    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, June 30 (in class). Garbage collection, allocation/deallocation, reference counting, concurrent programming.
    Readings: Scott ch 7.7.3

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

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

     
  9. July 21, 2015
    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 28, 2015
    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 4, 2015
    To be announced.

     
  12. August 11, 2015, Final exam.