Contents (hide)
  1 Goal:
 1 Course plan:
  1.1 I. Chapter 1: Functional programming I
– The elements of programming

  1.2 II. Chapter 2: Functional programming II
– High order procedures and
verification of simple programs.

  1.3 III. Chapter 3: Functional programming
III – Abstraction with Data

  1.4 IV. Chapter 4: Imperative programming
– Introducing State

  1.5 V. Chapter 5: Evaluators for functional
programming (in Scheme).

  1.6 VI. Chapter 6: Statically typed
Functional programming – Programming
in ML.

  1.7 VII. Chapter 7: Logic programming –
Programming in Prolog.

Goal:


Provide a wide understanding of the principles of programming languages, problem solving, program construction, and software design. Programming languages: Scheme, ML, Prolog.

Course plan:

I. Chapter 1: Functional programming I – The elements of programming

  1. Expressions, naming, procedures, symbols, conditionals.
  2. Types.
  3. Contracts
  4. Syntax and operational semantics.
  5. Static-dynamic scoping.

II. Chapter 2: Functional programming II – High order procedures and verification of simple programs.

  1. Procedures and the processes they generate.
  2. High order procedures.
  3. Simple program verification.

III. Chapter 3: Functional programming III – Abstraction with Data

  1. Data abstraction with procedures.
  2. Polymorphic type checking.
  3. Lists.
  4. Sequence based interface operations.
  5. * Streams.
  6. * Interface implementation in a functional language.

IV. Chapter 4: Imperative programming – Introducing State

  1. Assignment and local state.
  2. The environment model operational semantics: Replacing substitution by environments.
  3. Implementing Object-Oriented programming with closures.
  4. Modeling with mutable data.

V. Chapter 5: Evaluators for functional programming (in Scheme).

  1. The basic evaluator.
  2. Analyzer: Separating syntactic analysis from evaluation.
  3. * Lazy evaluator.
  4. Continuation Passing Style (CPS).

VI. Chapter 6: Statically typed Functional programming – Programming in ML.

  1. Polymorphic types.
  2. Static type checking.
  3. Type inference.
  4. Pattern matching based function call.

VII. Chapter 7: Logic programming – Programming in Prolog.

  1. Relational logic programming.
  2. Full logic programming.
  3. Prolog programming.
  4. Implementing evaluators for logic programming (in Prolog).

* Sections marked with "*" may be skipped if time is short.