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.