COMP 121, Data Structures, Spring 2001

Exam 2

Due: Monday, April 9, at the beginning of class (10 pts. off per day late)

Collaboration: This exam is take-home, open book, open notes, closed mouth. You may use the web (and other books) to clarify concepts used in class, but copying questions from anywhere is disallowed.

Instructions: I would like you to create and then take your own exam. Basically, assume you are the teacher and create an exam appropriate for our class. The exam should be designed to be taken in a 75 minute class period. The exam should not explicitly be cumulative. Some topics (such as recursion) are recurring (ha!) themes and can be included on the exam. You should turn in the questions and answers. You do not need to worry about things such as point values for each question.

Motivation: Am I doing this because I don’t want to create a test? Nope. In fact, this exam will be more difficult to grade than usual. I am doing this because it requires you to think at a very high level (See Bloom’s Taxonomy below), while allowing you access to nearly any resource you need in an untimed situation.

Warning: Do not wait until the last minute to do this exam. My approach is to start thinking about what should be covered on the exam and to turn it around in the back of my mind for a few days. Then, when I sit down to write, I have thought of almost all of the questions. This approach still takes me several hours (not counting thinking time, which is the most time-consuming part anyway.)

Supplemental Information:

Bloom’s Taxonomy of Higher Level Thinking:

Knowledge: You can tell a 2-year-old that 2+2 = 4. She can go around repeating this fact over and over without having a real understanding of what she knows. This is knowledge.

Comprehension: Eventually that same child will begin to understand addition. When she does, she will be able to determine that if 2+2 = 4, 2+3=5, even though she wasn’t told this.

Application: This level involves taking existing knowledge and applying it in a new situation. If 2 apples plus 3 apples make 5 apples, the same is true of oranges. Or, I know that an ADT is a collection of data with operations defined on it. How could I describe an electronic dictionary in terms of an ADT?

Analysis: This involves taking a whole and breaking it down into parts. Given a particular algorithm, explain its running time and why.

Synthesis: This involves taking several parts and combining them into a whole. Data structure A wastes space but does find() in constant time. Data structure B is dynamic but does find() in O(N). Using this information, create a data structure that is dynamic and does find() in constant time.

Evaluation: This involves knowing several different things and comparing them. For example, "You want to write a program that solves problem X. You have learned several ways to approach this problem. What is your implementation and why?"

Bloom says that knowledge and comprehension are low levels of thinking, application is mid-level, and analysis, synthesis, and evaluation are high levels.

Grading: This exam will be worth 100 points and graded as follows:

Correctness (50 pts): Your answers to your questions need to be complete and correct. Some questions have both brief and long answers. It might benefit you, as part of your questions, to say something like "In about two sentences, explain ..." so that I have an idea of how much emphasis you are placing on a particular question. Shorter answers are fine, but probably not as difficult (see below).

Breadth (10 pts): See the handout regarding topics covered on Exam 2. The coverage of your questions should roughly approximate the length of class time spent on a topic. So, for example, it is not acceptable to make the entire exam cover hashing, although it should certainly be a major topic. In addition, it is not acceptable to make the entire exam on heaps, since we only spent a few days on them. You don’t have to cover everything (if you do, your exam will be very long), just make sure you cover the major concepts.

Depth (15 pts): Part of evaluating your knowledge requires finding out how deeply you understand a topic. Sure you know what the definition of hashing is, but do you really understand hashing? Make sure you have some questions on your exam that show more than a trivial understanding of the major topics. Again, you don’t have to have difficult questions on every topic, but you should show depth of understanding. Do this by ensuring you have some questions at the higher end of Bloom’s taxonomy.

Difficulty (10 pts): This test would theoretically be distributed to the entire class. It should contain some questions which are very straightforward (that everyone who has been attending class regularly should get) and some which require more thinking. In other words, you should have some questions for all levels of Bloom’s taxonomy. The test should not be impossible, nor should it be too easy. Don’t judge difficulty by your own standards -- (ie, don’t say, "These questions are difficult for me!") -- judge it by the standards of the class as a whole. If you have appropriate depth and breadth, appropriate difficulty will likely follow. Also, a question that is very nit-picky or esoteric is not difficult -- It is unfair. Focus on main concepts.

Length (5 pts): It is difficult to gauge the length of a test (<sheepish grin>). However, you should do your best to make sure this exam could be taken in about 75 minutes by most students. In other words, I don’t want you to ask difficult questions about every topic, but one question (unless it is a really comprehensive question!) is too short.

Clarity (10 pts): I should be able to easily read and understand your questions and answers. They should not be ambiguous. Practicing good, precise, technical communciation is important in any scientific discipline.

Extra Credit (10 pts): You can include an extra credit question for up to 10 extra points. This question should not require knowledge of a minute detail or fact. It should instead require some high-level critical thinking.

Good luck!