198:314 - Principles of Programming Languages
MIDTERM
We have a list of all midterm scores in
descending order and indexed according to the last 5 digits of your
Student ID. We also have a histogram
of the scores grouped by 10's.
Lecture Notes
- Non-programming homeworks are due *before* class!
- You need to read the assigned book chapters *before* each class!
- The slides only *partially* cover the material presented in the lectures.
You still will have to take notes!
The lecture slides will be available shortly before each
lecture. Please use the command "mpage" to print out the
PostScript versions in order to print multiple
slides on a single page.
For a detailed description of the
command, access the online manual pages by typing "man mpage".
- September 4, 2002 --
Lecture 1
( pdf )
Introduction to course, programming paradigms:
functional, logic, imperative, object oriented.
Reading: Louden Chs 1-2
- September 9, 2002 --
Lecture 2
( pdf ) updated 09/11
Syntax vs. semantics, formal languages, scanner, parser, regular
expressions, finite state machines,
context-free grammars, BNF.
Reading: Louden Chs 4 (4.1-4.5, 4.7); ASU Ch 2.2, 3.3, 3.4
- September 11, 2002 --
Lecture 3
( pdf ) updated 09/16/02
Context-free grammars, BNF, parse tree, ambiguity, dangling else,
expression grammars
Reading: Louden Chs 4 (4.1-4.5, 4.7); ASU Ch 2.2, 3.3, 3.4
- September 16, 2002 --
Lecture 4
( pdf ) updated 09/16/02
EBNF, ambiguity, expression grammars, associativity, precedence,
regular grammars, concrete
syntax, abstract syntax, abstract syntax tree (AST), recursive descent parsing.
Reading: Louden Chs 4 (4.1-4.5, 4.7); ASU Ch 2.2, 3.3, 3.4
- September 18, 2002 --
Lecture 5 updated 09/23/02
( pdf )
Basic semantics: name bindings, symbol table, environments, static scoping,
dynamic scoping
Reading: Louden Chs 5 (5.1, 5.2)
- September 23, 2002 --
Lecture 6 updated 09/25/02
( pdf )
Activation records (stack frames), activation tree, static scoping,
dynamic scoping, access links, control links, display, reference table
Reading: Louden Chs 5 (5.2, 5.3, 5.5) Ch 8.4.2
- September 25, 2002 --
Lecture 7 updated 09/30/02
( pdf )
Access links, control links, display, reference table, runtime storage
management, variable lifetimes, introduction to C
Reading: Louden Chs 5 (5.2, 5.3, 5.5) Ch 8.4.2
- September 30, 2002 --
Lecture 8
( pdf )
How to compile/run/debug C programs,
l-values, r-values, pointers.
Reading: Louden Chs 5 (5.6, 5.7)
- October 2, 2002 --
Lecture 9 updated 10/07/02
( pdf )
Project overview, singly-linked list example
- October 7, 2002 --
Lecture 10
( pdf )
Free list management, malloc and free in C, garbage collection, what can go wrong?,
arrays and pointers
Reading: Louden Ch. 8.5
- October 9, 2002 --
Lecture 11 updated 10/09/02
( pdf )
ADTs (Abstract Data Types), object oriented
design, object oriented programming,
examples in C++
Reading: Louden Chs 9 (9.1 - 9.3)
- October 14, 2002 --
Lecture 12
( pdf )
Object oriented design, programming, and implementation, has-a, is-a, uses-a relations,
inheritance
Reading: Louden Chs 10 (10.1 - 10.3)
- October 16, 2002 --
Lecture 13 updated 10/16/02
( pdf )
Multiple inheritance, interfaces, abstract
classes, method overriding, method overloading
Reading: Louden Chs 10 (10.4, 10.7.3)
- October 23, 2002 --
Lecture 14 updated 10/23/02
( pdf )
Method overriding, method overloading
- October 28, 2002 --
Lecture 15
( pdf )
Examples of method overloading, functional
programming, introduction to Scheme
- October 30, 2002 --
Lecture 16
( pdf )
Functional programming, introduction to Scheme, S-expressions, lists, primitive
functions, recursive functions
Reading: Louden Chs 11 (11.1 - 11.3)
- November 4, 2002 --
Lecture 17 updated 11/06/02
( pdf )
Recursive function examples, function evaluation
Reading: Louden Chs 11 (11.3)
- November 6, 2002 --
Lecture 18 updated 11/11/02
( pdf )
Higher-order functions, currying, let variable bindings, environments, closures
Reading: Louden Chs 11 (11.3)
- November 11, 2002 --
Lecture 19 updated 11/13/02
( pdf )
Environments, closures, closure interpreter,
functional and data representation of
environments, introduction to typing
Reading: Louden Chs 6 (6.1 - 6.3)
- November 13, 2002 --
Lecture 20 updated 11/18/02
( pdf )
Higher order function "reduce", type
systems, type checking, type expressions
Reading: Louden Chs 6 (6.5)
- November 18, 2002 --
Lecture 21 updated 11/20/02
( pdf )
Type checking, type expressions, type
equivalence, type variables, array layout, struct (record)
layout, unions
Reading: Louden Chs 6 (6.6 - 6.7)
- November 20, 2002 --
Lecture 22
( pdf )
Array layout, parameter passing,
pass-by-value, pass-by-reference,
pass-by-result, pass-by-value-result, pass-by-name
Reading: Louden Chs 8 (8.1 - 8.3)
- November 25, 2002 --
Lecture 23 updated 12/02/02
( pdf )
pass-by-name, Prolog and first order logic,
Horn clauses, control in Prolog, examples, backtracking.
Reading: Louden Chs 12 (12.1 - 12.3)
- December 2, 2002 --
Lecture 24
( pdf )
Unification, backward chaining, backtracking.
Reading: Louden Chs 12 (12.1 - 12.3)
- December 2, 2002 --
Lecture 25 updated 12/09/02
( pdf )
Unification examples, lists in Prolog
Reading: Louden Chs 12 (12.1 - 12.3)
- December 9, 2002 --
Lecture 26
( pdf )
Cuts, negation as failure, lookup example,
NQUEENS example
Reading: Louden Chs 12 (12.4 - 12.5)
- December 11, 2002 --
Lecture 27
( pdf )
Course summary, event-driven programming,
parallel programming, spatial programming