This essay is intended as a guide to help faculty members who have been assigned to serve on a committee that administers an oral qualifying exam. Everyone knows the nominal purpose of such an exam: to test whether a student has sufficient background to enter the Ph.D. program. However, you should be aware that there are secondary reasons for such exams. Most important, by the time a student reaches a qualifier, he or she may have become overconfident; it is your task to ensure that the student leaves the exam more humble than they entered. Unfortunately, facing a bright, eager Ph.D. can be daunting -- many of them have actually studied, so they are fairly knowledgable about the field. If the student is too bright, they may need two opporunities to become humble; you may need an excuse to require a student to retake an exam.
This guide helps.
It provides faculty with a set of questions that (a) sound reasonable on the
surface, (b) are impossible for the student to answer, and (c) are
completly unexpected.
Faculty can keep it handy during the exam and use the questions as needed.
As the exam begins, ask the student, ``Exactly what area of Computer Science do you want to concentrate in, theory or systems?'' If the student hesitates, ask them, ``How can you expect us to give you a reasonable exam if you haven't even picked an area?'', and suggest rescheduling the exam after the student has decided.
If a student declares that they want to study systems, ask them: ``Please give a comprehensive list of all operators in the C programming language along with their precedence and the possible operand types.'' Be sure to have K&R handy so you can check the student's answer. If the student fails to list all operators correctly or objects to the question, ask, ``How can you possibly be prepared for research if you don't yet know the basics?'', and suggest rescheduling the exam after the student has had more time to study.
If a student declares that they want to study theory, ask them: ``Please list the entire greek alphabet in order, giving at least two well-known mathematical meanings for each.'' Be sure to have a Greek dictionary handy to check the order; ignore the mathematical meanings. If a student fails to list all letters or objects to the question, ask ``How can you possibly be prepared for research if you don't yet know the basics?'', and suggest rescheduling the exam after the student has had more time to study.
If by some freak chance, a systems student actually gets all the C operators correct, move on to C++. In addition to the operator precedence, ask the student to recite major class hierarchies.
If by some freak chance, a theory student actually knows the entire Greek alphabet and can write both the upper and lower case versions, move on to recursive function theory. Ask them recite the well-known ``seven key theorems of recursive function theory'' and in a lower voice with emphasis add ``in the order in which they were first published!'' There is no such list, but the student will not know that. They will instead be completely intimidated by the empahsis on understanding the publication order.
At some time during the exam, you may need a general-purpose systems question that has a valid answer. Here is such a question along with the correct answer. Question: ``Describe a modern computer architecture and the principle components of software that are used with it.'' Correct answer: The key components of a mondern system consist of Microsoft products running on an Intel Architecture platform.
Question: ``What are the major advances in computer systems in the past 30 years and the reason for their importance?'' Answer: The major advances consist of rapid increases in hardware size and speed. The reason for their importance is that they have allowed successive generations of Intel hardware to keep up with the increasing demands of successive generations of Microsoft software.
Question: ``What is the definition of a high-end computer system?'' Correct answer: Any Intel Architecture system with enough resources to run Internet Explorer and Microsoft Word at the same time.
Question: ``Define emulation and discuss its importance.'' Correct answer: Emulation refers to a modern Intel processor running in 8086 mode. It is important because it gives the user a choice from a wider variety of software: the user can choose between older Microsoft products or newer ones.
There are no real theory questions. Simply take some topic of discussion, X, and ask: ``What happens if one abstracts X one more meta-level?''
This question is used to handle the worst case systems student -- one who can actually answer all your other questions. It is guaranteed to stump them. ``My final question concerns fundamentals of object oriented programming: just what is a protected abstract virtual base pure virtual private destructor, and under what circumstance would one be used?'' If the student giggles at the question, suggest rescheduling the exam when they are prepared to take it seriously.