This outline is subject to change, but should give you some idea of what will
be covered and when.
- 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
- February 5, 2013
Imperative languages. names, binding, scope, lifetime, nesting, control
Readings: Scott, ch 3.1-3.3.3, 3.4-3.5, and ch 4 (background)
- February 12, 2013
Subprograms: functions and procedures. Parameter passing. Nested
procedures. First-class and higher-order functions. Implementation
Readings: Scott, ch 6, 8.1 - 8.3
- February 19, 2013
Functional programming. Overview of the lambda calculus and
Readings: Scott, ch. 10 (including 10.6.1 on the CD)
Dybvig ch. 1,2 (optional)
- 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
- March 5, 2013
Overview of ML. Pattern matching, type inference, data types.
Readings: Ullman, ch 1-4, 5 (optional)
- March 12, 2013 -Midterm Exam
- March 19, 2013 - No class (spring break)
- 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)
- 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).
- April 9, 2013
Generic programming and templates in C++, Java, and ML. Containers
Readings: Scott ch. 8.4, Stroustrup ch. 13, 18 (optional).
- April 16, 2013
Overview of Prolog. Logical programming, goals, subgoals, backtracking, unification.
Readings: Scott, ch. 11 (including 11.3 on CD)
- April 23, 2013
Garbage collection, allocation/deallocation, reference counting.
Readings: Scott ch. 7.7.3
- 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)
- May 7, 2013
- May 21, 2013 - Final Exam (subject to change)