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
- Introduction—language design, compilation and interpretation
- Program Language Syntax—scanning and parsing, connection to automata theory
- Names, Scopes, and Bindings—binding time, object lifetime, scoping rules
- Semantic Analysis—attribute grammars, decorated syntax trees, etc.
Core issues in language design
- Control Flow—expression evaluation, structured and unstructured flow, iteration and recursion, higher-level control structures
- Data types—type systems and type checking, record and arrays, recursive structures
- Subroutines and Control Abstractions
- Data Abstraction and Object Orientation
Alternative Programming Models — we will select from among the following areas
- Functional Languages—examples (clisp, Scheme, APL/J, Mathematica) and theory (lambda calculus)
- Logic Languages—Prolog examples, theoretical discussion of advantages and drawbacks
- Concurrency—multithreaded computation, shared memory vs. message-passing, synchronization issues
- Scripting Languages—higher-level data types and control structures, dynamic binding, interpreted languages
- 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.