Final Exam Topics
- Basic OCaml programming
- Expressions and functions
- Let, case, if
- Types
- Tuples, lists, records
- Datatypes
- Pattern matching
- Side effects, refs
- Higher-order functions
- Currying, composition
- Fold, map, filter
- Polymorphic datatypes and functions
- Structures and signatures
- Exceptions
- Tools for reasoning about correctness and complexity
- Inductive proofs
- Propositional and first-order logic
- Reasoning about resources
- Asymptotic complexity
- Recurrence relations
- Amortized analysis
- Aggregate method
- Banker's method
- Physicist's method
- Data structures
- Balanced trees
- Huffman trees
- Disjoint set forest/union-find
- Hashtables
- Substitution and environment models
- Concurrency
- Deadlock
- Mutual exclusion
- Mutexes and condition variables (wait, signal)
- Graphs
- Adjacency lists, adjacency matrices
- Depth- and breadth-first search
- Topological sort
- Types
- Type checking
- Polymorphic types
- Type inference and unification
- Tail recursion
- Streams
- Storage management
- Mark and sweep
- Reference counting
- Generational
- Continuations
- Lambda calculus