Course Modules¶
An overview of course modules will be posted here as they're published. To start:
- 01.1: Welcome to Programming Languages — the history of programming languages, what CS 131 is (and isn't), and the three big ideas that run through the whole course.
- 02.1: Introduction to Haskell and Functional Programming — your first real Haskell: values, functions, bindings, and a first taste of pattern matching.
- 02.2: Functions = Values — immutability and what it buys you, currying, and seeing functions themselves as ordinary values you can pass around and combine.
- 03.1: Lists, Tuples, Pattern Matching, and Parameterized Types — structured data in Haskell: building and taking apart lists and tuples,
mapandfilter, and reading type variables likeain[a]. - 03.2: Haskell Data Types, Pattern Matching, and Type Classes — defining your own data with
data, constructors as functions, recursive types and the functions that mirror them, and whatderiving (Show, Eq, Ord)actually means. - 04.1: Code as Data, Evaluating Expressions — expressions vs. statements, syntax vs. semantics, concrete vs. abstract syntax, and representing and evaluating arithmetic expressions as recursive Haskell data.
- 04.2: Representing Functions — representing function definitions and applications as data, explaining application via substitution, call-by-name vs. call-by-value, and currying inside the interpreter.
- 05.1: Environments, Scope, and Closures — replacing substitution with an environment of bindings, adding
letas syntactic sugar for function application, dynamic vs. static scope, and closures as a function paired with its defining environment.
Coming soon
The rest of the module list will be posted here as the semester develops.