Programming Languages

CSCI-GA.2110-001
Spring 2013

Course Outline

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

  1. January 29, 2013
    Course overview. History, standards, syntax, semantics, grammars, parsing.
    Readings: Scott, ch 1 - 2
    Language standards (large, be patient): C99, C++ 2003, C++0x, JLS7

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

    Readings: Scott, ch 3.1-3.3.3, 3.4-3.5, and ch 4 (background)

  3. February 12, 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. February 19, 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. February 26, 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. March 5, 2013
    Overview of ML. Pattern matching, type inference, data types.

    Readings: Ullman, ch 1-4, 5 (optional)

  7. March 12, 2013 -Midterm Exam

  8. March 19, 2013 - No class (spring break)
     
  9. March 26, 2013
    Program structure: Modules, packages, and interfaces. Abstract types and information hiding.
    Readings: Scott ch 3.3.4-3.3.5, 3.7 (review)

  10. April 2, 2013
    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 3.3.4-3.3.5, 3.7, Stroustrup ch. 8-9 (optional), Arnold ch. 13 (optional).

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

    Readings: Scott ch. 8.4, Stroustrup ch. 13, 18 (optional).

  12. April 16, 2013
    Overview of Prolog. Logical programming, goals, subgoals, backtracking, unification.

    Readings: Scott, ch. 11 (including 11.3 on CD)

  13. April 23, 2013
  14. Garbage collection, allocation/deallocation, reference counting.

    Readings: Scott ch. 7.7.3

  15. April 30, 2013
    Continuations and Exception Handling. Concurrent programming: threads, tasks, synchronization, communication.

    Readings: Scott ch. 8.5, 12, Barnes ch. 18. (optional), Arnold ch. 12, 14 (optional), Stroustrup ch. 8.3 (optional)

  16. May 7, 2013
    TBA

  17. May 21, 2013 - Final Exam (subject to change)