Instructor: Carlos Varela
Office: 109 Amos Eaton (x 6912)
Office Hours: Mo, Th, 2-3pm; or by appointment
Meeting Place: Amos Eaton, Room 214
Meeting Hours: Mo, Th, 12:00-1:50pm
TAs: Travis Desell, Ying Yang
Ying's office hours: Amos Eaton 217, Wednesdays 1:30-4:30PM
Travis's office hours: Amos Eaton 117, Tuesday, 1:00-4:00PM
For questions about the course, please email: proglang@cs.rpi.edu.
Programming
Assignment 4 is available.
Programming
Assignment 3 is available.
Programming
Assignment 2 is available.
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 (including object-oriented programming), concurrent and distributed programming, and logic programming. The course will include programming assignments in Oz, Java, SALSA and Prolog.
Pre-requisites
Models of Computation. The student should have at least one year of experience with a high-level programming language.
Date |
Topic |
Handouts |
Grade |
08/29 |
Introduction to programming languages: history, lambda calculus, syntax, semantics |
|
|
09/01 |
Lambda calculus: beta conversion, Church-Rosser theorem, applicative and normal order forms, combinators |
|
|
09/08 |
Higher order programming, Oz |
|
|
09/12 |
Introduction to programming concepts |
|
|
09/15 |
Declarative programming, grammars, syntax and semantics. |
|
|
09/19 |
Single-assignment store, kernel language syntax |
|
|
09/22 |
Kernel language semantics |
|
|
09/26 |
From kernel to practical language, memory management, exceptions -- Programming Assignment 1 Due 09/27 |
15% |
|
09/29 |
Abstract data types, state, objects, object system implementation |
|
|
10/03 |
Object oriented programming: classes, inheritance, polymorphism |
|
|
10/06 |
Java, method dispatching and inheritance |
|
|
10/11 |
JavaCC, partial exam review |
|
|
10/13 |
Partial Exam |
|
20% |
10/17 |
Active objects -- Programming Assignment 2 Due 10/18 |
15% |
|
10/20 |
Concurrent programming: pi calculus, actors |
|
|
10/24 |
SALSA: actor creation, message passing, internal state; token passing continuations, join blocks, first class continuations |
SALSA-Concurrency.ppt |
|
10/27 |
SALSA Distributed programming: universal naming, remote communication, actor migration |
SALSA-WWC.ppt |
|
10/31 |
Dynamic and static typing, type checking and type inference, parameter passing mechanisms |
|
|
11/03 |
Declarative concurrency |
Chapter4.ppt |
|
11/07 |
Logic programming: predicate calculus-- Programming Assignment 3 Due 11/08 |
15% |
|
11/10 |
Prolog: resolution, unification, search, backtracking, cut. |
PLP11.3C.pdf |
|
11/14 |
No lecture. |
|
|
11/17 |
Prolog: arithmetic, equalities, I/O, meta-interpreters, natural language parsing |
PLP11.3D.pdf |
|
11/21 |
Logic Programming: Accumulators, difference lists, Oz search |
|
|
11/28 |
Higher order programming revisited, control abstractions -- Programming Assignment 4 Due 11/29 |
15% |
|
12/01 |
Lazy evaluation |
|
|
12/05 |
Final exam review |
|
|
12/08 |
Final Exam |
|
20% |
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 -- December 1st, 2005.