View this PageEdit this PageAttachments to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide

Semester Overview

Semester Overview


We will be reading and discussing the book Programming Language Pragmatics, 2nd ed. by Michael Scott.
Readings will progress linearly through the book.

Introductory material

  1. Introduction—language design, compilation and interpretation
  2. Program Language Syntax—scanning and parsing, connection to automata theory
  3. Names, Scopes, and Bindings—binding time, object lifetime, scoping rules
  4. Semantic Analysis—attribute grammars, decorated syntax trees, etc.

Core issues in language design

  1. Control Flow—expression evaluation, structured and unstructured flow, iteration and recursion, higher-level control structures
  2. Data types—type systems and type checking, record and arrays, recursive structures
  3. Subroutines and Control Abstractions
  4. Data Abstraction and Object Orientation

Alternative Programming Models — we will select from among the following areas

  1. Functional Languages—examples (clisp, Scheme, APL/J, Mathematica) and theory (lambda calculus)
  2. Logic Languages—Prolog examples, theoretical discussion of advantages and drawbacks
  3. Concurrency—multithreaded computation, shared memory vs. message-passing, synchronization issues
  4. Scripting Languages—higher-level data types and control structures, dynamic binding, interpreted languages
  5. Dataflow languages and languages for computation on massively parallel systems

Along with labs, readings, and participation in class discussions, students will also choose
a language for a final project, including a paper discussing its design features and a class
presentation including demos of the language and its interesting features.