This is intended to give you a sense of what I think is important from the course so far, and what I will be thinking of when creating the exam. I hate disclaimers, but here are some anyway. This is not a contract. I may have inadvertently left something off this list that ends up in an exam question. I make no guarantees that the exam will be 100% limited to items listed below. Moreover, I will not be able to test all of this material given the time limitations of the exam. I will have to pick and choose some subset of it. You are permitted one 8.5 x 11 sheet of paper with notes (both sides) for use as a reference during the exam. Here are the specifics: Students should be able to... Write Prolog predicates on paper to do specified tasks, or answer questions about provided code. Specifically, students should be able to successfully make use of lists, recursion, and the cut operator. Be able to distinguish between static and dynamic scoping, and be able to predict program output depending on which scoping technique is being used. Be able to distinguish between static and dynamic typing, and be able to evaluate trade-offs. Be able to identify, describe, and/or define various forms of polymorphism, and use or interpret appropriately. Types of polymorphism include: - subtype polymorphism - polymorphism via duck typing - parametric polymorphism - ad-hoc polymorphism