What to expect: Here are the sorts of questions I tend to ask:

- Define terms in your own words.
- Sketch the execution of an algorithm. For example, show me the steps in the POP algorithm.
- Give pseudocode describing an algorithm.
- Give the setup for a problem.
- Compare different algorithms and their strengths/weaknesses.
- Explain why an algorithm has the characteristics it does. Why is backward chaining not complete?

Here are the sorts of questions I will not ask.

- Write syntactically correct Python code. (I may ask you to write pseudoode, but I'll be interested in program correctness, not whether every bracket and colon is in the right place)
- Multiple choice questions.
- "Trick" questions - the point of this exam is to test your knowledge of the topics we've covered. I may ask you hard questions, but I won't ask things that are deliberately misleading or deceptive.

Potential exam topics:

- NLP - chunking and tagging
- Propositional logic
- Definitions - sound, complete, tautology, contradition, modus ponens, etc
- Inference: forward chaining, backward chaining, resolution
- First-Order logic
- Encoding sentences
- Quantification
- Inference: forward chaining, backward chaining, resolution
- Ontologies
- Design principles
- Definitions: Closure axioms, semantic network, OWL, competency questions, etc.
- Planning
- Decision Trees
- Basic probability. (most of this will wait until the final.)