For the majority of examinees, today was the last time Peter Dickman would have been able to make them suffer. Since I'm going to be working for him this summer, I'm not sure, if he ever reads this, whether he'll take perverse satisfaction in setting a difficult exam, or just give me a clip round the ear.
As ever, the nimble Mr. Miller has beaten me home and posted an in-depth summary. So that leaves me to expound on my personal bêtes noire.
Question 1 I did last, as advised. The coding example was relatively fiendish compared to some that I have seen, requiring at a minimum two interfaces and a class with four methods. There was little time for comments, and no time at all to write some helper classes that seem to be mandatory for full marks (although one might wonder if this requirement has been relaxed as the coding question has gone from 15 to 12 marks). The remainder of the question was fairly similar to the 2004 paper, concentrating on clocks and message reordering. Not entirely pleasant.
Question 2 started off with some relatively easy questions about spanning trees and leader election. There followed a short question on diffusion trees which was straightforward enough, but difficult to explain precisely. There then followed a nasty sting, regarding the traversal of or wave through an N-by-M torus. Nasty because the algorithm isn't the same as the one I had learned for an N-by-N torus, and I didn't have enough time to come back and correct my answer sufficiently. There were some marks to be had, though, for discussing wave and traversal algorithms in general, and hopefully these should be had.
Question 3 was a no-go area for me, though I gather that it was quite popular. A stunning 23 marks went for a discussion of distributed file systems. Now, if you knew that lecture like the back of your hand, then that would be fair enough—I felt that I only knew it well enough to answer direct questions like in the 2004 paper, and there was no way that I could think of 23 things to say on the topic. As if to add insult to injury, the remaining 7 marks were for discussing continuous media systems, in what might have been a sting. If distributed file systems was my least-secure topic, continuous media ran it a close second. There was no way I was approaching this question (thereby throwing the coding question into play—bugger).
Question 4 was an interesting one. Essentially, it did for tuplespaces what question 3 did for DFSs, but in a manner that was more conducive to giving technical details, rather quantity of details. The first part dealt with using tuplespaces for workflow, which was touched upon briefly in the notes, and had turned up in the past. The second part was a slight sting, asking about leader election in a tuplespace under two scenarios. I reckon that I got the shared-tuplespace scenario, but didn't have time to come back to the second part, which I suspect would be carried out along the same lines as a spanning-tree leader election (I think I got as far as writing, "The second case first uses spanning tree constructio—"). A three facts/three marks question on Byzantine behaviour in a tuplespace system seemed fair enough, though required a bit of thought. Finally, there were 7 marks for discussing informally why there is no k-Byzantine-robust consensus protocol for k ≥ N/3. Now, I had written in my notes that examinability ended long before this was discussed, but I nevertheless studied that "proof" as it had appeared in previous years. Happily, I had a moment of clarity which might have improved my answer to this question by a mark or two.
I guess that sounds like a pretty mixed bag, so why am I whining? I'd have liked a few more minutes to complete the answers that I didn't get a chance to complete, and the coding question seemed trickier than usual (though at least, mercifully, without the use of the bizarre, pre-Java2
KeyedCollection class). It was a bit of a beast, and certainly the most difficult exam so far this year in terms of thinking. But then, I took a Peter Dickman course—what else should I expect?