With the third term not even half done, the fourth and subsequent ones are already casting their shadows before. Come next Monday, we are being called upon to announce our priorities for the fourth term Wahlpflichtmodul, a wonderfully typical German composite term I find hard to translate. Literally it would mean something like “compulsory choice module”, though whether it’s the module that is compulsory, or the choice, or both, is open to semantic interpretation. In any case, we are required to do three of these over the next three terms, and it’s the first time we ever have a choice at all in this study program.
You see, for the first three terms the curriculum is strictly linear. Five courses a term, with the subsequent ones sometimes building on the earlier ones. To be fair, this requirement is rarely enforced, if at all, even though it makes perfect sense: You do need Math 101 to be able to follow logic, you really should do programming before software engineering (both of which come themselves in two subsequent parts), and so on. What really does make it impractical to deviate much from this prescribed program is that the schedule is sensibly arranged so that there is no overlap between the courses that should be taken in the same term. There is no such guarantee once you start mixing courses from different terms, which is why people who do that often fall behind. That, above all, is why most students find it prudent to follow the schedule, at least for the first three terms. Doing so gets you rid of all the mandatory, basic, content-crammed stuff that also often comes with rote-learning within just 18 months, though (as you will have seen by now) at a heavy price. And that supposedly leaves you free to take some time to diversify, identify your real interests, find your niche, start working on a long-term project, from the fourth term onward. In fact, in the first term tutorial we were being told that in the second part of the program you would actually be able to succeed without needing to study on the weekends!
One reason why the fourth term will definitely be more relaxed than the previous ones is that effectively there is a whole course less (or the equivalent thereof). In a sensible reluctance to turn us into completely specialized nerds, our study program prescribes three so-called “social science subjects”, which is a catch-all term for everything that’s not completely computer- or math-related and thus meant to broaden our horizon. Quoting at random from next term’s offers, you can attend courses in analytic philosophy, business English, technical English, Islam, “appreciative communication”, conversation techniques, virtual reality in movies, as well as several areas of preparation for the BA thesis. Now each of these courses (and per the program you are to pick two of them) comes with half the credits of a normal lecture plus practicum, reflecting the fact that the credits are for mere attendance–there is no exam and no grade. Surely that is a relief. And unlike most of the others I personally am in the privileged position that I won’t be required to do any social science courses at all, because with the help of the students counsellor I have received credit for my previous master’s degree. Surely someone with a PhD in history is not much in need of broadening his horizon. Or rather, studying computer science in itself broadens mine.
Now with the ability to choose our courses comes the agony of choice. There is a total of 15 “compulsory choice” modules being offered for next term, for applied CS and technical CS combined, and we are to pick three priorities. There are some restrictions that limit the choice just a bit. What would actually be my first priority, “Certified Tester”, where you prepare for an actual official certificate, is open only for people who have completed software engineering part II, which we will do only next term. Some courses are too obviously aimed at technical CS students. Surely no applied CS student would jump at the chance to attend a seminar called “Deeply Embedded”, not even if you have, as I do, a background in C++. Some courses sound rather interesting (for instance a comparison of different programming languages–I do have a soft spot for languages after all, natural or programming) but are being offered by professors we either do not know, or know as being rather difficult and/or demanding. There is something to be said, of course, for taking a chance with somebody you don’t know, but it’s risky. On the other hand, the two professors we would all gladly choose as our teachers, everything else being equal, are offering courses of which one is for more advanced students and the other is on model transformation which sounds highly abstract. So in the end it seems our choice is coming down to picking from a number of compromise or chance alternatives, all of which are, for different reasons, about equally attractive or unattractive. I am not sure yet what I will do.
In a wider sense, it is also understood that starting with the fourth term we are encouraged to look for a specialization, a longer-term project, a tentative niche. That concept is at the moment quite fuzzy for me, and probably for everybody else as well. So far, no field of interest has caught my attention as being especially worthy of specializing on it. In fact, I am probably not even aware of most possible professional specializations. I do know that I am not particularly keen on going either for front-end development (doing web applications, that is) or for embedded (microchip) stuff, both of which I consider highly technical and quite ugly, for different reasons. And unfortunately that means two things: First, that I am not interested in exactly those two areas that will decidedly be most sought after in the coming years. And second, that I am in a boat with almost everybody else in this study program. We are all of us being trained in one thing above all: Doing large-scale conventional Java applications, with the accent on business logic and back-end (database persistence). You may consider that backwards, seeing how the trend is towards web applications and embedded stuff (C is highly in demand, it appears). On the other hands, I think we can be sure that the large Java systems that many corporations, banks, insurances, and governmental organisations are running now will survive for many decades, just as COBOL (a 1959 vintage programming language) has survived into the 21st century, with allegedly 60 percent of all corporations world-wide still running COBOL systems.
So yes, for the moment I am still waiting to see if anything crops up, and else I will probably happily go and be a Java developer in some corporation or other. I am sure there are worse things. In the meantime, I will look around and see what’s going on in the department. It seems most professors have projects in which smaller or even larger groups of students participate (I haven’t even found out yet whether these are voluntary contributions or actual paid jobs; not that it mattered, money fortunately not being our problem), and several have already tried to interest us in these projects. But right now I find it hard to judge which of these I find interesting, what working on them would involve, whether I am even ready for that. I guess there will be time for finding out once the third term is over.