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.
- 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]
- Imperative languages. names, binding, scope, lifetime, nesting, control
structures.
Readings: Scott, ch 3
Lecture Slides
Homework 1
- 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
- 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
- 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
- Midterm exam in class (June 28).
- 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.
- 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)
- 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
- 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
- Garbage collection, allocation/deallocation, reference counting. Review of course topics.
Readings: Scott ch 7.7.3
Lecture Slides
- Final exam in class (Aug 9).
Time permitting: Continuations. Concurrent programming: threads, tasks,
synchronization, communication. Concurrency in Ada and Java.