Problem solving emphasizing recursion, data abstraction, and higher-order functions. Introduction to types and type checking, modular programming, and reasoning about program correctness.
Prerequisites:
Quality:
Difficulty:
Remarks:
- Language(s) used: Haskell
- Learn new concepts that previously weren't covered in CS curriculum (lambda calculus)
- Starts off relatively easy, then near the end becomes very difficult