DPLspr13 /
Syllabus
Here is a chronological presentation of the course material.
- Week 1. Introduction to functional programming and Haskell.
- Week 2. Building an interpreter and operational semantics.
- Week 3. Real language #1: Ruby.
- Week 4. Real language #2: Io.
- Week 5. Building an Interpreter: An object system.
- Week 6. Real language #3: Prolog.
- Week 7. Real language #4: Erlang.
- Week 8. Building an interpreter: A functional programming language and denotational semantics.
- Week 9. Real language #5: Scala.
- Week 10. Building an interpreter for the lambda calculus.
- Week 11. Real language #6: Clojure.
- Week 12. Deeper into real language #7: Haskell.
- Week 13. Deeper into the lambda calculus.
A conceptual view
Here is an orthogonal take on the material.
Language Design Choices
- Different Languages Are Different
- Compiled vs. Interpreted
- Type System: Dynamic vs. Static, Save vs. Unsafe, Weak vs. Strong
- Procedural, OO, or Functional
- Pointers and Garbage Collection
- Concatenative, Logical, and Array Languages
- Concurrency and Parallelism
The Seven Languages
- Ruby - Dynamic, OO
- Io - Dynamic, Prototype-Based OO
- Prolog - Logic Language
- Erlang - Dynamic, Functional, Message-Passing Concurrecy
- Scala - Static, Multi-Paradigm
- Clojure - Dynamic, LISP, STM Concurrency
- Haskell - Static Pure Functional