Coffee in the Cafeteria, for the first time in this new year 2018. It’s the week before the lectures recommence, and the place is still almost empty, but at least it’s open. Once last December I was here on a Saturday morning and that was spooky alright. No lights, no people, and no way to get a cup of coffee.
There is a group of students in the far corner who are already studying. Mercifully this term there will be another two weeks of lectures before the exams, instead of the ridiculous one week last winter term. Still, three weeks from now will be my last examination this term, after a horrible week with three exams in three days. So it’s high time to start being prepared.
Though actually I think I am. After Christmas I spent three full days reviewing the contents of the process mining “compulsory choice” module. I did this by marathon-watching the video course recommended by our professor (which actually means she had faithfully copied the lecture slides while translating the text to German). It was honestly kind of funny. The video lectures are delivered by a Dutch professor who appeared very excited, particularly since I was watching his talk at 1.75 times the normal speed to save time, and who miraculously wears the exact same clothes on all the videos. I had our own professor’s printed lecture slides next to me and was annotating them while watching the video. I had had a very bad feeling about this course before these three days of recap. But this session helped me a lot to find the common thread of the course and put things in context. It’s probably not really decisive, since the exam is likely to be about blindly applying algorithms, in the best math or intelligent systems style, rather than about understanding. And besides, it’s going to be an open book exam, or as we say here, a Kofferklausur, literally suitcase exam, because you can bring anything you want and as much as you want, as long as it doesn’t connect to the internet. Still, having the big picture makes me feel better. More on top of things.
Until yesterday I also thought I was reasonably well prepared for distributed systems. After all, I have been faithfully and diligently doing my flashcards from day one, and like a long time ago in databases, the contents of this lecture are rather limited. A few hundred slides, with a big font and lots of very repetitive graphics. So I know most things by heart already, and besides, we are allowed a crib (and on my pleading the professor even revoked his insistence on it being handwritten).
But yesterday I did one of the Altklausuren and my heart sank. The first of four assignments was a particularly nasty version of the infamous “true or false”, namely a matrix of key concepts of distributed systems, such as a mutex or a commit protocol or a logical clock, on the one axis, and statements on the other such as “imperatively requires a middleware”. I was completely baffled by most combinations. For instance, one statement was “meets the ACID requirements”. Now ACID is a paradigm for databases, so how would it ever be applicable to any other concept? But could the idea really be to just tick “no” in all other cells? The same really with the statement first qoted: Nothing in a distributed system “imperatively” requires a middleware, though most constructs benefit from there being one.
Then some statements were so convoluted they were hard to understand in the first place, like “is probably not being used in a thin client.” How do you answer that with either “yes” or “no” or (wait for it) “optional”? Yeah, I can cope with “yes”, but “no” is “is not probably not being used”, and does that mean “is probably being used” or rather “is being used”, which is logically quite a difference? And don’t get me started on “optional” … “is optionally probably not being used” or “is probably optionally not being used” or “is probably not being optionally used?” Do any of these make sense, and do they mean the same thing, or different things, and how should I know which one the professor had in mind? Truth is, this kind of qualified and negated statement just doesn’t fit with even yes or no, let alone a third option.
My most unsettling experience however was with the cell where the concept “mutual exclusion–distributed” crossed with the statement “needs at least one coordinator.” Now there are three common implementations of a mutex in distributed systems, namely central, token ring, and distributed. Obviously central needs a coordinator. Equally obviously, distributed does not–that’s in fact the whole point about it. So I confidently ticked “no”. Imagine my surprise at finding in the authorized solution that the correct replies were either “yes” or “optional”. I was so baffled I inquired with the professor, and his mysterious reply was that “the interpretations of the examinees allowed no other assessment” because in distributed systems there were also central solutions for mutexes. Yes of course, but didn’t it say “distributed”? So even if we assume that some students, or even a majority, erroneously read “mutex in distributed systems” instead of “mutex–distributed (solution)” (as if not the entire exam were on distributed systems), and then concluded that some (namely the central solution) needed a coordinator, this can’t possibly mean that if I understand the question correctly and answer “no” I don’t get the point? A co-student suggested we should comment, in each cell, on our understanding of the concept or statement so to make sure. Problem is, it never occurred to me to misread this crystal-clear question in any way, so why should I have said “I read ‘mutex–distributed’ as ‘the distributed version of mutex in distributed systems’?”
Truth is, I just hate this kind of questioning. Why test students’ understanding of concepts this highly condensed, error-prone way, rather than by having them answer questions in full sentences? Oh, I know why. It’s easy to grade. But just not fair.
Oh well. At least I do feel really rather confident, as usual, about the oral examination in architecture of information systems, a course that’s really just software engineering, part III, and with the same professor. There is an element of uncertainty in that there is a second professor who delivered the second part of the lecture, the one crammed with infinite details about architectural styles, UML, and no-SQL-databases. And both professors will examine us together, I understand. But at least that will save us from having the assistant with his Docker/Kubernetes/12-factor-app obsession sit in and ask highly obscure technical questions on these nasty and confusing concepts. In fact, when being asked whether we needed to know all those things, the professor quipped that he was certain they were very important … but not for this examination. Truth is, he quite openly considers microservice architecture a passing fad with no relevance to real, business-strength software applications. So there is some consolation.
Still, it’s a lot of content, a staggering 530 flash cards as of today for this single course, and in an oral exam, no crib or anything, we have to know it all by heart. Yes, the professor limited it in a way by saying we could concentrate on two architectural styles of our own choosing, and out of the 16 or so UML diagram types we had to know just two (sequence and state machine) inside out, but of course be able to at least recognize the others when being shown. But then he also said, “and everything from slide sets 1 through 11”–which is really just the entire lecture content. So there.
Apparently we will again have the chance to start with a short presentation on a subject of our own choosing. This is a welcome ice-breaker for most students, and for the others it’s optional anyway–last term I didn’t I use it. This term I may, and with a certain impudence I may pick a highly obscure subject that certainly neither professor will expect: the lambda architecture for persistence in big data systems. That was the last 20 minutes of the last lecture in the term and I am sure nobody got it any more than I did, because it’s a rather confusing, if on second thought strikingly convincing, concept. Being the old academic that I am, and considering that big data is a likely specialization of choice for my further professional carreer, I then bought the pertinent book, read the first chapter, and got it, and then thought, let’s just take the bull by the horns and start the exam with this. It’s always good to do something non-obvious (ReST for the umpteeenth time, anyone?), and with the second professor’s obsession with no-SQL databases it may just score some bonus points and save me from further questions on consistence, scaling, and transactions with different kinds of databases, the details of which I can never remember. And who knows, maybe it even counts as one of the required two architectural styles?
So yeah, given that there are two more weeks before the exams I expect I will be as well prepared as I humanly can be. Of course there is one nagging doubt in the back of my head that I try to ignore as best I can. There is still one last practicum assignment for architecture, due a week from now. As you may recall I made a deal with my practicum partner: He would complete this alone, in exchange for my having done the last assignment for the distributed systems practicum. But considering my previous experience with working with him I can’t help but wonder: Will he deliver? And if not, when will I find out? And how can I find out without encouraging him to say, “no it won’t be ready unless we do it together”? And if I find out, with two days left, what do we do then? I can just see myself having sleepless nights on his account, yet again.
I rarely ever so longed for at least finally seeing the PVLs in the campus system. Even though you usually know you’re gonna get them long before they are actually being entered in the system, there is always this feeling of insecurity. Even if it’s just a clerical error, and it never happened to me (but reportedly to others): Just the risk of not being allowed to take the exam you prepared so hard for, not to mention redoing the entire practicum, is enough to make one shudder.