Pre-requisites
CSCI.2400 Models of Computation.
Course Themes
Programming Language Essentials. Logic, Functional, Concurrent Object-Oriented Programming Paradigms.
Learning Outcomes
When the students have successfully completed this course, they will be able to:
Date | Topic | Handouts | Grade |
---|---|---|---|
01/25 | Introduction to programming languages: history,
syntax, semantics, essentials, paradigms. Logic programming: introduction, Horn clauses |
Intro,PLP11A.pdf
rainy.pl crossword.pl |
|
01/28 |
Logic programming: predicate calculus--Programming Assignment 1 Due 02/12 |
PLP11B.pdf
|
20% |
02/01 |
Prolog: resolution, unification, search, backtracking, cut, lists |
PLP11C.pdf
loop.pl
not2.pl
append.pl
cut.pl cut2.pl cut3.pl cut4.pl cut5.pl |
|
02/04 |
Prolog: arithmetic, equalities, I/O, meta-interpreters, natural language parsing |
PLP11D.pdf browse.pl sentences.pl sentences2.pl clause.pl |
|
02/08 |
Logic programming: accumulators, difference lists |
PLP11E,Sections3.4.3-3.4.4.pdf
accumulators.pl accumulators.oz dlists.oz |
|
02/11 | Lambda calculus: alpha-renaming, beta conversion,
applicative and normal evaluation orders, Church-Rosser theorem,
combinators |
LambdaCalculus.pdf combinators.oz | |
02/18 | Higher order programming, Oz -- Programming Assignment 2 Due 03/05 |
lec_021810.pdf
eta.oz
hop.oz
lambda-booleans.oz
lambda-numbers.oz rec.oz seq.oz |
20% |
02/22 | Introduction to programming concepts: lists, pattern matching |
Sections1.1-1.8.pdf
scope.oz
comb.oz lists.oz pascal.oz rainy.oz |
|
02/25 | Introduction to programming concepts: correctness, complexity |
Sections1.9-1.17.pdf
concepts.oz
store.oz |
|
03/01 | Declarative programming, grammars, syntax and semantics. | Section2.1.pdf recursion.oz | |
03/04 | Single-assignment store, kernel language syntax |
Sections2.2-2.3.pdf
scope2.oz single-assignment.oz |
|
03/15 | Kernel language semantics: concepts, abstract machine | kernel.oz Sections2.4.1-2.4.2.pdf | |
03/18 | Kernel language semantics: non-suspendable, suspendable statements, closures | Sections2.4.3-2.4.4.pdf dataflow.oz | |
03/22 | From kernel to practical language, exceptions |
Sections2.4.5,2.6,2.7.pdf
semantics.oz
|
|
03/25 |
Exam I review | ||
03/29 |
Exam I | 20% | |
04/01 | Memory management, tail-form optimization, garbage collection |
Section2.5.pdf
memleak.oz
|
|
04/05 | Exam I Analysis | ||
04/08 | Iterative computation, higher order programming, abstract data types |
Sections3.1-3.2,3.6-3.7.pdf sqrt.oz fold.oz stackADT.oz | |
04/12 | Dynamic and static typing, parameter passing mechanisms, State |
Sections2.8.3,6.1-6.4.4.pdf
types.oz parameterpassing.oz |
|
04/15 |
Actors: A Model of Concurrent Computation -- Programming Assignment 3 Due 04/30 |
actors1.pdf
actors2.pdf
|
20% |
04/19 |
SALSA Concurrency: actor creation, asynchronous message passing, state encapsulation, token-passing continuations, join blocks, first-class continuations, named tokens |
SALSA-Concurrency.pdf
thread_problem.pdf
salsa_examples.zip
|
|
04/22 |
SALSA Distribution and Mobility: universal naming, location-transparent communication, actor migration |
SALSA-Distributed.pdf
dist_examples.zip
|
|
04/26 |
Concurrent and Distributed Programming Patterns |
SALSA-Patterns.pdf SALSA-Patterns.pps |
|
04/29 |
Declarative concurrency |
Chapter4.pdf dconcurrency.oz |
|
05/03 |
Lazy evaluation |
Section4.5.pdf lazy-eval.oz |
|
05/06 |
Exam II review |
callbyneed.oz |
|
05/10 |
Exam II | 20% | |
Class Participation Extra-Credit | 5% |
Please contact the instructor if there is any question about academic (dis)honesty.