CSCI.4430/6969 Programming Languages-- Fall 2003
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-1:50pm
TAs: Sergej Roytman, Jeff Baumes
Jeff's Office Hours: Lally 01B - Tu, Fr, 11:30am-1:30pm,
or by appointment
Sergej's Office Hours: Lally 01B - We, 10:00am-2:00pm,
or by appointment
Course WebCT page
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-- developing language interpreters built in Scheme.
Beyond functional programming, we will study imperative programming (including
object-oriented programming), logic programming, and concurrent programming
paradigms. The course will include programming assignments in Scheme,
Java, Prolog, and SALSA.
Pre-requisites
Models of Computation. The student should have at least one year
of experience with a high-level programming language.
Course Contents
-
Introduction
-
History of Programming Languages
-
Lambda-Calculus
-
Syntax and Semantics
-
Essentials
-
Paradigms
-
Programming Language Essentials
-
Functional Programming with Scheme
-
Scope of Variables
-
Recursive programming
-
Data Abstraction/Control Abstraction
-
Imperative Programming
-
Static/Dynamic Scoping
-
Parameter Passing Mechanisms
-
Types
-
Implementation of Recursion: Continuation Passing Style, Tail Form, Imperative
Form.
-
Object-Oriented Programming
-
Objects and Classes
-
Inheritance
-
Objects and Types
-
Logic Programming
-
Predicate Calculus
-
Horn Clauses
-
Resolution and Unification
-
Search and Backtracking
-
Concurrent and Distributed Programming
-
Pi-Calculus, Actors
-
Synchronous, and asynchronous communication, Message Passing
-
Token-Passing Continuations, Join Continuations, First-Class Continuations
-
Distributed Programming: Universal Naming, Remote Message Sending
Protocol, Migration
Programming Assignment #1
Programming Assignment #2
Programming Assignment #3
Programming Assignment #4
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 18, 2003.