198:314 Principles of Programming Languages
Spring 2004
Syllabus

Topics Approximately by Lecture
Required reading in our Louden textboook (indicated by L)
are indicated below. Also listed are supplemental readings in Aho,
Sethi, Ullman, Compilers: Principles, Practices and Techniques,
Addison-Wesley, 1986 (indicated by ASU) which can be found in the SERC
Reading Room on reserve.
All assignment dates listed in this syllabus are TENTATIVE, dependent on the
progress of the course and subject to change.
The times of the exams are fixed.
-
Lecture 1(week of 1/19): Introduction
- History of programming languages, compilation.
L Chs 1-2
-
Lectures 2-4(wk 1/19-1/25): Formal Languages
-
Regular expressions, Grammars
Context-free grammars, derivation, parse, parse trees, ambiguity
L Ch 4 (4.1-4.5,4.7); ASU Ch 2.2, 3.3, 3.4
-
Lectures 5-8(wk 2/2-2/9): Functional Programming Languages
-
function abstraction, function application, into to lambda calculus,
Scheme, referential transparency, higher order functions
L Ch 11.1-11.3,11.5,11.8
-
Monday, February 9, 2004: Scheme project posted
-
Lectures 9-10(wk 2/16): Basic Semantics
-
Names, locations, symbol table, memory management,
lifetimes, scoping (lexical and dynamic), activation records, runtime stack
L Ch 5.1-5.5, 8.4
-
Lectures 11-13(wk 2/23-3/1): C
-
C syntax (as compared to Java), control structures and datatypes in C,
coding with pointers, building recursive data
structures with pointers, function pointers
L Ch 7 (7.1-7.4), 8.5
-
Monday, March 1, 2004: Scheme project due
-
Thursday, March 11, 2004: C project posted
-
Friday, March 5, 2004: MIDTERM EXAM
Lectures 14(wk 3/8): More on Memory Management
-
memory management, garbage collection
L Ch 5.6-5.7, 9
-
Lectures 15-18(wk 3/8,3/22,3/29):
ADT's, Object-oriented Programming Languages
-
OO design, C++ abstract classes and interfaces, multiple inheritance
L Ch 10 (10.1-10.5, 10.7-10.8)
BGR fix
-
Lectures 19(wk 3/29): Parameter Passing
-
parameter passing semantics
,
L Ch 8.1-8.5
-
Mon, April 5, 2004: C project due;
Thurs, April 8, 2004: C++ design project posted
-
Lectures 20-22(wk 4/5-4/12): Logic Programming
-
Prolog, goal-oriented semantics, database computations, unification,
negation by failure, execution model, generate-and-test paradigm.
L Ch 12.1-12.5
-
Monday, April 19, 2004: C++ design project due; Prolog project posted
-
Lectures 23-25(wk 4/12-4/19): Types
-
primitive types, type constructors, type checking, type equivalence,
conversion, polymorphism, unions
L Ch 6
-
Lectures 26-27(wk 4/26): Parallel Programming, Monitors, Threads
-
L Ch 14
-
Monday, May 3, 2004: Prolog project due
Important Dates
-
Monday, February 9, 2004: Scheme project posted
-
Sunday, February 29, 2004: Scheme project due at midnight
-
Friday, March 5, 2004: MIDTERM EXAM
-
Monday, March 8, 2004: C project posted
-
Friday, March 31, 2004: C project due
-
Friday, March 31, 2004: C++ design project posted
-
Sunday, April 11, 2004: C++ design project due;
Prolog project posted.
-
Monday, May 3, 2004: Prolog project due
-
Monday, May 10, 2004: FINAL EXAM, 4:00-7:00pm
Last updated by Barbara Ryder at 7:30am on April 8, 2004.