Just the same as yesterday. 8:30 AM, I am sitting in the cafeteria with a cup of coffee and have over five hours left before the final exam, automata theory at 2 PM. And again I don’t really know what I could still do to be better prepared for the exam. Guess that explains the current frequency of blog posts. For most of this term I wrote a post once a month or so. Now we’re at almost every day.
Databases was a very fair and doable exam. Solid, basic stuff, ranging from simple to just somewhat involved. No trick questions, in every case it was completely obvious what was demanded of us. There was a “right or wrong?” section with 10 questions and a small but perfectly obvious modeling exercise involving cities, stations, trains, and routes. We had to translate a simple entity relationship model into a relational model (i.e., a database scheme), which is just about finding the correct primary keys for each relation. Understand a simple SQL query, and write another. Determine functional dependencies and normal forms in a mini table. Complete a table showing various kinds of joins. All in all, it was entirely doable within 40 minutes. I still took 70 (of the allotted 90) to get it really right. For once, an exam without time pressure and nasty surprises. Databases may not have been the most exciting of the courses this term, but it was certainly manageable and fair.
And I can now attest to the fact that rote learning with flashcards does work. For an exam like this one, it was the perfect technique. Since we were not allowed to bring a crib, we had to know everything by heart, and that I did helped me to be confident about the petty detail of all my solutions. This made the exam almost an enjoyable experience. There was only a couple of questions where we actually had to reproduce factual knowledge (“Name and explain the principles to adhere to in decomposing a relation” or some such wording), but thanks to my flashcards I could simply write down the definition almost verbatim.
The key about flashcards is the initial and exceedingly boring effort of transferring all the knowledge to the cards, and do it in a way optimized for this learning technique. Meaning you have to resist the urge to pack complex concepts on a single card to be rid of them. Break them down in atomic bits, embrace didactic repetition, do cloze cards for things where the exact wording matters. Mind you, the mere typing of the cards already starts committing some of the material to memory. It also requires you to understand, to some degree, what you’re typing, so the flashcards serve the same purpose as a crib in subjects where we are allowed to use one.
Once you have the flashcards, the process becomes entirely automatic. With the software I am using (Anki), when you review the cards you indicate how hard it was for you to come up with the correct answer, and the program spaces the repetitions of the same card accordingly. It also determines how many new cards you should learn and how many old ones you should review each day (though this can be customized, obviously). So all you have to do is take about 10 minutes a day per subject (I had two, machine-oriented programming and databases) and just do the cards. Of course, sometimes you scream “not that one again” (in my case it was the nightmarish opaque SQL syntax for recursive queries)–but then either you finally memorize that fact, or else you decide to file this under the student slogan Mut zur Lücke, meaning “have the courage to accept gaps in your knowledge”, namely if the effort needed for closing them is entirely out of proportion to the benefit thereby gained.
The only regret is that once the exam is over you never need the flashcards again. That’s somewhat odd if they have been your daily companion for several months. Do I just delete the decks? Maybe a little later.
Come to think of it, in some ways this question is representative of a deeper issue. With the mostly theoretical knowledge taught in the lectures and tested in the exams, the question does occur whether we learn primarily for the exam and forget most of the things right afterwards, and be it only to make room for the new masses of material next term. Some call it “bulimic learning”–you devour masses of knowledge in a short period, then disgorge it in the exam, and it’s gone. There are surely signs of this in our study program here.
Mind you, all in all I think it’s a rather reasonable program. Parallel courses complement one another quite nicely, and successive ones build upon each other in a useful way. CS 101 gave a broad, easily digestible general introduction to many subjects covered in detail in later terms. As I said yesterday, Math 101 laid the ground for logic and automata theory, and both apparently do the same for algorithms and graph theory in the third term. Machine-oriented programming surprisingly tied in with automata theory, as far apart as this close-to-metal technical subject and the various entirely theoretical automata models may seem. I except software engineering to continue and broaden the programming courses, and so on. It all makes sense. What’s wrong is the exam setup with its primarily theoretical approach and its insane time pressure in at least some courses.
Speaking of exams, yesterday my programming partner and I went to see the student’s counselor and the department head about the catastrophic programming exam a week ago, just in order to sound out possible courses of action should the professor find it difficult to adjust the grading scheme sufficiently to come up with a result that reflects our actual level of competence in Java programming. Unsurprisingly, there is very little we can do. If push comes to shove, grading an exam basically falls under academic freedom. As long as we can’t prove that regulations have been violated (and they haven’t), there is no official recourse. I kind of expected that to be so. In my previous career, I have seen some cases where students dragged a grade they were unhappy with through the law courts for years, with no result other than being stranded with the procedural costs. And none of us are crazy enough to risk time and money on such an effort, not to mention certain estrangement with the entire faculty, because of a single grade, however unfair. So what we achieved, I suppose, is to have made the authorities informally aware of the problem so that in case it goes very wrong we have a channel for a mediated and hopefully constructive talk with our professor.
So. I have successfully killed nearly an hour of waiting with this post. I suppose it’s time to look at some automata theory, just in case. Though the mere thought makes me think of bulimic learning. The part where things go out rather than in, that is.