198:314 Principles of Programming Languages
Spring 2004
Sections 5, 6, 7
The schedule below is evolving -- the syllabus here is
tentative.
Note: The handouts below contain the slides covered on that
particular lecture (which might include a few slides from the prior
lecture, if time ran out.) Slides for upcoming lectures are marked as
such, and may be revised after the lecture (to make minor corrections,
and to indicate what was covered.)
Schedule
Required readings in our Louden textboook (indicated by L)
are listed below. Also listed are supplemental readings, which can be
found in the SERC Reading Room on reserve:
- ASU: Aho, Sethi, Ullman, Compilers: Principles, Practices and Techniques, Addison-Wesley, 1986
- Sethi: Sethi, Programming Languages: Concepts and Constructs, 2nd ed, Addison-Wesley, 1996.
-
Lecture 1 (1/21): Introduction
- Language types (imperative/functional/logic), interpretation vs
compilation, history of programming languages.
L Chs 1-2
Lecture notes:
-
Lectures 2-4 (1/26; 1/28; 2/2): 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
Lecture notes:
-
Lectures 5-8 (2/4; 2/9; 2/11; 2/16): Functional Programming Languages
-
function abstraction, function application,
Scheme, referential transparency, higher order functions
L Ch 11.1-11.3,11.5,11.8
Sethi, Ch 10 (in SERC)
Lecture notes:
-
Lectures 9-11 (2/18; 2/23; 2/25): Basic Semantics
-
Names, locations, symbol table, memory management, lifetimes, scoping
(lexical and dynamic), activation records, runtime stack, displays
L Ch 5.1-5.5, 8.4
Sethi 5.1, 5.3, 5.4, 5.5, 5.6 up to bottom of p. 185, 5.7
Lecture notes:
-
------ The midterm covers material up to here ------
-
-
Lectures 12-14 (3/2; 3/4; 3/8): 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.1-7.4, 8.5
Lecture notes:
-
Midterm results: mean=157, median=161, stddev=51
[Percentile Graph]
(find your score on the left, read your percentile standing
within the class on the bottom)
-
-
Lectures 15 (3/22): Memory management
-
Memory management, garbage collection
L Ch 5.6-5.7
Lecture notes:
-
Lectures 16 (3/24): ADTs
-
Abstract data types, object-orientation, encapsulation, code sharing,
generics, Stack ADT, object oriented design
L Ch 9.1-9.3,10.7-10.8
Lecture notes:
-
Lectures 17,18 (3/29,3/31): C++
-
C++ basics; comparison to Java, operator overloading,
pointers vs references, iterators in C++
L Ch 10.1-10.5
Lecture notes:
-
Lecture 19 (4/5): Parameter passing
-
Parameter passing (call by value/reference/...)
L Ch 8.1-8.5
Lecture notes:
-
Lecture 20,21,22,23 (4/7,4/12,4/14,4/19): Prolog
-
Language constructs, Horn clauses, logic programming, prolog lists,
search and unification, generate-and-test
L Ch 12.1-12.5
Sethi Ch 11.1-11.5 (optional)
Lecture notes:
-
Lecture 24,25,26 (4/21,4/26,4/28): Types
-
Primitive types, type constructors, type checking, type equivalence,
conversion, polymorphism, unions
L Ch 6
Lecture notes:
-
Note: No class on May 3 (as the midterm was on a Friday)