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:

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)