John Bell's Exam Philosophies and Sample Exams

Exam Content

Students often ask questions such as "What is going to be on the exam?", with the implication that some of what we have studied will be on the exam and some won't, and they want to know which is which so they will know what they need to study and what they can safely ignore and forget about.

As a general rule my answer to such questions is "Everything that is covered in the assigned reading is fair game, whether we discussed it in class or not; Everything that was discussed in class is fair game, whether it appeared in the book or not; and Everything that you should have learned by doing your own homework is also fair game." My reasons for giving this answer are as follows:

  1. I want students to study everything, not just the parts they think are most important or most likely to appear on the exam. So by making everything fair game, they have incentive to study everything that was covered.
  2. In an ideal world I really would test every single topic that was covered, in order to have a thorough exam. Unfortunately that isn't practical, so I have to test some subset of what we have studied, and then assume that the students know the rest of the material equally well ( or equally badly ) as they know the parts covered by the exam. If the students know ahead of time which topics will or will not be covered, then it destroys the underlying assumption that they know everything equally well. ( This is akin to a factory owner pulling random samples off the assembly line for testing, and assuming that all production is of equal quality. If the plant manager knows ahead of time which samples would be tested, then he or she would make sure those samples were good, and the underlying assumption regarding the untested samples would be invalid. )
  3. I usually don't write my exams until late the night before they are given, so if anyone asks before then what will be on the exam, I honestly don't know, because I haven't written it yet.

Note that all exams are also comprehensive. I want students to remember what I teach them forever, and not forget them the day after the exam.

Exam Format

Over the years my exams have evolved into a fairly standard format, base on Bloom's Taxonomy of Educational Objectives. Bloom ( and his colleagues ) studied education, and broke it down into the following 6 levels of educational goals:

  1. Knowledge. A basic memorization of facts, such as Columbus discovered America in 1492 or the Pythagorean Theorem states that A^2 + B^2 = C^2.
  2. Comprehension. The ability to explain concepts in ones own words, such as how the Pythagorean Theorem relates the sides of a right triangle.
  3. Application. The ability to apply knowledge and understanding to the solution of problems. For example, using the Pythagorean Theorem to calculate the distance between opposite corners of a rectangular room, given the length, width, and height of the room.
  4. Analysis. The ability to break a large complex problem down into component parts and sub-problems.
  5. Synthesis. The creation of something new and original, such as a poem, a painting, a scientific report, or a computer program.
  6. Evaluation. The ability to compare and comtrast two or more complex alternatives.

Bloom considered the first three levels the lower levels of the hierarchy, and the last three levels the higher levels. Evaluation was considered the highest level because it requires all of the lower levels to accomplish, ( Break each alternative down into components that can be analyzed, apply the lower levels, and synthesis a conclusion and a report. )

My exam tend to have three major sections:

  1. Part I usually contains true-false, multiple choice, and short-answer types of questions. It is designed to address the first three levels of Bloom's Taxonomy ( Knowledge, Comprehension, and Application ), and usually comprises about half the overall points.
  2. Part II usually involves analysis of a complex situation, addressing the 4th level of Blooms Taxonomy. In a programming class this usually entails either "What is the output of the following code?" or "Find all of the errors in the following code and explain how to correct them." These questions require students to understand ( complex, often convoluted, sometimes wrong ) code when they see it, but does not require them to write any original code. For other types of courses there is usually some other complex result to be analyzed for part II. This part usually comprises about a quarter of the overall points.
  3. Part III usually involves synthesis, addressing the 5th level of Bloom's Taxonomy. For any courses that involve programming, this part usually asks students to write an original computer program. It is never exactly identical to any homework assignments, but is sufficiently similar that students who did their own homework ( and understood what they were doing at the time ) should be able to write the new program without too much difficulty, but students who did not do their own homework or who didn't understand what they were doing will have difficulty. Part III usually comprises about a quarter of the overall points.

Sample Exams

The following two links lead to exams that I have written for previous courses. The first one was a one-hour quiz for a freshman C Programming course. The second was a two-hour mid-term exam for a senior / graduate level course in Virtual Reality Programming. They are a bit old, and my exams have evolved a little over the years, but they follow the general format and structure that I still use today.