CSCI.4430/6969 Programming Languages-- Spring 2010

Instructor:  Carlos Varela
Office:  Lally 308 (x 6912)
Office Hours:  Mondays and Thursdays, 12-1pm; or by appointment
Meeting Place:  Low 4050
Meeting Hours:  Mondays and Thursdays 10:00-11:50am
TAs: Wei Huang and Yousaf Shah
TAs Office: Amos Eaton 217
TAs Office Hours: Wei Huang: Thursday 2:00-3:30pm, Friday 10:00-11:30am; Yousaf Shah: Tuesday 09:30-11:00am and Wednesday 9:00-10:30am; or by appointment.
Home pagehttp://www.cs.rpi.edu/academics/courses/spring10/proglang/
For questions about the course, please email:  proglang AT cs DOT rpi DOT edu.


News

Programming Assignment 3 is available (April 15th, 2010)
PA2 Grade released. Some test cases can be found here (Any request to re-evaluate a grade must be made within two weeks, that is, before April 7th) (March 23rd, 2010)
Programming Assignment 2 is available (February 18th, 2010)
Programming Assignment 1 is available (January 28th, 2010)


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
01/25 Introduction to programming languages:  history, syntax, semantics, essentials, paradigms.
Logic programming: introduction, Horn clauses
Intro,PLP11A.pdf
rainy.pl crossword.pl

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

02/04
Prolog: arithmetic, equalities, I/O, meta-interpreters, natural language parsing PLP11D.pdf
browse.pl sentences.pl sentences2.pl
clause.pl

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

02/11 Lambda calculus:  alpha-renaming, beta conversion, applicative and normal evaluation orders, Church-Rosser theorem, combinators
LambdaCalculus.pdf combinators.oz
02/18 Higher order programming, Oz -- Programming Assignment 2 Due 03/05 lec_021810.pdf eta.oz hop.oz lambda-booleans.oz
lambda-numbers.oz rec.oz seq.oz
20%
02/22 Introduction to programming concepts: lists, pattern matching
Sections1.1-1.8.pdf scope.oz comb.oz
lists.oz pascal.oz rainy.oz

02/25 Introduction to programming concepts: correctness, complexity
Sections1.9-1.17.pdf concepts.oz store.oz

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

03/15 Kernel language semantics: concepts, abstract machine kernel.oz Sections2.4.1-2.4.2.pdf
03/18 Kernel language semantics: non-suspendable, suspendable statements, closures Sections2.4.3-2.4.4.pdf dataflow.oz
03/22 From kernel to practical language, exceptions Sections2.4.5,2.6,2.7.pdf semantics.oz

03/25
Exam I review

03/29
Exam I
20%
04/01 Memory management, tail-form optimization, garbage collection Section2.5.pdf memleak.oz

04/05 Exam I Analysis


04/08 Iterative computation, higher order programming, abstract data types
Sections3.1-3.2,3.6-3.7.pdf sqrt.oz fold.oz stackADT.oz
04/12 Dynamic and static typing, parameter passing mechanisms, State
Sections2.8.3,6.1-6.4.4.pdf types.oz
parameterpassing.oz

04/15
Actors:  A Model of Concurrent Computation -- Programming Assignment 3 Due 04/30
actors1.pdf actors2.pdf
20%
04/19
SALSA Concurrency:  actor creation, asynchronous message passing, state encapsulation, token-passing continuations, join blocks, first-class continuations, named tokens SALSA-Concurrency.pdf thread_problem.pdf salsa_examples.zip

04/22
SALSA Distribution and Mobility:  universal naming, location-transparent communication, actor migration
SALSA-Distributed.pdf dist_examples.zip

04/26
Concurrent and Distributed Programming Patterns

SALSA-Patterns.pdf
SALSA-Patterns.pps

04/29
Declarative concurrency
Chapter4.pdf
dconcurrency.oz


05/03
Lazy evaluation Section4.5.pdf
lazy-eval.oz

05/06
Exam II review callbyneed.oz

05/10
Exam II
20%
Class Participation Extra-Credit
5%


Reading Material


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 -- Feb 18th, 2010.