CSCI.4430/6969 Programming Languages-- Fall 2007

Instructor:  Carlos Varela
Office:  Lally 308 (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 5:00-6:30pm and We 1-2pm

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

WebCT


News


Course Objectives

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

Pre-requisites

CSCI.2400 Models of Computation.


Course Contents

  1. Introduction
  2. Logic Programming
  3. Functional and Imperative Programming
  4. Concurrent and Distributed Object-Oriented Programming


Reading Material


Tentative Course Syllabus

Date Topic Handouts Grade
08/27 Introduction to programming languages:  history, syntax, semantics, essentials, paradigms.
Logic programming: introduction, Horn clauses
Intro,PLP11.3A.pdf
rainy.pl

08/30
Logic programming:  predicate calculus--Programming Assignment 1 Due 09/21 PLP11.3B.pdf 20%
09/06
Prolog: resolution, unification, search, backtracking, cut, lists PLP11.3C.pdf
append.pl, cut.pl, cut2.pl, cut3.pl, cut4.pl, cut5.pl, loop.pl, not2.pl

09/10
Prolog: arithmetic, equalities, I/O, meta-interpreters, natural language parsing PLP11.3D.pdf
browse.pl, sentences.pl, sentences2.pl

09/13
Logic programming: accumulators, difference lists PLP11.3E,Sections3.4.3-3.4.4.pdf
accumulators.pl, accumulators.oz, dlists.oz

09/17 Lambda calculus:  alpha-renaming, beta conversion, applicative and normal evaluation orders, Church-Rosser theorem, combinators
lambda1.pdf
combinators.oz

09/20 Higher order programming, Oz -- Programming Assignment 2 Due 10/12 lambda2.pdf
eta.oz, seq.oz, rec.oz, hop.oz, lambda-numbers.oz, lambda-booleans.oz
20%
09/24 Introduction to programming concepts: lists, pattern matching, correctness, complexity, lazy functions
Sections1.1-1.8.pdf
scope.oz, comb.oz, lists.oz, pascal.oz, rainy.oz

09/27 Introduction to programming concepts: concurrency, dataflow, state, objects, classes, nondeterminism, atomicity
Sections1.9-1.17.pdf
concepts.oz, store.oz

10/01 Declarative programming, grammars, syntax and semantics. Section2.1.pdf
scope2.oz

10/04 Single-assignment store, kernel language syntax Sections2.2-2.3.pdf
single-assignment.oz

10/09 Kernel language semantics: concepts, abstract machine Sections2.4.1-2.4.2.pdf
kernel.oz

10/11 Kernel language semantics: non-suspendable, suspendable statements, closures Sections2.4.3-2.4.4.pdf
dataflow.oz, recursion.oz

10/15 From kernel to practical language, exceptions Sections2.4.5-2.7.pdf
semantics.oz

10/18 Memory management, tail-form optimization, garbage collection. Section2.5.pdf
memleak.oz

10/22
Exam I review

10/25
Exam I
20%
10/29
Concurrent object-oriented programming:  Java -- Programming Assignment 3 Due 11/20
Java,Sections7.7,8.6.pdf
mm/c.java, mm/c1.java, mm/c2.java
20%
11/01
Concurrent OO programming in SALSA:  actor creation, message passing, internal state, token-passing continuations, join blocks, first-class continuations SALSA-Concurrency.pdf
examples/helloworld/HelloWorld.salsa
examples/cell/Cell.salsa, CellTester.salsa
examples/fibonacci/Fibonacci.salsa, Calculator.salsa
examples/fibonacci2/Fibonacci.salsa

11/05 No Lecture


11/08
Distributed programming in SALSA:  universal naming, remote communication, actor migration
SALSA-Distributed.pdf
dist/examples/migrate/Migrate.salsa
dist/examples/cell/Cell.salsa, MovingCellTester.salsa, MigrateCell.salsa, GetCellValue.salsa

11/12
Concurrent and Distributed Programming Patterns in SALSA
SALSA-Patterns.pdf
dist/examples/addressbook/AddressBook.salsa, AddUser.salsa, MigrateBook.salsa, GetEmail.salsa
dist/examples/lock/File.salsa,WriteLine.salsa

11/15 Iterative computation, higher order programming, abstract data types, state
Sections3.1-3.2,3.6-3.7.pdf
sqrt.oz, fold.oz, stackADT.oz

11/19 Dynamic and static typing, parameter passing mechanisms
Sections2.8.3,6.1-6.4.4.pdf
types.oz, parameterpassing.oz

11/26
Declarative concurrency
Chapter4.pdf
dconcurrency.oz

11/29
Lazy evaluation Section4.5.pdf
lazy-eval.oz

12/03
Exam II review

12/06
Exam II
20%

Class Participation Extra Credit
5%


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 -- November, 2007.