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... Be able to define and distinguish among classes, objects, functions, methods, instance variables, local variables, and parameters. Can appropriately interpret and use methods, instance variables, constructors, and parameters. Can write snippets of Python code that utilize all of these items. Can write from scratch code for a class that utilizes all of the above ideas. Can appropriately utilize a class that they have built (or I have provided) in conjunction with a main function. Show ability to appropriately use return values from methods, or lack thereof. Be able to write a recursive method correctly. Be able to determine the output of a recursive function. Be able to use two-dimensional lists to represent a grid of data. Show how insertion sort, selection sort, merge sort, sequential search, and binary search work by demonstrating on lists of data. Demonstrate capability to write Python code that sorts or searches. Asking a question that says "write the Python code for insertion sort," or "write the Python code for binary search" is pointless because of the reference sheets, but I could describe a new sorting or searching algorithm and ask you to code it. Count the number of comparisons in a sorting or searching algorithm for purposes of evaluating its efficiency. I won't ask about mergesort, but I could present a new sorting or searching algorithm that has some of the same flavor as the others that we have done and ask about how many comparisons the algorithm makes in the worst case, and what its general behavior is (in terms of n).