{:title ["Programming Languages"], :rank ["computation" "families_of_languages" "clojure"]}
Theory of computation
- Turing Machine
- $\lambda$-calculus
Overview of programming languages
- Imperative programming: controlling states
- Functional programming: controlling expressions
Functional programming and $\lambda$-calculus
- Functions and data
- s-expressions, homoiconicity and Lisp
Lisp programming using Clojure
- Syntax and features of Clojure
- Sequence processing
- Lazy evaluation
- Concurrency
- Macros
Type Systems
- Static versus dynamic typing
- Object oriented programming with unified typing
- Types, type checking, and type inference
Object-oriented programming with static types using Scala
- Syntax and features of Scala
- Type system of Scala
- Extensible syntax of Scala
Other programming paradigms