CSCI.4430/6969 Programming Languages-- Fall 2006

Instructor:  Carlos Varela
Office:  109 Amos Eaton (x 6912)
Office Hours:  Mo, Th, 3-4pm; or by appointment
Meeting Place:  Amos Eaton, Room 214
Meeting Hours:  Mo, Th, 12:00-1:50pm
TA:  Brian Boodman
TA Office:  Amos Eaton, 217
TA Office Hours:  Tu 3:30-5pm and We 1-2pm

For questions about the course, please email:  proglang AT cs DOT rpi DOT edu.



Programming Assignment 1 is available.
Programming Assignment 2 is available.
Programming Assignment 3 is available.

Course Objectives

This course will study essential aspects of programming languages --e.g., their theoretical foundations, syntax, semantics, types, scope of variables, data abstraction, control abstraction, parameter passing and expression evaluation mechanisms-- using a multi-paradigm programming language, Oz.  We will also introduce different programming paradigms (computation models) including functional programming, imperative programming, concurrent and distributed programming, and logic programming.  The course will include programming assignments in Oz, SALSA and Prolog.


CSCI.2400 Models of Computation.

Course Contents

  1. Introduction
  2. Programming Language Essentials
  3. Functional and Imperative Programming
  4. Concurrent and Distributed Programming
  5. Logic Programming

Reading Material

Tentative Course Syllabus

Date Topic Handouts Grade
08/28 Introduction to programming languages:  history, lambda calculus, syntax, semantics lecture1.pdf
08/31 Lambda calculus:  beta conversion, applicative and normal evaluation orders, Church-Rosser theorem, combinators
lecture2.pdf 1.oz
09/07 Higher order programming, Oz
lecture3.pdf 2.oz
09/11 Introduction to programming concepts: lists, pattern matching
Sections1.1-1.8.pdf 3.oz
09/14 Introduction to programming concepts: correctness, complexity
Sections1.9-1.17.pdf 4.oz
09/18 Declarative programming, grammars, syntax and semantics. Section2.1.pdf 5.oz
09/21 Single-assignment store, kernel language syntax Sections2.2-2.3.pdf 6.oz
09/25 Kernel language semantics: concepts, abstract machine Sections2.4.1-2.4.2.pdf 7.oz
09/28 Kernel language semantics: non-suspendable statements, closures Sections2.4.3-2.4.4.pdf 8.oz
10/02 Kernel language semantics: suspendable statements Sections2.4.5-2.7.pdf 9.oz
10/05 From kernel to practical language, memory management, exceptions -- Programming Assignment 1 Due 10/06 Sections2.5.pdf 10.oz20%
10/10 Iterative computation
Sections3.1-3.2.pdf 11.oz
10/12 Higher order programming, abstract data types, state
Sections3.6-3.7.pdf 12.oz
10/16 Dynamic and static typing, parameter passing mechanisms
Sections2.8.3,6.1-6.4.4.pdf 13.oz
Exam I review

Exam I
Concurrent object-oriented programming:  Java
Concurrent object-oriented programming:  active objects Sections7.2,7.8,8.6.pdf 14.oz
SALSA:  actors, token-passing continuations, join blocks, first-class continuations
Distributed programming:  universal naming, remote communication, actor migration SALSA-Distributed.pdf
Logic programming:  Horn clauses PLP11.3A.pdf
Prolog: resolution, unification, search, backtracking, cut -- Programming Assignment 2 Due 11/14 PLP11.3B.pdf20%
Prolog: arithmetic, equalities, I/O, meta-interpreters, natural language parsing PLP11.3C.pdf
Logic programming: accumulators, difference lists, Oz search 15.oz Sections3.4.3-3.4.4.pdf
Declarative concurrency
16.oz Chapter4.pdf
Lazy evaluation -- Programming Assignment 3 Due 12/01
17.oz Section4.5.pdf
Exam II Review

Exam II


Academic Integrity

The Rensselaer Handbook of Student Rights and Responsibilities defines several types of academic dishonesty, all of which are applicable to this class.  Students found in violation of academic dishonesty policies may receive a failing grade for this course.

Please contact the instructor if there is any question about academic (dis)honesty.

Last Updated -- August 28th, 2006.