CSCI.4430/6969 Programming Languages-- Fall 2005


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.

Course WebCT page


News

Programming Assignment 4 is available.

Programming Assignment 3 is available.
Programming Assignment 2 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 (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.

 


Course Contents

  1. Introduction
  2. Programming Language Concepts
  3. Functional Programming
  4. Object-Oriented Programming
  5. Concurrent and Distributed Programming
  6. Logic Programming

Reading Material


Tentative Course Syllabus

Date

Topic

Handouts

Grade

08/29

Introduction to programming languages:  history, lambda calculus, syntax, semantics

lecture1.pdf

 

09/01

Lambda calculus:  beta conversion, Church-Rosser theorem, applicative and normal order forms, combinators

lecture2.pdf
1.oz

 

09/08

Higher order programming, Oz

lecture3.pdf
2.oz

 

09/12

Introduction to programming concepts

Chapter1.ppt
3.oz

 

09/15

Declarative programming, grammars, syntax and semantics.

Section2.1.ppt
4.oz

 

09/19

Single-assignment store, kernel language syntax

Sections2.2-2.3.ppt
5.oz

 

09/22

Kernel language semantics

Section2.4.ppt
6.oz

 

09/26

From kernel to practical language, memory management, exceptions -- Programming Assignment 1 Due 09/27

Sections2.5-2.7.ppt
7.oz

15%

09/29

Abstract data types, state, objects, object system implementation

Sections3.7,6.4,7.6.ppt
8.oz

 

10/03

Object oriented programming:  classes, inheritance, polymorphism

Sections7.1-7.4.ppt
9.oz
dd/c1.java
dd/c2.java
dd/c3.java

 

10/06

Java, method dispatching and inheritance

Java,Sections7.5,7.7.ppt
mm/c.java
mm/c1.java
mm/c2.java

 

10/11

JavaCC, partial exam review

JavaCC.ppt

 

10/13

Partial Exam

 

20%

10/17

Active objects -- Programming Assignment 2 Due 10/18

Section7.8.ppt
10.oz

15%

10/20

Concurrent programming:  pi calculus, actors

pi-calculus.pdf
actors.pdf

 

10/24

SALSA:  actor creation, message passing, internal state; token passing continuations, join blocks, first class continuations

SALSA-Concurrency.ppt
HelloWorld.salsa
Fibonacci.salsa
Migrate.salsa

 

10/27

SALSA Distributed programming:  universal naming, remote communication, actor migration

SALSA-WWC.ppt
Cell.salsa, MovingCellTester.salsa
AddressBook.salsa, AddUser.salsa, GetEmail.salsa, MigrateBook.salsa

 

10/31

Dynamic and static typing, type checking and type inference, parameter passing mechanisms

Sections2.8.3,6.4.4.ppt
11.oz
File.salsa, WriteLine.salsa

 

11/03

Declarative concurrency

Chapter4.ppt
HelloWorld2.salsa, HelloWorld3.salsa
Fibonacci10.salsa

 

11/07

Logic programming:  predicate calculus-- Programming Assignment 3 Due 11/08

PLP11.3A.pdf
PLP11.3B.pdf

15%

11/10

Prolog: resolution, unification, search, backtracking, cut.
Peter van Roy Lecture, 4pm, JEC 3117

PLP11.3C.pdf
family.pl
rainy.pl, rainy[2, 3, 4, 5, 6, 7, 8, 9].pl
if.pl, loop.pl

 

11/14

No lecture.

Peter Van Roy's Lecture

 

11/17

Prolog: arithmetic, equalities, I/O, meta-interpreters, natural language parsing

PLP11.3D.pdf
crossword.pl
sentences.pl, sentences2.pl
browse.pl
clause.pl
tictactoe.pl

 

11/21

Logic Programming: Accumulators, difference lists, Oz search

Sections3.4.3-4.ppt
family2.pl, not2.pl
12.oz

 

11/28

Higher order programming revisited, control abstractions -- Programming Assignment 4 Due 11/29

Sections3.1-2,3.6.ppt
13.oz

15%

12/01

Lazy evaluation

Section4.5.ppt
14.oz

 

12/05

Final exam review

 

 

12/08

Final Exam

 

20%

 


Software


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 -- December 1st, 2005.