CSCI.4430/6430 Programming Languages-- Fall 2014

Instructor:  Carlos Varela
Office:  Lally 308 (x 6912)
Office Hours:  Tuesdays and Fridays, 4-4:50pm; or by appointment
Meeting Place:  Darrin 318
Meeting Hours:  Tuesdays and Fridays 2:00-3:50pm
TAs: Linyun Fu, Yuriy Stejko
TAs' Office Hours: Linyun: Mondays and Wednesdays 9-11am at Amos Eaton 217; Yuriy: Mondays 4-6 pm at Amos Eaton 217 and Thursdays 4-6 pm at the CS Lounge at Amos Eaton 119.
Home pagehttp://www.cs.rpi.edu/academics/courses/fall14/proglang/
LMS site: https://lms.rpi.edu
For questions about the course, please email:  proglang AT cs DOT rpi DOT edu.


News

The PA1 description is available at: http://www.cs.rpi.edu/academics/courses/fall14/proglang/pa1/pa1.html
The PA2 description is available at: http://www.cs.rpi.edu/academics/courses/fall14/proglang/pa2/pa2.html
The PA3 description is available at: http://www.cs.rpi.edu/academics/courses/fall14/proglang/pa3/pa3.html


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 Handout Grade
08/26 Introduction to programming languages:  history, syntax, semantics, essentials, paradigms.
Logic programming: introduction, Horn clauses
Introduction and PLP Chapter 11A rainy.pl
08/29
Logic programming:  predicate calculus--Programming Assignment 1 Due 09/15 PA1 description PLP Chapter 11B family.pl 20%
09/02
Prolog: resolution, unification, search, backtracking, cut, lists All PLP Chapter 11C append.pl crossword.pl cut.pl cut2.pl cut3.pl cut4.pl cut5.pl family2.pl loop.pl not2.pl
09/05
Prolog: arithmetic, equalities, I/O, meta-interpreters, natural language parsing All PLP Chapter 11D browse.pl nestedloop.pl sentences.pl sentences2.pl
09/09
Logic programming: accumulators All CTM Section 3.4.3 family.oz rainy.oz accumulators.pl accumulators.oz
09/12 Logic programming: difference lists
All CTM Section 3.4.4 dlists.oz dlists.pl flatten.pl sentences3.pl
09/16 Lambda calculus:  alpha-renaming, beta conversion, applicative and normal evaluation orders, Church-Rosser theorem, combinators PDCS Chapter 2A functions.oz
09/19 Higher order programming, Oz -- Programming Assignment 2 Due 10/06 All PDCS Chapter 2B Programming Assignment #2 seq.oz rec.oz lambda-numbers.oz lambda-booleans.oz hop.oz eta.oz combinators.oz 20%
09/23 Introduction to programming concepts: lists, pattern matching, correctness, complexity
All CTM Chapter 1 store.oz scope.oz pascal.oz lists.oz concepts.oz comb.oz
09/26 Declarative programming, grammars, syntax and semantics. CTM Chapter 2.1 random.oz sumlist.oz
09/30 Single-assignment store, kernel language syntax CTM Chapters 2.2 and 2.3 single-assignment.oz map.oz
10/03 Kernel language semantics: concepts, abstract machine CTM Chapters 2.4.1 and 2.4.2 scope2.oz kernel.oz foldr.oz
10/07 Kernel language semantics: non-suspendable, suspendable statements, closures CTM Chapters 2.4.3 and 2.4.4
10/10 From kernel to practical language, exceptions All CTM Chapters 2.4.5, 2.6 and 2.7 semantics.oz dataflow.oz case-semantics.oz
10/17
Review for Exam I
10/21
Exam I 20%
10/24 Memory management, tail-form optimization, garbage collection CTM Chapter 2.5 memleak.oz
10/28 Iterative computation, higher order programming, abstract data types
CTM Chapters 3.1, 3.2, 3.6 and 3.7 sqrt.oz fold.oz stackADT.oz
10/31 State, object-oriented programming, inheritance, polymorphism
All CTM Chapters 6.1-6.4, 7.1 and 7.2 oop.oz c.java c1.java c2.java c3.java
11/04 Exam I analysis

11/07
Actors:  a model of concurrent computation -- Programming Assignment 3 Due 11/24
PDCS Chapter 4 Part A Programming Assignment #3 Description 20%
11/11
SALSA concurrency:  actor creation, asynchronous message passing, state encapsulation, token-passing continuations, named tokens, join blocks, first-class continuations All PDCS Chapter 9 Part A helloworld cell fibonacci fibonacci2
11/14
SALSA distribution and mobility:  universal naming, location-transparent communication, actor migration
PDCS Chapter 9 Part B addressbook mcell migrate
11/18
Concurrent and distributed programming patterns
PDCS Chapter 9 Part C
11/21
Declarative concurrency
CTM Chapter 4 dconcurrency.oz
11/25
Dynamic and static typing, parameter passing mechanisms, lazy evaluation CTM Chapters 2.8.3, 4.5, and 6.1-6.4 callbyneed.oz lazy-eval.oz
12/02
Review for Exam II
12/05
Exam II 20%
Class Participation Extra-Credit 10%


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 -- August 25th, 2014.