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/24 | Introduction to programming languages: history,
syntax, semantics, essentials, paradigms. Logic programming: introduction, Horn clauses |
Intro,PLP11A.pdf rainy.pl |
||
01/27 |
Logic programming: predicate calculus--Programming Assignment 1 Due 02/11 | PLP11B.pdf crossword.pl |
20% | |
01/31 |
Prolog: resolution, unification, search, backtracking, cut, lists | PLP11C.pdf
append.pl
cut.pl cut2.pl cut3.pl cut4.pl cut5.pl loop.pl not2.pl |
||
02/03 |
Prolog: arithmetic, equalities, I/O, meta-interpreters, natural language parsing | PLP11D.pdf reverse.pl browse.pl sentences.pl sentences2.pl |
||
02/07 |
Logic programming: accumulators, difference lists | PLP11E,Sections3.4.3-3.4.pdf accumulators.pl accumulators.oz |
||
02/10 | Lambda calculus: alpha-renaming, beta conversion,
applicative and normal evaluation orders, Church-Rosser theorem,
combinators |
dlists.oz |
||
02/14 | Higher order programming, Oz -- Programming Assignment 2 Due 03/04 | LambdaCalculus.ppt lambda-calculus-chapter.pdf combinators.oz pa2.pdf |
20% | |
02/17 | Introduction to programming concepts: lists, pattern matching |
LambdaCalculus2.pdf eta.oz rec.oz seq.oz hop.oz lambda-numbers.oz lambda-booleans.oz |
||
02/24 | Introduction to programming concepts: correctness, complexity |
Chapter1.pdf scope.oz comb.oz lists.oz pascal.oz concepts.oz store.oz |
||
02/28 | Declarative programming, grammars, syntax and semantics. | Section2.1.pdf recursion.oz |
||
03/03 | Single-assignment store, kernel language syntax | Sections2.2-2.3.pdf single-assignment.oz scope2.oz |
||
03/07 | Kernel language semantics: concepts, abstract machine | Sections2.4.1-2.4.2.pdf kernel.oz rainy.oz |
||
03/10 | Kernel language semantics: non-suspendable, suspendable statements, closures | Sections2.4.3-2.4.4.pdf dataflow.oz |
||
03/21 | From kernel to practical language, exceptions | Sections2.4.5,2.6,2.7.pdf case-semantics.oz semantics.oz |
||
03/24 |
Review for Exam I | |||
03/28 |
Exam I | 20% | ||
03/31 | Memory management, tail-form optimization, garbage collection | Section2.5.pdf memleak.oz |
||
04/04 | Exam I analysis |
|||
04/07 | Iterative computation, higher order programming, abstract data types |
Sections3.1-3.2,3.6-3.7.pdf fold.oz sqrt.oz stackADT.oz |
||
04/11 | State, object-oriented programming, inheritance, polymorphism |
Sections6.1-6.4,7.1-7.2.pdf oop.oz c1.java c2.java c3.java |
||
04/14 |
Actors: a model of concurrent computation -- Programming Assignment 3 Due 04/29 |
actors-chapter.pdf actors.pdf |
20% | |
04/18 | SALSA concurrency: actor creation, asynchronous message passing, state encapsulation, token-passing continuations, named tokens, join blocks, first-class continuations | SALSA-Concurrency.pdf salsa-chapter.pdf HelloWorld.salsa Cell.salsa CellTester.salsa |
||
04/21 |
SALSA distribution and mobility: universal naming, location-transparent communication, actor migration | SALSA-Distributed.pdf Fibonacci.salsa Calculator.salsa Cell.salsa MovingCellTester.salsa MigrateCell.salsa GetCellValue.salsa AddressBook.salsa AddUser.salsa GetEmail.salsa MigrateBook.salsa readme.txt |
||
04/25 |
Concurrent and distributed programming patterns |
SALSA-Patterns.pdf |
||
04/28 |
Declarative concurrency |
Chapter4.pdf dconcurrency.oz |
||
05/02 |
Dynamic and static typing, parameter passing mechanisms, lazy evaluation | Sections2.8.3,4.5,6.1-6.4.pdf lazy-eval.oz callbyneed.oz |
||
05/05 |
Review for Exam II | |||
05/09 |
Exam II | 20% | ||
Class Participation Extra-Credit | 5% |
Please contact the instructor if there is any question about academic (dis)honesty.