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