CSCI.4430/6969 Programming Languages-- Spring 2011

Instructor:  Carlos Varela
Office:  Lally 308 (x 6912)
Office Hours:  Mondays and Thursdays, 1:30-2:30pm; or by appointment
Meeting Place:  Ricketts 211
Meeting Hours:  Mondays and Thursdays 10:00-11:50am
TAs: Qingling Wang and Scott Yaninas
TAs Office: Amos Eaton 217
TAs Office Hours:  Scott: Wed 2:30 - 4:00pm; Qingling: Tue 2:00-3:30pm Wed 1:00-2:30pm; or by appointment.
Home pagehttp://www.cs.rpi.edu/academics/courses/spring11/proglang/
For questions about the course, please email:  proglang AT cs DOT rpi DOT edu.


News

PA2 grades posted on LMS. (March 10, 2011).
PA1 grades posted on LMS. (February 18, 2011).
Programming Assignment 3 is available. (April 14, 2011)
Programming Assignment 2 is available. (February 14, 2011)
Programming Assignment 1 is available. (January 27, 2011)


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

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

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

02/07
Logic programming: accumulators, difference lists PLP11E,Sections3.4.3-3.4.pdf
accumulators.pl
accumulators.oz

02/10 Lambda calculus:  alpha-renaming, beta conversion, applicative and normal evaluation orders, Church-Rosser theorem, combinators
dlists.oz

02/14 Higher order programming, Oz -- Programming Assignment 2 Due 03/04 LambdaCalculus.ppt
lambda-calculus-chapter.pdf
combinators.oz
pa2.pdf
20%
02/17 Introduction to programming concepts: lists, pattern matching
LambdaCalculus2.pdf
eta.oz rec.oz seq.oz hop.oz
lambda-numbers.oz
lambda-booleans.oz

02/24 Introduction to programming concepts: correctness, complexity
Chapter1.pdf
scope.oz comb.oz lists.oz
pascal.oz concepts.oz store.oz

02/28 Declarative programming, grammars, syntax and semantics. Section2.1.pdf
recursion.oz

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

03/07 Kernel language semantics: concepts, abstract machine Sections2.4.1-2.4.2.pdf
kernel.oz rainy.oz

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

03/21 From kernel to practical language, exceptions Sections2.4.5,2.6,2.7.pdf
case-semantics.oz semantics.oz

03/24
Review for Exam I

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

04/04 Exam I analysis


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

04/11 State, object-oriented programming, inheritance, polymorphism
Sections6.1-6.4,7.1-7.2.pdf
oop.oz
c1.java c2.java c3.java

04/14
Actors:  a model of concurrent computation -- Programming Assignment 3 Due 04/29
actors-chapter.pdf
actors.pdf
20%
04/18 SALSA concurrency:  actor creation, asynchronous message passing, state encapsulation, token-passing continuations, named tokens, join blocks, first-class continuations SALSA-Concurrency.pdf
salsa-chapter.pdf
HelloWorld.salsa
Cell.salsa CellTester.salsa

04/21
SALSA distribution and mobility:  universal naming, location-transparent communication, actor migration SALSA-Distributed.pdf
Fibonacci.salsa Calculator.salsa
Cell.salsa MovingCellTester.salsa
MigrateCell.salsa GetCellValue.salsa
AddressBook.salsa AddUser.salsa
GetEmail.salsa MigrateBook.salsa
readme.txt


04/25
Concurrent and distributed programming patterns
SALSA-Patterns.pdf

04/28
Declarative concurrency
Chapter4.pdf
dconcurrency.oz

05/02
Dynamic and static typing, parameter passing mechanisms, lazy evaluation Sections2.8.3,4.5,6.1-6.4.pdf
lazy-eval.oz callbyneed.oz

05/05
Review for Exam II

05/09
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 will receive a failing grade for this course.

Please contact the instructor if there is any question about academic (dis)honesty.


Last Updated -- January 24th, 2011.