It’s hard to believe, sometimes, but in spite of everything I said about starting to study early, the last few days before the exams still make a difference. Or maybe they do particularly when you started early. For right now is the time when I can no longer procrastinate, delay, get away with filing things as not entirely understood yet, but to be returned to later. Because there no longer is a ‘later’. But because I had already internalized say 90 per cent of the contents of the lectures over the course of the term, I am now free to concentrate on those few isolated things that still trouble me.
Yesterday I spent almost all day on doing Altklausuren (exams from earlier terms) from operating systems. And exhausting though this was, at the same time I found it utterly reassuring. For the great bulk of the assignments were perfectly doable, with a good number of them returning with very little variation in practically all of the exams. That’s usually something you can rely upon, in the subjects taught by professors from the technical CS course of studies. The things they want us to master are rather canonical. And while, as I said before, our professor is new, chances are he will stick roughly to the format used by his predecessors, if only to avoid the sheer work involved in reinventing the wheel. Afterall, he is also using the lecture slides from earlier professors. So I do hope those simple standard problems like manually scheduling a small number of processes with different algorithms, or determining the physical memory addresses from a set of virtual ones for a given page size, etc., will recur in his exam. Because these are easy points.
At the same time, the Altklausuren also brought to light the handful of more complex things I hadn’t understood yet, sometimes without noticing, because I never quite got the point and was content with just memorizing my flashcards. (Truth told, I did not always pay attention in class because often the lecture was simply too lengthy and detailed, but inevitably that means sometimes I missed the central point.) In any case, I had quite a number of light-bulb moments yesterday. When I looked at the actual lecture slides again in the light of some of the problems in the Altklausuren, rather than only at my flashcards, suddenly the pieces starting falling into place. For instance, I realized that a monitor in Java (a mechanism for making sure only a single process at a time can execute a certain method) has not one waiting queue, but two of them. And with that realization the differences between the wait and notify commands for signalling between processes in the monitor suddenly began to make sense. Up to then, this had always sounded rather like the same to me, and that’s because my flashcards had missed one crucial slide that contained a graphical representation of this context. Looking at this slide the entire mechanism became suddenly completely obvious. And that was not by any means my only aha experience. I do believe that in a few hours of concentrated attention yesterday I suddenly understood those maybe 10 per cent of the material presented in the entire lecture that so far had looked rather like Chinese to me. And naturally that made quite a difference for my feelings and my expectations towards operating systems. I had hated the course and dreaded the exam in the morning. I felt quite on top of things in the evening.
Understandably I harbored high expectations when I devoted my day today to algorithms. Sadly though this time it didn’t work out quite as well. In fact, the problem is similar: This professor, too, is rather new at UAS and there is only a single Altklausur from him for algorithms (why, I wonder, do we get all the new professors?). But unlike with operating systems, in the math courses the styles, interests, and exam setups of different professors are very diverse. There are Altklausuren from three different lecturers, apart from our own professor, and it was obvious from first glance that those of one of them simply do not apply to us. His exams were all about programming algorithms, whereas our professor is a mathematician and his problems are entirely theoretical. And those of the other two lecturers at least contained several assignments our lecture simply had not covered. For instance, we had done hardly any graph theory, which in any case would have been odd, because there is a separate lecture dedicated to that field. In addition, many of the exams lacked good solutions. So I tried to solve those few problems that made sense to me, without a good chance to doublecheck my results. Naturally I was quickly done with that. Now what?
Thruth told, my problem with algorithms lay elsewhere in any case, and I knew it. What I really needed was understanding the one thing that had never really made sense to me either in the pertinent reference work on algorithms that I had studied in the summer term break, or in the lecture, or in the mock exam, or ever since, but that is certain to figure prominently in the exam: Solving recurrence equations for the complexity of recursive algorithms. It’s a devilishly complex routine that involves substituting an equation into itself several times, then trying to deduce a pattern for the resulting sequence, prove it by induction, substitute a variable with another so to reach the termination condition, and finally come up with a closed equation and somehow derive the complexity class from it. So far, every time I tried I got lost on the second step at the latest.
Today I fought with this one thing for five hours solid. I had a small revelation when I finally discovered the inner logic of the sequence and thus a way around simply having to guess it. Judging from the single Altklausur by our professor this should earn me 4 out of 10 possible points for that single assignment. Hard-earned points indeed! But now I had something to build on.
And slowly over the next two or three hours I unravelled the process, step by step. I found out how to come up with the variable for the substitution. I finally understood what substituting it meant. But still there was this mystery in the end–how the hell did the people who had come up with the examples I studied ever get rid of the sum–of the sigma sign? Particularly since the upper bound invariably was something as cryptic as a logarithm minus 1. Is this even a natural number? As if by magic, in all examples the sum became replaced by a completely inexplicable–to me–fraction that solved the equation. And finally, in the sixth hour, the penny dropped. The thing was a geometric series! And since the formula for a geometric series involves an exponent plus 1, the minus 1 disappeared conveniently in the process, and there was the solution. And the one equation I had already tried five times to solve, to no avail, even though the final result was provided as a hint–but I just never got there!–finally worked out as if by miracle.
Mind you, this was the opposite of a sudden light bulb moment like I had yesterday. This was very hard work. But that’s math for me: If you bang your head against a brick wall with sufficient force for a long, long time sometimes the wall will yield. There is still no predicting how this exam will work out. But now I feel a lot more comfortable with what is certain to be one big chunk of it.