Pre-requisites
CSCI.2400 Models of Computation.
Date | Topic | Handouts | Grade |
---|---|---|---|
08/27 | Introduction to programming languages: history,
syntax, semantics, essentials, paradigms. Logic programming: introduction, Horn clauses |
Intro,PLP11.3A.pdf rainy.pl |
|
08/30 |
Logic programming: predicate calculus--Programming Assignment 1 Due 09/21 | PLP11.3B.pdf | 20% |
09/06 |
Prolog: resolution, unification, search, backtracking, cut, lists | PLP11.3C.pdf append.pl, cut.pl, cut2.pl, cut3.pl, cut4.pl, cut5.pl, loop.pl, not2.pl |
|
09/10 |
Prolog: arithmetic, equalities, I/O, meta-interpreters, natural language parsing | PLP11.3D.pdf browse.pl, sentences.pl, sentences2.pl |
|
09/13 |
Logic programming: accumulators, difference lists | PLP11.3E,Sections3.4.3-3.4.4.pdf accumulators.pl, accumulators.oz, dlists.oz |
|
09/17 | Lambda calculus: alpha-renaming, beta conversion,
applicative and normal evaluation orders, Church-Rosser theorem,
combinators |
lambda1.pdf combinators.oz |
|
09/20 | Higher order programming, Oz -- Programming Assignment 2 Due 10/12 | lambda2.pdf eta.oz, seq.oz, rec.oz, hop.oz, lambda-numbers.oz, lambda-booleans.oz |
20% |
09/24 | Introduction to programming concepts: lists, pattern matching, correctness, complexity, lazy functions |
Sections1.1-1.8.pdf scope.oz, comb.oz, lists.oz, pascal.oz, rainy.oz |
|
09/27 | Introduction to programming concepts: concurrency, dataflow, state, objects, classes, nondeterminism, atomicity |
Sections1.9-1.17.pdf concepts.oz, store.oz |
|
10/01 | Declarative programming, grammars, syntax and semantics. | Section2.1.pdf scope2.oz |
|
10/04 | Single-assignment store, kernel language syntax | Sections2.2-2.3.pdf single-assignment.oz |
|
10/09 | Kernel language semantics: concepts, abstract machine | Sections2.4.1-2.4.2.pdf kernel.oz |
|
10/11 | Kernel language semantics: non-suspendable, suspendable statements, closures | Sections2.4.3-2.4.4.pdf dataflow.oz, recursion.oz |
|
10/15 | From kernel to practical language, exceptions | Sections2.4.5-2.7.pdf semantics.oz |
|
10/18 | Memory management, tail-form optimization, garbage collection. | Section2.5.pdf memleak.oz |
|
10/22 |
Exam I review | ||
10/25 |
Exam I | 20% | |
10/29 |
Concurrent object-oriented programming: Java -- Programming Assignment 3 Due 11/20 |
Java,Sections7.7,8.6.pdf mm/c.java, mm/c1.java, mm/c2.java |
20% |
11/01 |
Concurrent OO programming in SALSA: actor creation, message passing, internal state, token-passing continuations, join blocks, first-class continuations | SALSA-Concurrency.pdf examples/helloworld/HelloWorld.salsa examples/cell/Cell.salsa, CellTester.salsa examples/fibonacci/Fibonacci.salsa, Calculator.salsa examples/fibonacci2/Fibonacci.salsa |
|
11/05 | No Lecture |
||
11/08 |
Distributed programming in SALSA: universal naming, remote
communication, actor migration |
SALSA-Distributed.pdf dist/examples/migrate/Migrate.salsa dist/examples/cell/Cell.salsa, MovingCellTester.salsa, MigrateCell.salsa, GetCellValue.salsa |
|
11/12 |
Concurrent and Distributed Programming Patterns in SALSA | SALSA-Patterns.pdf dist/examples/addressbook/AddressBook.salsa, AddUser.salsa, MigrateBook.salsa, GetEmail.salsa dist/examples/lock/File.salsa,WriteLine.salsa |
|
11/15 | Iterative computation, higher order programming, abstract data types, state |
Sections3.1-3.2,3.6-3.7.pdf sqrt.oz, fold.oz, stackADT.oz |
|
11/19 | Dynamic and static typing, parameter passing mechanisms |
Sections2.8.3,6.1-6.4.4.pdf types.oz, parameterpassing.oz |
|
11/26 |
Declarative concurrency |
Chapter4.pdf dconcurrency.oz |
|
11/29 |
Lazy evaluation | Section4.5.pdf lazy-eval.oz |
|
12/03 |
Exam II review | ||
12/06 |
Exam II | 20% | |
Class Participation Extra Credit | 5% |
Please contact the instructor if there is any question about academic (dis)honesty.