Programming language syntax and semantics
Data types and type checking
Scope, bindings, and environments
Functional and logic programming paradigms, and comparison to other paradigms
Extensive coverage of a functional language
Programming languages covered: Racket, JavaScript, LintJS, Inform 7, Ruby, Rust, Prolog, Antlr, Java, C