How To Study For A Computer Science Exam

Many years ago I came up with a personal philosophy about studying, especially cramming, for test taking. I looked at my peers and realized that a lot of them worked very hard to cram a lot of information into their heads in a short period of time to prepare for taking a test. Shortly after the test, weeks a the latest, they forgot most to all of what they had crammed into their heads. All that mattered to them was taking the test and getting a good grade on it. Now to me learning was the most important thing so any practice that didn't lead to holding the knowledge for the long term seemed at best to be wasteful. At worst I decided that short term study for a specific test or exam was hard to distinguish from cheating. After all the results of the test did not reflect what they had actually learned.

Now I admit that some of my friends accused me of using this idea as a way to avoid work. But honestly I used this philosophy to push myself to study (read the book, pay attention in class, put time into the projects) in ways that would let me keep a higher percentage of knowledge longer. In the short term I may not always have gotten the best grades but I like to think that if we'd all taken the same test a year later without warning I would have out scored them.

Later in life when I was writing and giving tests to my own students I wondered just how good the tests were evaluating what students really knew. One of the things that complicates cramming for students of computer science is that everything builds on everything else. A student needs to know everything they were taught in the first week of class in the last week in class. It is not like a student will be tested on variables and not need them again after the test.

I used to tell my students that anything I had covered at any time (in the past of course) could show up on any test or quiz. Personally I would have liked to make every test a surprise test. But of course students hate that and parents would have had my head. My testing philosophy is that tests are there to help the teacher know what students have learned and what they need more help on. I'm not a big fan of grades but I am a big fan of students learning as much as possible. Only if I know what they are and are not learning can I as a teacher help students learn. Cramming seems to be a barrier to me getting that information accurately.

Now I have helped students review for the AP CS exam. I didn't feel completely good about this but I did feel some responsible to help them do as well as possible on that important exam. It was not an easy exercise though. It is not something one can do in a day or two. I didn't mind talking about test taking strategies though. The AP CS test is complicated and has some unique characteristics. Those things one can teach and I don't really see that as cramming or studying in the conventional sense.

For the longest time it seemed like my philosophy was unique to me. No one I explained it go seemed to agree with me. And then I found this blog post by Steven Downes Tony Targonski. There is a good little discussion there. It ends with this paragraph:

For my last CS exam I found more benefit in relaxing, enjoying some music, and reading blogs. Though maybe I’m missing something. What does everybody else do for their exams?

I remember in middle school when one of my teachers told the class much the same thing. That it was more important to get a good night sleep and to be as relaxed as possible before starting the exam than to drive oneself crazy cramming information that would not stay in the brain. What do you think?

Comments (7)

  1. Tony says:

    Alfred, I’m pretty sure that the blog post was written by "Tony Targonski",  not Steven 😉

  2. Rob Miles says:

    As an instructor I use exams to address two issues:

    To find out what the students don’t know (so I can fix it later).

    To motivate students to learn the really important things that they must know.

    For example, I’ll be telling my classes soon that the next programming exam will contain a question on references. They can go back to the past papers and, sure enough, there will be a reference question. It will not just be "describe a reference", it will be an example of a situation and a request to explain how references are relevant to that. With a bit of luck they will spend some time making sense of the question, finding out how references work, and then be able to answer the question on the next exam. This makes the revision process part of the learning process, which is how it should be.

  3. AlfredTh says:

    Sorry about that Tony. I’ll be more careful in the future. I’ve edited the post.Thanks for the correction. I prefer to give credit where it is due.

  4. Tony Felice says:

    Sure, I can agree with your points on studying for an exam. It is much better to plan ahead and study a little each day than to try to cram everything in at once. Not only will it make it easier when you need to devote more time studying a few days before the exam (things are much easier to remember the second or third time you read them than the first), but you’ll also be able to store more long-term information this way. About this sentence though:

    "For my last CS exam I found more benefit in relaxing, enjoying some music, and reading blogs. Though maybe I’m missing something. What does everybody else do for their exams?"

    That’s not how I study. I usually find it best to do some serious studying for an hour or so and then take a 5-10 minute break (or whenever I start to lose focus). Rinse and repeat until it’s time to go to sleep or do something else.

    Speaking of which…I think it’s time to get back to schoolwork. 😛

  5. Baker says:

    As a teacher I do tell my students that tests are my way of knowing for sure that the class is making progress.  If they class isn’t making progress, it means we have to stop, go back and clarify some things – i.e. we can’t move on to the next cool thing.  The tests count toward their grade, I tell them, but by telling them they are for me, it diffuses the pressure a little bit, and by telling them that the whole class can’t move forward unless they do well shifts the pressure onto the group as whole rather than the individual and the kids do study hard so that they don’t let their classmates down.

    I could see this approach backfiring if the class didn’t have a healthy group-oriented attitude, but it hasn’t happened so far the 3 years I’ve been taking this approach and I’ve also never had to go back – class performance as whole has improved.

    I address the cramming problem by advertising up front that I make tests you can’t possibly cram for.  My tests require a synthesis of knowledge (as you pointed out, Alfred, they kind of have to).  I’m not sure this is actually true – my programming questions aren’t that different from AP-style programming questions – but telling this to students seems to make them more eager to seek the synthesis I’m looking for.  That is, they want to gain the knowledge early and discover the intersections with previously learned material because they know it will help them.

    Some students will always stress out, but I like to think I’ve struck a nice balance between my expectation of a lot of hard work and the stress that naturally accompanies it.  positive stress, I suppose.


  6. Isnt the message that we are sending to students: get good grades, rather than this is something that you will need to know.

Skip to main content