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?