198:314 Principles of Programing Languages
Fall 2002
Ryder's Lecture Notes
Sections 6-8

Lecture 1 (9/3/2002): Introduction
for viewing,
for printing
(Note: for viewing version needs to be rotated in Acroread in order to
view properly;
please make sure you use a new version of Acroread in
which this is easily possible.)
Language paradigms, translation, history of PLs
Reading: Louden, Chs 1-2
Lecture 2 (9/5/2002): Formal Languages
for viewing,
for printing
Regular expressions, Backus Naur form, Grammars, Regular PLs
Reading: Louden, Ch 4 (4.1); ASU Ch 3.3, 3.4
Slides corrected: Formal #15
Lecture 3 (9/10/2002): Formal Languages 2
for viewing,
for printing
Context-free grammars, Derivation, Parse, Ambiguity, Associativity
Reading: Louden, Ch 4 (4.2-4.3); ASU Ch 2.2, 4.2
Slides corrected: Formal2 #15,16
Lecture 4 (9/12/2002): Formal Languages 3
for viewing,
for printing
Dangling else ambiguity of Pascal, Ambiguous languages, Chomsky
hierarchy of formal languages
Reading: Louden, Ch 4 (4.4-4.5,4.7)
Lecture 5 (9/17/2002): Semantics - Memory
for viewing,
for printing
Identifiers, Attributes, Binding times, Declaration scope - Lexical,
Dynamic,
Symbol table, Stack, Heap
Reading:Louden, Ch 5.1-5.2
Slides covered: #1-17
Slides corrected: #2,11
Lecture 6 (9/19/2002): Semantics - Scope
for viewing,
for printing
Run time stack, Lexical scope, Dynamic scope, Procedure activation
tree,
Implementations
Reading:Louden, Ch 5.2-5.3, 8.4.2
Slides covered: Sem-Mem #17-22, Sem-Scope #1-28
Variable names corrected in lecture to be consistent with Lecture
5;
that is, all names are shown as .
Lecture 7 (9/24/2002): Semantics - Memory3
for viewing
for printing
Variables and pointers, assignment and aliasing, Lifetimes, Explicit
control of the heap,
Environments, Garbage collection
Reading:Louden, Ch 5.5-5.7, 8.4-8.5
Slides covered: Sem-Scope #29-36; Sem-Mem3 #1-21
Slides corrected: Sem-Mem3 #5,6,19
Lecture 8 (9/26/2002): C
for viewing
for printing
Assignment, Comparison to Java, Control flow stmts,
Hello world
program, Data types, Pointers
Reading: Louden, Ch 7.2-7.4
Slides covered: C #1-17
Slides corrected:C #8,20
Lecture 9 (10/1/2002): C2
for viewing
for printing
Examples of C programs using pointers, building a linked list in
C,
using free(), using structs, switch statement
Reading (optional, covers all C lectures):
Reek, Pointers on C: Ch 6(pointers), 10(structures),
11(dynamic memory allocation), 12(using structures and pointers)
Slides covered: C #17-20; C2 #1-18
Slides corrected: C2 #4,11
Lecture 10 (10/3/2002): C3
for viewing
for printing
Functions in C, call by reference, casting, pointer arithmetic,
strings
Slides covered: C3 #1-20.
Lecture 11 (10/8/2002): Abstract Data Types, OO Design:
for viewing
for printing
What is an abstract data type? Algebraic specification, Generics,
OO design, Object relationships: Is-a, Has-a, Uses-a
Reading:Louden, Ch 9.1-9.4
Slides covered: ADT #1-19
Lecture 12 (10/10/2002): Java:
for viewing
for printing
Quick review, Inheritance using classes, single versus multiple,
Abstract classes, Interfaces
Reading:Louden, Ch 10.1-10.4
Slides covered: Java #1-21
Slides changed: Java #18, 19
Lecture 13 (10/15/2002): Java-2:
for viewing
for printing
Examples of multiple inheritance with discussion
dynaminc binding, method overriding
Reading:Louden, Ch 10.7.3,10.8
Slides covered: Java #22-27; Java-2 #1-10
Lecture 14 (10/17/2002): Java-2, cont:
(see Lecture 13 for notes)
Method overloading, Java overloading algorithm, object layout,
virtual method table
Slides covered: Java-2 #10-21
Lecture 15 (10/24/2002): Functional Programming:
for viewing
for printing
Functions as values, S-expressions, cons, car, cdr
Slides covered:Java-2 #22-26; FunclPgmg #1-5
Slides corrected: Java-2 #24,25 (see Lecture 13 for new pdf)
Reading:Louden, Ch 11.1-11.3
Lecture 16 (10/29/2002): Functional Programming:
(see Lecture 15 for notes)
Defining functions, read-eval-print loop, recursive functions
Slides covered: FunclPgmg #6-18
Reading:Louden, Ch 11.5, 11.8
Lecture 17 (10/31/2002): Functional Programming-2:
for viewing
for printing
(note these slides used to be listed under lecture 16.)
Equality testing, Higher order functions, map, reduce,
apply, eval
Slides covered: FunclPgmg #19-21; FunclPgmg-2 #1-12
Lecture 18 (11/5/2002): Functional Programming-2, cont:
Prof Alex Borgida
Lambda calculus
More on higher-order functions, Closures, Currying,
Types for viewing
for printing
What is a type? type systems, typing statements and expressions
Lecture 19 (11/7/2002): Types, cont:
Prof Alex Borgida
Types2 for viewing and printing
Strong typing, type checking, type equivalence, arrays, strings,
enumeration types, records and structs, unions and variant
records, subranges, generics
Lecture 20 (11/12/2002): Review and Types-2
finished notes from Lecture 17 and reviewed typing
Orthogonal types in Algol68 for viewing
for printing
Slides covered: Types-2 #1-10
Slides corrected:Types-2 #8,15
Lecture 21 (11/14/2002): Types-2
Pascal variant record example for
viewing for printing
More on Algol 68, arrays and array addressing, user-defined modes,
discriminated unions, dereferencing as type conversion
Louden, Ch #6.1-6.7, 6.9 (covered in sum total of types lectures)
Slides covered: Types-2 #11-27; TypeUnions #1-6
Lecture 22 (11/19/2002): Parameter Passing
for viewing
for printing
parameter passing methods: by value, by result, by value-result,
by reference, procedures as arguments
Louden, Ch #8.1-8.3
Slides covered: Param #1-17
Lecture 23 (11/21/2002): Prolog
for viewing
for printing
Prof Alex Borgida
Introduction to Prolog, facts, rules, queries,
Queen Victoria database, Horn Clauses, declarative and procedural
semantics,
negation as failure, Prolog syntax, recursion
Slides covered: Prolog #1-23
Lecture 24 (11/26/2002): Prolog-2
for viewing
for printing
Lists in Prolog, don't care variables, Prolog search trees, traces
Slides covered: Prolog #24-35; Prolog-2 #1-16
Slides corrected: Prolog-2 #7,20
Lecture 25 (12/3/2002): Prolog-3
for viewing
for printing
Unification, functions on lists, generate and test paradigm, N queens
Louden, Ch #12.1-12.4
Slides covered: Prolog-2 #17-20; Prolog-3 #1-12
Lecture 26 (12/6/2002): Event-driven Programming
for viewing
for printing
Event-driven programming model of computation, events, listeners,
Java's AWT package, examples of event-driven programs
See examples page for simpleSnake.tar
last updated at 11:55pm on Decembeer 5, 2002 by Barbara Ryder.