Major part of the course is based on the book:
Seif Harid, Peter Van Roy:
Concepts, Techniques, and Models of Computer Programming,
MIT Press, March 2004.
TAMU bookstore should have plenty of copies.
The topics we will cover from the book include the following
(the relevant chapters include 1 -- 7 and 9):
-
Organization, overview, getting started
- Programming concepts: compound values, partial values, lists,
pattern matching
- Programming concepts: Correctness, complexity, higher-order programming
- Syntax specification; kernel language syntax
- Semantics, kernel language, computational model
- Abstract machine of the kernel language
- Abstract machine: procedures, lexical scoping, recursive procedures,
last call optimization
- Extending kernel language: exception handling etc.
- Declarative concurrency: threads, data flow, streams
- Lazy evaluation
- Declarative vs. Explicit state
- Reasoning with state and in OO programming
- Relational programming
- Language semantics
From outside the book, topics we may cover:
-
Lambda calculus and its relevance for programming language design
- Static typing, reasoning about type systems
- Module systems
- Interesting language features: generics, monads, continuations
- New trends in programming languages, and programming language research
(AOP, IP, rich type systems)