CSE-341The first half of the quarter
University of Washington, Seattle
(C) 1999, Greg J. Badros—All Rights Reserved
Disclaimer… :-)
This is not necessarily a comprehensive listing of all the topics we have covered thus far. Any material from lecture notes, required readings, section notes, assignments, or the mailing list may appear on the exam.
Major topics
- Functional programming
- Scheme (with some imperative features)
- Haskell (purely functional)
- Logic/Relational programming
Scheme
- Suppressing evaluation with quote
- Types of values and dynamic typing
- Anonymous procedures via lambda
- Bindings instead of assignment
More Scheme...
- Recursion, tail-recursion
- Lists, cons cells, car, cdr and friends
- Higher order functions
- procedures as arguments to other procedures
- procedures returned from factory procedures
- Free variables, lexical vs. dynamic scope
Even more Scheme...
- apply procedure, rest arguments
- Side-effects
- assignment
- list-surgery
- sequencing
Haskell
- Lists, but homogenous and proper
- Two-dimensional layout syntax
- Currying, partial application
More Haskell...
- Static typing, polymorphic types
- Type inference, type unification
- Lazy evaluation—outside-in
Prolog
- Specialized language for search
- Facts + rules, and queries
- Variables, variable scope
- Eight queens and backtracking
- Multiple solutions, working backwards
More prolog
- Pattern matching and unification
- Constraint Logic Programming (CLP)
- Built-in search algorithm