On midterm #2:

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.
- Encode sentences as propositional logic
- Encode sentences as FOL
- Prove a sentence using a particular technique
- Explain why an algorithm has the characteristics it does. For example, which search technique does the decision tree algorithm implement?

Here are the sorts of questions I will not ask.

- Write syntactically correct Python code. (I may ask you to write pseudocode, 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 midterm topics:

- Propositional logic:
- Encoding sentences
- definition of entailment, implication, contraposition
- Definition of a model
- Definition of sound and complete inference mechanisms
- Inference rules (modus ponens, and-elimination, or-introduction, DeMorgan's Law)
- Converting to CNF
- Horn clauses
- Forward chaining, backward chaining
- Resolution Proof

- First-order logic
- Defintions as above
- Encoding sentences
- Converting to CNF
- Inference in FOL: forward chaining, backward chaining, resolution
- Unification

- Ontologies
- Steps in designing an ontology

- Decision trees
- What are they good for?
- Learning definitions: batch, incremental, online, offline, active, passive
- Decision tree algorithm