Studying for exams

There are three basic components to being prepared for a CS 173 exam.

Your best approach on the concepts is to work problems. Start with the posted study problems. But you can also look at similar problems from the discussion booklet, or in old homeworks/exams posted on the web. If you aren't sure how to do a problem, or aren't sure your solution is correct, bring your work into office hours.

For the factual material, go through the exam's skills list. Look up any items that you don't know. Memorize anything that seems to suggest memorization, e.g. basic facts and definitions. A good mastery of this simple material will improve your speed and confidence on the exam, as well as making sure you don't lose points due to small factual errors. To make sure you are paying attention to the details, write out the facts and/or say them out loud.

To remember factual material, use a combination of understanding and memorization. In theory, either could work by itself. However, in practice, they support each other. A partial understanding can be combined with a partial memorization to reconstruct the right answer.

Worked solutions or written-out proofs are often long and complex. The most important part is the outline. Even if the specific problem is different on the exam, the same outline will often work. If you can sketch the right outline for a problem, you can probably fill in the details. Conversely, a badly chosen outline may make it hard for you to complete the problem, especially under time pressure.

In studying the outline of a proof, the start and the end are most important. Also major steps or subsections, especially ones that have labels/names. When studying a solution, write out a short sketch of the outline, to make sure you pay attention to it. Look at several problems of the same type and compare their outlines. What parts are the same?

Also keep an eye out for ways that you can check answers. Are there places that you could substitute small numbers and make sure the answer is right? Could you check small examples (e.g. for a graph problem)? Are there standard special cases you should check (e.g. zero size, negative size)? What types of objects does an operation input/output?

If you notice that you're skimming the material rather than reading it properly, stop. Skimming accomplishes very little. Take a break. Get something to eat. Take a short walk. Is it time to go to sleep? Write down key facts as you read, to help keep yourself tracking.