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