Students
Tuition Fee
Not Available
Start Date
Not Available
Medium of studying
Not Available
Duration
Not Available
Details
Program Details
Degree
Masters
Major
Artificial Intelligence | Computer Programming | Software Development
Area of study
Information and Communication Technologies
Course Language
English
Intakes
Program start dateApplication deadline
2013-03-01-
About Program

Program Overview


Course Overview

The CSCI.4430/6969 Programming Languages course is designed to enable students to understand essential aspects of programming languages, including theoretical foundations, syntax, semantics, types, scope of variables, data abstraction, control abstraction, parameter passing, and expression evaluation mechanisms.


Course Description

This course will expose students to different programming paradigms, 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 students have successfully completed this course, they will be able to:


  • understand the essential aspects of programming languages, including theoretical foundations such as the lambda calculus, predicate calculus, and the actor model
  • compare and apply multiple programming paradigms
  • design and develop logic, functional, and concurrent (distributed and mobile) programs

Course Contents

  1. Introduction
    • Brief history of programming languages
    • Syntax
    • Semantics
    • Essentials
    • Paradigms
  2. Logic Programming
    • Horn clauses
    • Resolution and unification
    • Search and backtracking
  3. Functional and Imperative Programming
    • Lambda calculus
    • Scope of variables
    • Data abstraction/control abstraction
    • Static/dynamic scoping
    • Parameter passing mechanisms
    • Expression evaluation orders
    • Types
    • Recursion
    • Higher-order programming
    • Lazy evaluation
    • State (Imperative programming)
  4. Concurrent and Distributed Object-Oriented Programming
    • Actors
    • Synchronous vs asynchronous communication, message passing
    • Token-passing continuations, join blocks, first-class continuations
    • Universal naming, remote message passing, migration (Distributed 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/28 Logic programming: predicate calculus--Programming Assignment 1 Due 02/12 PLP11B.pdf, family.pl 20%
01/31 Prolog: resolution, unification, search, backtracking, cut, lists PLP11C.pdf, append.pl, crossword.pl, cut.pl, cut2.pl, cut3.pl, cut4.pl, cut5.pl, family2.pl, loop.pl, not2.pl
02/04 Prolog: arithmetic, equalities, I/O, meta-interpreters, natural language parsing PLP11D.pdf, browse.pl, nestedloop.pl, sentences.pl, sentences2.pl
02/07 Logic programming: accumulators PLP11E, Sections3.4.3-3.4.4.pdf, appenddl.pl, dlists.oz, accumulators.oz
02/11 Logic programming: difference lists flatten.pl, sentences3.pl
02/14 Lambda calculus: alpha-renaming, beta conversion, applicative and normal evaluation orders, Church-Rosser theorem, combinators LambdaCalculus.pdf
02/19 Higher order programming, Oz -- Programming Assignment 2 Due 03/01 LambdaCalculus2.pdf, combinators.oz, eta.oz, hop.oz, lambda-booleans.oz, lambda-numbers.oz, rec.oz, seq.oz 20%
02/21 Introduction to programming concepts: lists, pattern matching, correctness, complexity Chapter1.pdf, comb.oz, concepts.oz, lists.oz, pascal.oz, scope.oz, store.oz
02/25 Declarative programming, grammars, syntax and semantics Section2.1.pdf, rainy.oz, recursion.oz
02/28 Single-assignment store, kernel language syntax Sections2.2-2.3.pdf, single-assignment.oz
03/04 Kernel language semantics: concepts, abstract machine Sections2.4.1-2.4.2.pdf, kernel.oz, scope2.oz
03/07 Kernel language semantics: non-suspendable, suspendable statements, closures Sections2.4.3-2.4.4.pdf, dataflow.oz
03/18 From kernel to practical language, exceptions Sections2.4.5, 2.6, 2.7.pdf, case-semantics.oz, semantics.oz
03/21 Review for Exam I
03/25 Exam I 20%
03/28 Memory management, tail-form optimization, garbage collection Section2.5.pdf, memleak.oz
04/01 Exam I analysis
04/04 Iterative computation, higher order programming, abstract data types Sections3.1-3.2, 3.6-3.7.pdf, fold.oz, sqrt.oz, stackADT.oz
04/08 State, object-oriented programming, inheritance, polymorphism Sections6.1-6.4, 7.1-7.2.pdf, oop.oz, c.java, c1.java, c2.java, c3.java
04/11 Actors: a model of concurrent computation -- Programming Assignment 3 Due 04/26 actors.pdf 20%
04/15 SALSA concurrency: actor creation, asynchronous message passing, state encapsulation, token-passing continuations, named tokens, join blocks, first-class continuations SALSA-Concurrency.pdf, HelloWorld.salsa, Cell.salsa, CellTester.salsa, NDCellTester.salsa, DCellTester.salsa, Fibonacci.salsa, Calculator.salsa
04/18 SALSA distribution and mobility: universal naming, location-transparent communication, actor migration SALSA-Distributed.pdf, AddressBook.salsa, AddUser.salsa, Cell.salsa, GetCellValue.salsa, GetEmail.salsa, Migrate.salsa, MigrateBook.salsa, MigrateCell.salsa, MovingCellTester.salsa, TokenCellTester.salsa
04/22 Concurrent and distributed programming patterns SALSA-Patterns.pdf
04/25 Declarative concurrency Chapter4.pdf, dconcurrency.oz
04/29 Dynamic and static typing, parameter passing mechanisms, lazy evaluation Sections2.8.3, 4.5, 6.1-6.4.pdf, callbyneed.oz, lazy-eval.oz
05/02 Review for Exam II
05/06 Exam II 20%
Class Participation Extra-Credit 10%

Reading Material

  • Concepts, Techniques, and Models of Computer Programming by Van Roy and Haridi, 1st Edition, MIT Press, 2004 (Required Textbook)
  • Programming Distributed Computing Systems: A Foundational Approach by Carlos A. Varela, Chapters 2, 4, and 9
  • Programming Language Pragmatics by Scott, 2nd Edition, Morgan Kaufmann Publishers (Recommended Textbook)
  • Essentials of Programming Languages by Friedman, Wand, and Haynes, 2nd Edition, MIT Press (Recommended Textbook)

Software

  • Prolog
  • Oz
  • SALSA

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.


See More