What makes good computer science and students?

Overview

I'd like to structure this article as follows:

What students of CS currently do
Properties those students need, both technically and socially
What a good CS faculty should do
How this relates to the ongoing changes in the german university system and its new priorities.

A real life example: doing a thesis in automotive software development

It's perhaps easier to start the complex question of qualities with a view on what our students currently need to do, e.g. for a thesis. Lately one of my students did a thesis in the area of automotive software development and testing. The thesis covered both theoretical and practical work (implementation) - something quite typical for thesis done in the industry. The work included:

Evaluating several small computer platforms for mobile use in cars. This included operating system, frameworks and graphic subsystem capabilities.
Designing a new architecture for communication protocols for device-car communication. Integration of existing protocols.
Performance models and measurements on different compilers and frameworks.
Design of the overall architecture for the port of a large data gathering framework to small and restricted platforms.
Design of a special user interface for mobile use in critical environments (one finger control, light etc.)
Design of an audio feedback pattern to communicate important car events to test engineers.

And this is only part of the thesis work done. It ended with a working prototype and some new and important inventions in user interfaces.

But this is not all. At the same time the student had to integrate into a development team and show team spirit and social skills. Without those the thesis work would not have been such a success.

What else should be mentioned here?

When he started the student had already learnt one profession. He was around 30 when he finished his studies.
He belonged to a group of students which all where a bit older because of previous professions. And all of them finished their CS study with a vast success.
He studied computer science and media - not technical computer science as the list of tasks in his thesis would suggest.
And the most important property: He is not the only such case. While the breadth of tasks seems to be extraordinary it is not really so. We see more and more thesis work done that include e.g. economic factors besides technical analysis and implementations. Usability has become a core element for industrial work. Studies in the area of mobile communications - one of our specialties here at HDM - frequently include legal and security aspects (RFID etc.)

You can find some more examples of successful student projects on our computer science and media homepage . There is lots of mobile computing work, distributed systems stuff (p2p etc.), audio, video, computer graphics and VR work as well as telematics and security.

So what makes a good student?

It sounds strange but nowadays the foremost qualification for computer science is social competence. The days where semi-autistic introverts where able to spend all their days behind screens are gone. If you can't argue for your ideas, sell them to the business then you won't see them become a reality. A good technical architecture today needs to include a risk/benefits analysis which expresses the reasons for a project in financial terms. Something our students learn in our project management seminars and workshops.

And it is now a well-known fact that companies check your team abilities and social skills before hiring. This usually happens during the thesis work at the company site.

Besides social skills students should show broad interests, ranging from engineering and math to the humanities. Around 50% of people working in usability and HMI have a technical background while the rest comes from humanities etc.

Previous knowledge in IT is NOT required but can help to make the start a bit easier.

Here at HDM the situation with respect to computer science is a bit special: Due to the name "computer science and media" we seem to get a rather interesting mix of talents which in turn makes for an interesting and stimulation atmosphere.

What makes a good faculty?

A good faculty does not believe in extreme filtering. If only one out of six students makes it into higher terms then something is fundamentally wrong here: Of all students one sith usually would learn everything almost without any help. So what are the profs for in such an environment? Just put yourself into the position of a lead architect or team leader in the industry: can you just throw out team members which lack in qualificatoins? In most cases a strategy of continuous improvement is the only way to go.

A good faculty does not raise barriers where none should be. It does not make sense to distinguish software and network people to the point that a network person does not dare to visit classes in software technology out of fear to not make the grade. And the same is true vice versa of course. Professors need to understand different talents and learn to respect them. This is something you know automatically once you've worked in the industry.

Computer Science is now a very broad area and it gets wider every day.

A good faculty encourages students - probably the single most important property an institute can have. Again, this is straight from the industry labs where it makes the difference between teams that thrive and those where fears blocks all activities and nobody takes a risk.

This is closely related to realizing that the time spent at the university is a time of practicing and errors to be made. University is NOT industry and should not behave so. Projects should be experimental with open ends. This is not to say that a project could not deliver a good prototype. But cooperation with companies should always draw a line when projedcts turn into product engineering.

A good faculty needs to leverage the students beginning with the first semester. They are extremely valuable resources - just put on your industry hat if you have trouble realizing this. This is where we make the most mistakes still. When a student in the second semester does not know key faculty members something is wrong. Of course if the focus of the faculty is on filtering only in the first couple of semesters nobody does really invest anything in the beginners...

To emphasize this point some more: if a faculty looses 5 of 6 students in the first half of their study something definitely is wrong. One out of 6 students typically will be able to learn everything she needs by herself due to her talent. Filtering out 5 of 6 students does no longer need professors - a wooden pole would do just as good. It is in getting the most out of the other students where good professors are needed most.

What role play students in a good faculty? Roles play an important part in large enterprise frameworks and in the organization of development processes but the social roles of students are rarely discussed. When I started teaching computer science in 2001 I did not have a specific role model for my students. Coming straight from the industry (I've never been an assistant at the university) I used what I had learned during my professional career. And because I was rather lucky and had excellent managers and companies to work for I tried to repeat with my students what had worked for me during all these years: I treated them just like young team members. This means to trust them with difficult tasks, to encourage them to take risks. But at the same time I am prepared to help out when difficulties arise.

Especially the risk taking part is one of the most important educational principles. At HDM we have a rather successful class for practical software technology (software here includes basically all computer science disciplines). Groups of students chose a project (sometimes proposed by the industry) and start working on it. They learn a lot during this process, e.g. not to underestimate efforts, how to solve team coordination etc. and of course a lot of technology as well. Lately more and more groups use techniques from project management to track their projects and this is another important goal. But frequently the students do not really know at the beginning whether they will be able to solve all the problems that might come up during the project. Just like in real development teams it does now depend on the level of fear within the organization whether a high risk approach is taken or whether the groups decide for a conservative, low-risk low gain strategy.Again, university should not copy or mimic metaphors and rituals from the industry.

By now you are probably wondering when I will finally say something about the scientific contents. I already said that I would favour a broad education. And with respect to content the focus should clearly be on concepts and not so much on tools. My friend Claus Gittinger (of Smalltalk fame) deserves the credit for making this absolutely clear for me. He e.g. showed me the language dependencies of design patterns. He questioned the current emphasis on generative computing with the remark that it is the weakness of our program languages - at least the popular ones like Java and C++ - that causes this shift.

MIT students start with the SICP (Structure and Interpretation of Computer Programs by Abelson/Sussman) book for a reason: to see the whole range of computing paradigms instead of just what is provided by popular languages. I think they are right. Peter van Roy explains this perfectly in his latest talk on A Concepts-Based Approach for Teaching Programming . I will discuss his wonderful book another time.

And I have to admit that I feel not so good about tool centric approaches already at high-schools. Teaching kids how to become a "Certified Microsoft Office Specialist" cannot be the goal of computer science education at schools. I am not as strict as Joseph Weizenbaum who would like to see computers banned from schools but I certainly agree with his emphasis on concepts over IT and tools.

Empirical research done at IIG (University of Freiburg) has shown that a very tool centric style of teaching used in computer science classes at high-schools made especially female students loose their interest in computer science topics.

The new university - cloned version

The "Zeit" magazine is currently running a sequel with the latest ratings of universities in Germany and neighbouring states. The lead article proclaimed the students as the new power at the universities - due to their decisions for or against certain universities and the money that goes with it. I am not so sure about this. I come from a blue collar familiy and I know that study fees would have made it impossible for me to go to university. To me the whole discussion about money, bachelor/master and so on looks like a desperate try to be more american than the americans themselves are. But this was always the case with use germans: whenever we do something we do it "right".

If the university education in America or Great Britain would be perfect I would suggest following this path as well. But if I see that e.g. the US need to import large numbers of specialists every year I get some doubts whether their system is the right one for us. Especially if it looks like we cannot attract so many specialists e.g. from India (and make India come up with the costs for education btw.).

The German states will use the bachelor/master system to reduce costs. This is no secret. Several are either planning to reduce the number of students allowed in master studies or plan to charge a lot for a master degree. Knowing this keeps the discussions about educational advantages over the current german DIPLOM short: there aren't any and if there would be we would not have the problem of loosing german scientists to the US in large numbers. (the last point is really strange: the same newspaper or news feature complains about low-quality universities in Germany and at the same time whines about loosing specialists to other countries.)

The criteria used in the ratings are sometimes rather funny. An important point seems to be the quality of the library. As the ratings are made by publishers this does not really surprise. But is it right? Honestly, once something comes out as a book in computer science it is pretty much outdated. OK, some books are very good for basic education, like the books by Tanenbaum. But then the price issue comes up: Students cannot afford to buy all the necessary books anymore and the smaller universities are unable to buy the required literature (not just books, especially the magazines as well) which would be needed.

Currently the only solution that works is to concentrate on free literature from the web - besides a few basic books. So the importance of the library for computer science students is rather questionable. But does the faculty offer a good course on internet search techniques?

The new university - genuine version

What if we would start thinking independently about the university of the future? What would we change?

Would we turn the university into a profit center and call the head from now on "Head of the board"? (no kidding - this is real). If study fees are supposed to create the money needed for this it will be a problem for most students.

Will we continue with the current practice of selection due to equipment and personnel constraints at the universities? Making many students waste a lot of time? This is not only unfair but also a waste of resources at both sides: the students and the university.. Germany - like other states - has kept the universtities at a very short financial leash while at the same time paying lip service to the students right for a higher eduction. 20 years ago I have been sitting with 200 other students in graduate seminars at LMU Munich...

But I hope that I could successfully argue against this practice: it prevents students from becoming team members early in the process of their education.

How will we see students? As resources that bring X amount of money every term? Or as persons that are young, enthusiastic, very clever and eager to learn?

Will we let the students decide - in a much more democratic way as now - on how to study? Will we let them not only participate but also steer? Sounds strange but most students I have met have a clear picture on why and what they have to learn for later work in the industry. Or will we turn universities in one more area where dubious lobbyists take undemocratic decisions?

What will be more important? Money, technology or organization? Somebody recently got a nobel price in economics for detecting that organizational change has the biggest impact on economic and social development. A rare chance to agree with a member of a profession that nowadays considers saving x% more to be a vision of the future (sorry, could not resist). I believe changes in organization are overdue at universities: More interactive courses, more team-oriented work. Less hierarchy

Will a service oriented approach (students are customers) be the right approach? I doubt it. Nowadays economics seems to think only along financial and service lines but the distinction between experience and the need to learn does not really seem to fit into those categories. Some companies tried to destroy even the last bits of informal spaces between team members, e.g. by tracking work items closely. Giving advice to or helping a team member had to be reported on the work or time sheet. Guess how this affected the teams? People simply started to no longer ask around for help. There is definitely more need for service orientation but I doubt that financial incentives will cause such a shift. It is only another indicator for the fact that we are reducing interpersonal relations more and more to economic relations.

Technology will play a role as well. Notebook universities with permanent access to the internet perceive a major change in course quality. Interactive rooms will allow us to work concurrently on software architecture and design.

And money will be an issue as well - finally. We have to remind our politicians and bureaucrats about the constitutional right on education. This knowledge seems to be lost nowadays and politicians babble about the need for bad universities (really - I got this in writing. They see a need for good vs. bad universities. Now - who with a sound mind would want BAD universities?) One must really have internalized neo-liberal nonsense to come to such conclusions.