SCHEDULE MAY CHANGE AT ANY TIME DURING THE SEMESTER!

 

Date

Topic

Reading

Lectures

Homework

Friday Aug 29

Introduction

Syllabus, Scott, Ch.1

Lecture1

 

Tuesday Sep 2

Programming language syntax. Formal languages: Regular expressions and Context-free grammars

Scott, Ch.2.1-2.2

Lecture2

HW1 (50pts, PL Syntax)

Tuesday
Sep 9

Scanning, Parsing,

Top-down parsing, Recursive-descent

Scott, Ch.2.2 and Ch.2.3.1

Lecture3

 

Friday

Sep 12

Drop deadline

Top-down parsing: LL(1) grammars

Scott, Ch.2.3.2-2.3.3

Lecture4

Tuesday
Sep 16

Logic programming and Prolog. Horn clauses, Resolution principle; Prolog: Search trees, Unification, Backtracking, Backward chaining

Scott, Ch.12.1

Lecture4.5

 

Lecture5

snowy.pl, likes.pl, classmates.pl

Friday

Sep 19

Prolog: Lists, Programming with lists, Arithmetic, Imperative control flow

Scott, Ch.12.2

Lecture6

HW1 due Thursday Sep 18

HW2 (50pts, Prolog)

Tuesday Sep 23

Prolog: Negation by failure, Generate-and-test paradigm

Lecture7

dcg.pl

maps_and_folds.pl

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

Lecture7.5

 

Lecture8

Tuesday

Sep 30

Programming language semantics. Semantic analysis, Attribute grammars, ASTs

Scott, Ch.4.1-4.3

Lecture9

Friday

Oct 3

Attribute grammars

Lecture10

HW2 due Thursday Oct 2,
HW3
(50pts, Scoping and

Attribute grammars)

Tuesday

Oct 7

Catch-up and review

Lecture10.5

Lecture11

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
Oct 21

Scheme: Let-bindings, Typing, Scoping, Closures

Scott, Ch.3.6 (on closures)

Lecture14

Friday
Oct 24

Lambda calculus: Syntax and semantics, Free and bound variables,

Substitution

Lecture15

Tuesday
Oct 28

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
Nov 7

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