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 | Handout | Grade |
---|---|---|---|
08/26 | Introduction to programming languages: history,
syntax, semantics, essentials, paradigms. Logic programming: introduction, Horn clauses |
Introduction and PLP Chapter 11A rainy.pl | |
08/29 |
Logic programming: predicate calculus--Programming Assignment 1 Due 09/15 | PA1 description PLP Chapter 11B family.pl | 20% |
09/02 |
Prolog: resolution, unification, search, backtracking, cut, lists | All PLP Chapter 11C append.pl crossword.pl cut.pl cut2.pl cut3.pl cut4.pl cut5.pl family2.pl loop.pl not2.pl | |
09/05 |
Prolog: arithmetic, equalities, I/O, meta-interpreters, natural language parsing | All PLP Chapter 11D browse.pl nestedloop.pl sentences.pl sentences2.pl | |
09/09 |
Logic programming: accumulators | All CTM Section 3.4.3 family.oz rainy.oz accumulators.pl accumulators.oz | |
09/12 | Logic programming: difference lists |
All CTM Section 3.4.4 dlists.oz dlists.pl flatten.pl sentences3.pl | |
09/16 | Lambda calculus: alpha-renaming, beta conversion, applicative and normal evaluation orders, Church-Rosser theorem, combinators | PDCS Chapter 2A functions.oz | |
09/19 | Higher order programming, Oz -- Programming Assignment 2 Due 10/06 | All PDCS Chapter 2B Programming Assignment #2 seq.oz rec.oz lambda-numbers.oz lambda-booleans.oz hop.oz eta.oz combinators.oz | 20% |
09/23 | Introduction to programming concepts: lists, pattern
matching, correctness, complexity |
All CTM Chapter 1 store.oz scope.oz pascal.oz lists.oz concepts.oz comb.oz | |
09/26 | Declarative programming, grammars, syntax and semantics. | CTM Chapter 2.1 random.oz sumlist.oz | |
09/30 | Single-assignment store, kernel language syntax | CTM Chapters 2.2 and 2.3 single-assignment.oz map.oz | |
10/03 | Kernel language semantics: concepts, abstract machine | CTM Chapters 2.4.1 and 2.4.2 scope2.oz kernel.oz foldr.oz | |
10/07 | Kernel language semantics: non-suspendable, suspendable statements, closures | CTM Chapters 2.4.3 and 2.4.4 | |
10/10 | From kernel to practical language, exceptions | All CTM Chapters 2.4.5, 2.6 and 2.7 semantics.oz dataflow.oz case-semantics.oz | |
10/17 |
Review for Exam I | ||
10/21 |
Exam I | 20% | |
10/24 | Memory management, tail-form optimization, garbage collection | CTM Chapter 2.5 memleak.oz | |
10/28 | Iterative computation, higher order programming, abstract data types |
CTM Chapters 3.1, 3.2, 3.6 and 3.7 sqrt.oz fold.oz stackADT.oz | |
10/31 | State, object-oriented programming, inheritance, polymorphism |
All CTM Chapters 6.1-6.4, 7.1 and 7.2 oop.oz c.java c1.java c2.java c3.java | |
11/04 | Exam I analysis |
||
11/07 |
Actors: a model of concurrent computation -- Programming Assignment 3 Due 11/24 |
PDCS Chapter 4 Part A Programming Assignment #3 Description | 20% |
11/11 |
SALSA concurrency: actor creation, asynchronous message passing, state encapsulation, token-passing continuations, named tokens, join blocks, first-class continuations | All PDCS Chapter 9 Part A helloworld cell fibonacci fibonacci2 | |
11/14 |
SALSA distribution and mobility: universal naming, location-transparent
communication, actor migration |
PDCS Chapter 9 Part B addressbook mcell migrate | |
11/18 |
Concurrent and distributed programming patterns |
PDCS Chapter 9 Part C | |
11/21 |
Declarative concurrency |
CTM Chapter 4 dconcurrency.oz | |
11/25 |
Dynamic and static typing, parameter passing mechanisms, lazy evaluation | CTM Chapters 2.8.3, 4.5, and 6.1-6.4 callbyneed.oz lazy-eval.oz | |
12/02 |
Review for Exam II | ||
12/05 |
Exam II | 20% | |
Class Participation Extra-Credit | 10% |
Please contact the instructor if there is any question about academic (dis)honesty.