SCHEDULE MAY CHANGE AT ANY TIME DURING THE
SEMESTER!
|
Date |
Topic |
Reading |
Lectures |
Homework |
|
Friday Aug 29 |
Introduction |
Syllabus, Scott, Ch.1 |
|
|
|
Tuesday Sep 2 |
Programming language syntax. Formal languages: Regular expressions and Context-free grammars |
Scott, Ch.2.1-2.2 |
HW1 (50pts, PL Syntax) |
|
|
Tuesday |
Scanning, Parsing, Top-down parsing, Recursive-descent |
Scott, Ch.2.2 and Ch.2.3.1 |
|
|
|
Friday Sep 12 Drop deadline |
Top-down parsing: LL(1) grammars |
Scott, Ch.2.3.2-2.3.3 |
||
|
Tuesday |
Logic programming and Prolog. Horn clauses, Resolution principle; Prolog: Search trees, Unification, Backtracking, Backward chaining |
Scott, Ch.12.1 |
|
|
|
Friday Sep 19 |
Prolog: Lists, Programming with lists, Arithmetic, Imperative control flow |
Scott, Ch.12.2 |
HW1 due Thursday Sep 18 HW2 (50pts, Prolog) |
|
|
Tuesday Sep 23 |
Prolog: Negation by failure, Generate-and-test paradigm |
|||
|
Friday Sep 26 |
Binding and scoping. Binding time, Storage, Stack smashing, Static and dynamic scoping |
Scott, Ch.3.1, 3.2, 3.3.1, 3.3.2, and 3.3.6 |
|
|
|
Tuesday Sep 30 |
Programming language semantics. Semantic analysis, Attribute grammars, ASTs |
Scott, Ch.4.1-4.3 |
||
|
Friday Oct 3 |
Attribute grammars |
HW2 due Thursday Oct 2, Attribute grammars) |
||
|
Tuesday Oct 7 |
Catch-up and review |
|||
|
Friday Oct 10 |
Exam 1 |
|
||
|
Tuesday Oct 14 |
Functional programming. Reduction semantics, referential transparency, Scheme: S-expressions, Lists, Recursion |
Scott, Ch.11.1-11.3 |
Lecture12 |
|
|
Friday Oct 17 |
Scheme: Equality, Higher-order functions, Map and fold, Tail recursion |
Scott, Ch.11.5-11.6 |
Lecture13 |
HW3 due Thursday Oct 16, HW4 (50pts, Scheme 1) |
|
Tuesday |
Scheme: Let-bindings, Typing, Scoping, Closures |
Scott, Ch.3.6 (on closures) |
Lecture14 |
|
|
Friday |
Lambda
calculus: Syntax and semantics, Free and bound variables, Substitution |
Lecture15 |
||
|
Tuesday |
Lambda
calculus: Reduction rule, Normal forms, Reduction strategies, Church-Rosser
theorem |
Lecture16 |
HW4 due Monday Oct 27,
HW5 (50pts, Scheme 2) |
|
|
Friday Oct 31 |
Lambda calculus: Applied lambda calculus, Simply- typed lambda calculus (System F1) |
Lecture17 |
||
|
Tuesday Nov 4 |
Catch-up
and Review |
Lecture18 |
HW5 due Monday Nov 2 |
|
|
Friday W-drop deadline |
Exam 2 |
|
||
|
Tuesday Nov 11 |
Haskell: Getting started, Interpreters, Algebraic data types, Pattern matching |
Lecture19 |
||
|
Friday Nov 14 P/NC deadline |
Haskell: Algebraic data types, Pattern matching, Lazy evaluation, Types and type inference |
Lecture20 |
HW6 (50pts, Haskell) |
|
|
Tuesday Nov
18 |
Haskell,
conclusion: Type classes and Monads |
|
Lecture21 |
|
|
Friday Nov 21 |
Data
abstraction and types.
Type systems, Three views of types, Type equivalence, Types in C |
Scott,
Ch.7.1-7.2 |
Lecture22 |
|
|
Tuesday Dec 2 |
Data abstraction, conclusion: Types in C, Primitive and
Composite Types |
Scott, Ch 8 |
Lecture23 |
HW6 due Monday Dec 1, HW7 (50pts, Data & control abstraction) |
|
Friday Dec 5 |
Control abstraction and parameter passing. Object-oriented languages. Encapsulation and inheritance, Initialization and finalization, Dynamic dispatch, Polymorphism. |
Scott, Ch.9.1-9.3, Scott, Ch.10.1-10.4 |
Lecture24_Part1 Lecture24_Part2 |
|
|
Tuesday Dec 9 |
Concurrency. Message passing vs. shared memory,
Java concurrency |
Scott,
Ch.13.1 |
Lecture25 |
|
|
Friday Dec 12 |
Catch-up and Review |
Lecture26 |
HW7 due Thursday Dec 11 |
|
|
TBD |
Final Exam |
|
A |