You may recall that the practical programming exam last term was a nasty surprise: A lot more difficult than anyone had thought, or our professor had us let believe. Back then I barely finished in time, and was severely shaken afterwards. At least, though, it was graded very kindly: We got most of us good grades, mostly much better than we expected.
I had been kind of nervous before the exam last term, in spite of expecting (wrongly) to have no real problems in programming. This term I was rather more confident. Afterall, I have a lot more experience with programming in Java, more that I ever had with Ruby, I had studied quite a lot, and we had invested a lot of time in completing the exercises for the practical course, usually going dramatically above and beyond what was expected of us. All in all, according to my notes, I spent 176 hours outside lectures on programming alone this term, nearly 37% of my total studying time for all five courses combined.
In spite of that I slept hardly at all last night. But that, in the end, is beside the point. Because even wide awake this exam would have been a nightmare.
Simply put, the six assignments were several dimensions beyond what anyone could usefully accomplish within three hours. Granted, four of them were comparatively manageable and together would have made a good exam, but on each of the other two, two persons could easily have spent several hours. One asked us to read a collections of poems into memory, then find the rhyming syllables at the end of each line and sort all the verses by those syllables, plus some assorted other things. Kind of involved for completing it within half an hour under exam conditions. The other was worse: Define a repeatable annotation type with several kinds of values, write a class and annotate its methods with this type, then reflectively read out these annotation to print out their values, but from within the methods of the class, using a method in the Class metaclass of Java nobody had ever heard of, using which involved declaring anonymous inner classes in our method. Or some such thing. I have no idea, really, because I never even got close to figuring out what this assignment was about, let alone solving it.
None of these assignments was beyond comprehension, of course, but with the time allotted to the entire exam they were simply not feasible. I started with the simpler assignments and frantically typed for over two hours, never really stopping to think, or to consult the API documentation, for there really was no time. I just used the first, simplest, cheapest approach that came to mind in every case, because anything else was quite out of the question. I got two of the shorter assignments completely and two half done before I decided I had to move on and try to do the rest. Yet taken together I believe these four assignments barely account for half of the total points in the test, and I am quite a way away from getting them all. Then with an hour left I tried the monster assignments. I managed to read in the poem and put the lines in a list of strings, but the analysis, sorting and all that was way beyond what I could have done in such a short time. As for the sixth assignment, I wrote the annotation without getting it quite right (the whole idea was a bit confused to be sure), but the entire reflection thing was simply impossible in the few minutes I had left.
During the last hour I was permanently close to tears. I never could have imagined to fail so badly in an exam I was so well prepared for. Programming, this term, was the only subject I was never for a moment worried about, and now I know the best I can rightly expect is a passing grade. And even then I wonder whether it might not have been better to fail and repeat the exam with a different professor. After all, this is the second time he is springing this trick on us. He seems to have difficulties imagining what can be done, by second-term students, within a few hours under exam conditions.
I can hardly describe my disappointment. Much as I was–and am–worried about logic, automata theory, and machine-oriented programming, my skill in programming is after all what people will finally, and rightly, judge me by. And now this insane exam makes me look like I barely know how to spell “Java.” What a blot on my record. It’s really just not fair.
The only consolation–if you can call it that–is that barely anyone fared better. Not even my programming partner, the universally acknowledged programming genius of our semester group, has managed to complete all the assignments. From what I hear, if our professor insists on applying the grade scale he announced on the assignment sheet–heavily weighted towards the big assignments no. 5 and 6–, he will have to fail 90% of those taking the exam, and of those passing none will fare better than a C. I don’t know whether this means he will make adjustments, but in order to make a difference they would have to be dramatic.
I feel seriously depressed right now. What a start of the examination phase! Of course I can, and will, now try and do my best to compensate for this failure with good grades in the other subjects. But even if I succeed in this (by no means really likely) it will seem like I am the book-learning guy, being more at home in theoretical subjects than in our actual trade, programming. Quite apart from simply being not true: How will this look on my certificate?