« mist blogs |  main  | Which sci-fi crew would I best fit in? »

On getting the university degree

Posted by dom on Thu Mar 16 02:25:50 +0100 2006

In mid October 2005 I finally finished my university degree and I’m now able to call myself Diplom-Informatiker Univ. It took me about 6 years – 1 1/2 years longer than the regular time of 4 1/2 years. Why did I take longer – mostly because of 2 things: For one I worked a year without leave in an Web-Company (the .com boom payed so well), and of course there was the time invested in the creation of SubEthaEdit . I studied at the Technische Universität Munich which is considered one of the best in Germany. Now that some month have passed I think I’m able to do some retrospective. Things I’ve learned and want to pass on to all the new computer science students out there:
  • On learning how to be a good programmer
    You simply don’t. There aren’t even lectures on programming or on specific programming languages. And the stuff you do in lectures and so called practical courses do not take you much further than any tutorial in any language does. In fact it is easily possible to get your degree without having to produce a single line of production quality code. If you want to learn coding you have to do it excessively in your spare time or get a part time job early on. And I think this is a major flaw in the german university education. Yes, abstraction and theory are important. But IMHO you need to have a good grasp of the basic skills in any profession to really understand the advanced concepts and theory.
  • Most lectures are bad or mediocre at best
    I actually went to many lectures that were on topics of interest to me – and dropped out because they just made me tired and left me wanting for a good book. Of course there are the few exceptional ones, and I urge you to find them. To find the professors that are really enthusiastic about their subjects. This is something I’d also recommend for the final stages of school: choose by the teacher, not by the subject. A great teacher can make any subject interesting and valuable. The contrary holds true too: a bad teacher can totally spoil all your interest and enthusiasm about a subject. There is the argument that students are getting less and less interested, and that’s also true to some extend. But the average lecture quality really has to improve.
Having said that, I want to mention the people at the TU Munich that really had an impact on me:
  • Dr. Peter Vachenauer who held the Higher Mathematics lectures in our first year. Not only is he and educator par excellence but he also has just a phenomenal breadth of mathematical wisdom. He was able to show me all the interconnectiveness between the mathematical disciplines and the essence of some great mathematical concepts. He put an enormous efford into his teaching and it just showed. And he takes pride in his work.
  • Prof. Dr. Christoph Zenger who showed me that there are professors out there, that really cared that students get the best options for their educational career.
  • Prof. Donald Kossmann who really did the best lectures at the TU Munich. Sadly he only held three and then went on to other universities. I regret deeply that I missed his first lecture.
  • Prof. Bernd Brügge Ph.D. whose enthusiasm for the Apple Macintosh and his decision to have an open Mac Lab gave me the exposure to Mac OS X that I needed to find an successor to my Acorn Risc OS machines.
  • Dr. Rafael Kobylinski who gave me the opportunity to explore and learn Mac OS X technologies in an university context by doing many courses, lectures and projects.
And finally some things I really would like to see in computer science university education:
  • Getting Real
    Let practical courses be real practical courses with companies and real projects – not extended tutorials. Show real world examples to go with the theory. If you talk about databases and indexing take the time and understanding of some real open source code out there. Little sandboxes of pseudo code are good for a basic understanding – but the reality differs enormously. When doing techniques like UML diagrams – show them on real world projects – not only praise their benefits, but also show their deficiencies. Teach things on the edge of current standards, not things already deprecated.
  • Teach basic skills
    Teach that the choice of language does matter – that there are different programming languages out there that have their specific place for speicific tasks. Provide additional courses for the main programming languages and teach more than one. Teach about bug tracking and versioning and the basic tools needed. Recruit students for that – students that know because they we’re interested in the subject. Let them teach and get credit points for it.
  • Embrace Open Source
    Teach that one man can make a difference. Teach how to read code. Teach how to contribute and fix bugs. Teach how to start an open source project. Teach how to take different open source projects and combine them into a new exciting one.
  • Teach passionate and from experience
    Stop making the professors do lectures about subjects they obviously don’t care or know about. It shows and it doesn’t help. Good educators can only teach about subjects they are really into.
  • Take interest and value initiative
    Inspire students to create software in their spare time, talk to them, lead them, take them to the point at which they become expoerts in a field, appreciate that.

5 responses to 'On getting the university degree'

  1. Although I didn’t study in Munich I definitely made the same experiences (in Berlin). Especially your advice to choose the lecturers who have passion for their field of research should really be mailed to every single one who begins to study.

    I read that you are part of the SubEthaEdit team. Since I like to use this brilliant piece of software I wonder about your rant on the fact that you didn’t learn how to be a good programmer. (By the way, could you add a possibility to allow bold or italic font in SubEthaEdit?) Well, obviously you are able to write good code. Therefore you should know that this is nothing you possibly could learn at the university because it is not an object of science. If you like to learn a trade you shouldn’t choose an university.

  2. I’m able to write what I think sometimes is good code because I started trying it when I was 16 and I am passionate about it. And I’m painfully aware that to really write good code you have to have passion. But the university could step down from that arrogant point where it defines what is science and teach worthy. There are many subjects and areas in computer science that very hardly qualify as science. I believe writing good code is art ad hase to have a place in computer science education. And I think good programming is essentially very important to understand the finer points of e.g. algorithm complexity or database architecture.

    About bold an italic fonts in SubEthaEdit: When you use the Conference.mode you can have those via syntax hilighting when you add * or _ around the words. Do a “File -> New -> Conference” to see a template. If you mean more something along the lines of full RTF Text editing: have patience :) .

  3. Hallo Genie, bin durch Zufall in Ihren blog gestolpert (via cocoa-dev) und möchte mich als TUM alumnus (Maschinenbau, 1993) dem Lob für Vachenauer (HM I-V) und Zenger (Ferienakademie) anschliessen. Bezüglich der geforderten Vermittlung praktischer Programmierfertigkeiten stimme ich mit 46halbe darin überein, dass diese nicht Aufgabe einer Universität ist und im Rahmen des üblichen Studienbetriebs wohl auch schwerlich ihren Platz fände. Was ich mir allerdings vorstellen könnte ist eine Anwendung der wissenschaftlichen Methode auf das Thema Programmiertechnik (-technik, nicht -praxis). Falls der Informatische Fächerkanon eine solche Disziplin noch nicht ausweist und Ihnen die Sache am Herzen liegt, nehmen Sie sich ihrer an! Es besteht Bedarf an gesicherter Erkenntnis auf diesem Gebiet, denn damit würden Sie etwas berechenbar machen, was bislang der subjektiven Einschätzung einzelner überlassen bleibt, oft mit katastrophalen Folgen für Budgets und Termine. Ein blosse Zusammenstellung praxisbewährter Methoden reicht allerdings nicht aus. Sie müssen kategorisiern, postulieren, Modelle formulieren, testen, messen und vor allem quantifizieren, idealerweise unter Einbeziehung psychologischer und ökonomischer Gesichtspunkte. Irgendwo müssen Sie sich dann auch von der Softwarearchitektur abgrenzen, die ja nun bestimmt in allen erdenklichen Facetten erforscht und gelehrt wird. Was immer Sie tun, es muss auf akademischem Niveau bleiben. Das Handwerkszeug (“bug fixing”) ist einer wissenschaftlichen Betrachtung nicht würdig (es sei denn, es gelingt Ihnen ein Durchbruch in der Automatisierung), das eignen Sie sich einfach so an, nebenbei, von selbst, en passant. Oder wie Meyberg sagen würde: “Das machen Sie intuitiv richtig.” Eventuell liesse sich aus dieser hypothetischen Fachrichtung eine Erstsemestervorlesung mit (unter anderem) praktischen Tipps ableiten (“Programmiertechnik I”). Um ein paar tausend Stunden tatsächliches Programmieren kommen Sie allerdings nicht herum, und hierfür bietet die Semesterregelung der TU mit pro Jahr fünf Monaten vorlesungsfreier Zeit mehr als genug Gelegenhet. Der Kontakt zur Praxis ist wesentlich, aber die Praxis findet per Defnition nicht an der Universität statt. Lassen Sie mich abschliessend Vachenauer zitieren: “Mathematik lernen Sie nicht vom Zuschauen, das müssen Sie tun.” In diesem Sinne…

    Oh and yes, Adobe sucks, big time (Stichwort FrameMaker, and their overall business strategy)

  4. Um den Begriff “wissenschaftliche Betrachtung” in der Informatik anzuwenden müssten in meinen Augen dafür erst einmal empirische Standards her. Wieviele Papers und Themen der Informatik gehen nicht über ein “hab ich mir mal angesehen, und finde ich ne nette idee” hinaus. Die wissenschaftliche Kategorisierung die z.b. in der Vorlesung verteilte Anwendungen von Herrn Prof. Schlichter stattfindet ist gelinde gesagt Mumpitz. Und trotzdem gibt es die Vorlesung. Wenn diese hohen Standards angelegt werden sollen dann bitte auch an alle Vorlesungen und Themenbereiche. Wenn nicht (und ich sehe nicht wer diese Standard wirklich einführen sollte), dann doch in den “wischi-waschi” Vorlesungen bitte wenigstens best practises, bzw. vermittelt den Studenten doch wenigstens dass die Praxis wichtig ist.

  5. I agree with most of your points. I’m at ETH Zurich in Switzerland. IMHO lecture quality here is pretty good overall (there are exceptions).

    In the “Fachstudium” (3rd year and onwards), you’d have to conciously search for a professor who didn’t teach his subject with enthusiasm. Kossmann, who you mentioned, is now a professor here. Unfortunately, I made the decision not to visit his lectures (I should’ve known earlier :-).

write a comment.... (textile enabled)