CSCI.4430/6969 Programming Languages-- Fall 2009

Instructor:  Carlos Varela
Office:  Lally 308 (x 6912)
Office Hours:  Tuesdays and Fridays, 4-5pm; or by appointment
Meeting Place:  Darrin 318
Meeting Hours:  Tuesdays and Fridays 2:00-3:50pm
TAs: Wei Huang and Yousaf Shah
TAs Office: Amos Eaton 217
TAs Office Hours: Tuesday 10:00AM-11:30AM and Wednesday 9:00AM-10:30AM (Yousaf Shah), Monday 04:00PM-05:30PM and Thursday 04:00PM-05:30PM (Wei Huang), or by appointment.
Home pagehttp://www.cs.rpi.edu/academics/courses/fall09/proglang/
For questions about the course, please email:  proglang AT cs DOT rpi DOT edu.
RPI LMS Web Page


News

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


Course Description

This course will enable students to understand 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.  Students will also be exposed to different programming paradigms (computation models) including logic programming, functional programming, and concurrent and distributed programming. Students will write programming assignments in Prolog, Oz, and SALSA.

Pre-requisites

CSCI.2400 Models of Computation.

Course Themes

Programming Language Essentials. Logic, Functional, Concurrent Object-Oriented Programming Paradigms.

Learning Outcomes

When the students have successfully completed this course, they will be able to:


Course Contents

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


Tentative Course Syllabus

Date Topic Handouts Grade
09/01 Introduction to programming languages:  history, syntax, semantics, essentials, paradigms.
Logic programming: introduction, Horn clauses
Intro,PLP11A.pdf
rainy.pl

09/04
Logic programming:  predicate calculus--Programming Assignment 1 Due 09/21 PLP11B.pdf
Assignment-1
20%
09/08
Prolog: resolution, unification, search, backtracking, cut, lists PLP11C.pdf
cut.pl  cut2.pl 
cut3.pl  cut4.pl 
cut5.pl  loop.pl 
not2.pl  append.pl

09/11
Prolog: arithmetic, equalities, I/O, meta-interpreters, natural language parsing PLP11D.pdf
SourceCodes_PLP11D

09/15
Logic programming: accumulators, difference lists PLP11E,Sections3.4.3-3.4.4.pdf
accumulators.oz
accumulators.pl
dlists.oz

09/18 Lambda calculus:  alpha-renaming, beta conversion, applicative and normal evaluation orders, Church-Rosser theorem, combinators
combinators

09/22 Introduction to programming concepts: lists, pattern matching, Oz -- Programming Assignment 2 Due 10/13 Sections1.1-1.8.pdf
scope.oz comb.oz
lists.oz pascal.oz rainy.oz
20%
09/25 Introduction to programming concepts: correctness, complexity
Sections1.9-1.17.pdf concepts.oz store.oz
09/29 Higher order programming
eta.oz hop.oz lambda-booleans.oz
lambda-numbers.oz rec.oz seq.oz

10/02 Declarative programming, grammars, syntax and semantics. Section2.1.pdf scope2.oz
10/06 Single-assignment store, kernel language syntax Sections2.2-2.3.pdf
single-assignment.oz recursion.oz

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

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

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

10/23
Exam I review

10/27
Exam I
20%
10/30 Memory management, tail-form optimization, garbage collection. Section2.5.pdf
memleak.oz

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

11/06 Exam I Solutions


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

11/13
Concurrent OO programming in SALSA: actor creation, message passing, internal state, token-passing continuations, join blocks, first-class continuations
SALSA-Concurrency
Salsa_Examples
20%
11/17
Distributed programming in SALSA: universal naming, remote communication, actor migration SALSA-Distributed.pdf
dist_examples.zip

11/20
Concurrent and Distributed Programming Patterns in SALSA
SALSA-Patterns

11/24
No Lecture