"Research is important not only because it’s fun, but because it’s essential for good teaching"
ETH Professor Thomas Gross retired five years ago, but continued to be responsible for the lecture ‘Introduction to Programming’. Now, his final retirement is imminent. In this interview, he describes his experiences at ETH Zurich, the developments in his field of research over the last thirty years and shares his thoughts about AI assistance in programming.
Professor Gross, you are about to retire definitively as a professor at ETH Zurich. How do you feel about that?
Thomas Gross: Not too bad, not too bad. Everyone has to retire or stop working at some point. Here in Switzerland, that point in time is determined by your date of birth.
Let’s go back a few years. What sparked your interest in computer science?
During my school days, I had a teacher who pointed out to me that computer science was going to be a new degree programme, and that it might be interesting. When I started studying it, it wasn’t even a real programme at my university yet. And in fact, some people advised me not to study it, because they thought it was useless. They said the subject matter would be covered by other programmes such as mathematics and electrical engineering. Back then, you had to decide whether you wanted to study with the physicists or the mathematicians in your first year. I chose the physicists, which was a good thing, because I realised after a year that I definitely didn’t want to study physics. Ultimately, however, I found computer science particularly interesting, because even in the first semester, you come across problems that don’t come up until much, much later in other disciplines. For example, functions that can’t be calculated and for which there are no solutions.
So you didn’t have that many fellow students in your lecture halls?
No, we were either with the mathematicians or the physicists. The physics lectures filled a hall with around 450 seats. About 400 of them were physics beginners and about 50 computer science students.
After completing your studies in Munich, you went to Stanford in the 1980s, where you worked as a doctoral student under Silicon Valley legend John Hennessy. What was your experience there like?
It was an interesting time, but of course the opportunities we had back then don’t compare with what we have today. You had to work harder and longer to achieve things, because the simulations took so long. When I came to Stanford, the computer systems lab had just four terminals with a 300 baud modem to dial into a computer. Not too impressive from today’s point of view. I switched to electrical engineering at Stanford, partly because John Hennessy worked in that field. But I liked it – intuitively, let’s say – because the practical issues were often at the interface between computer science and electrical engineering. Early on at Stanford, we received a donation from Xerox PARC, namely the first Altos. Those models were among the first PCs, with a bitmap display and a mouse. At the time, this was revolutionary, and efforts were made to use the devices in research and in teaching. It was also the time when people were thinking about how to use very-large-scale integration devices. I took a course in my second year where we wanted to build a processor. We thought about how we could use software to eliminate some of the difficulties that arise when building one. That’s how I came to be involved in that field.
Why did you decide to pursue an academic career?
Even when I was at school, I explained things to a lot of people, not just in mathematics, but in other areas as well. And my classmates often told me that I should become a teacher or work in teaching. At Stanford, I attended a course on career opportunities in computer science for older doctoral students and younger assistant professors, which was held by the then head of department. In it, he explained to us that if you go to a research lab as a computer scientist, the lab staff get older with each passing year and there is a lack of young influence. But if you stay at university, you come into contact with young people time and again. This gives you the opportunity to continually engage with new ideas and perspectives. I found this outlook interesting.
So industry would never have been an option for you?
If I had gone to a company, I might have made more money, but not necessarily. I know a lot of people who didn’t get rich that way. But it’s also the case that in the US, for example, industry and research aren’t as strictly separated. There, professors receive nine months’ salary, as they only teach for nine months a year. They have to make their own financial plans for the remaining three months. Some pursue research projects that are funded during this time, while others work in or with companies. So I’ve never really missed the practical challenges of research. Compared to Switzerland, companies in the US are more interested in supporting university research. The funding instruments that exist over there are often much more targeted than here.
“Programming is a key activity that you have to be able to understand and assess as a computer scientist.”Professor Thomas Gross
In 1994, you became an associate professor at ETH Zurich. How did that come about?
A friend of mine whom I met at Carnegie Mellon University moved to ETH after a few years. He invited me to Zurich, and I came here to get a good look at everything. When they advertised a professorship, I applied. And I got the job, even though someone said in my interview that what I said was the stupidest thing he’d ever heard. So I decided to come to Switzerland. But at the time, I was still heavily involved in projects at Carnegie Mellon. I was also the only tenured professor in my field. So I negotiated the option of returning to the US for 50 percent of the time after two years. From 1996, I commuted between Switzerland and the US for four years, which I would not recommend to anyone in retrospect. In 2000, I returned fully to ETH Zurich.
What was the focus of your research?
The focus of my research is actually what we have yet to solve: software development. How do we develop software? What kind of tools do we need? What kind of abstractions? What concepts? And how do we teach all of this to other people? I worked in compilers for a long time. Compilers are tools that translate one programming language into another. This is a fundamental problem. You have to understand the technology thoroughly in order to develop software. I worked with my colleagues on parallel computers long before that was in fashion. I built hardware when I had to. Above all, however, I developed software in collaboration with hardware specialists. We had to decide where we wanted to draw the line: what does the software do, what does the hardware do? I have also always been concerned with the question of how we can judge what makes software good. After all, it’s still difficult to be absolutely sure. Software development remains challenging, but today we can use tools to increase the repertoire of ways to analyse, optimise and verify it.
How have you witnessed your field of research develop over the last 30 years?
Especially in the area of programming languages, there has been a gigantic expansion. For example, in the early 1990s, the tech firm Sun Microsystems developed the Java programming language. I myself used it for the first time in a lecture in the Autumn Semester of 1996. There were people back then who said: Sun will control the world because Sun has Java. That was what many people thought back then. Meanwhile, Sun has become a footnote in the history of computer companies. The development of Java was different: when the first version was released in 1995, the manual still consisted of 85 pages, including a preface. The next version was 400 pages, and the one after that was 800 pages.
You’ve been responsible for the Introduction to Programming lecture for several years, and continued to teach it even after you retired. What is the connection here?
I was asked to take over the lecture about three years before I retired. I was then allowed to introduce various changes, such as having the students create real programs during the exam, instead of just writing lines on paper. Programming isn’t everything, as I’ve always said, but it’s a key activity that you have to be able to understand and assess as a computer scientist. And like many things, developing a lecture is an iterative process, so I was interested in following this development for a while.
Programming languages and tools have been subject to constant change over the decades. How has this affected your teaching methods
With each new version of the Java programming language, the lecture needs to be adapted. Even if not all the changes are relevant, I still had to revise around a quarter of my slides every year and make sure that the students have the current language version on their computers.
But the basic task has remained the same throughout this time: motivating young people to think and act independently. I always told my students that you don’t learn to program just by listening to me or reading things. You have to do it yourself and try things out.
Can you think of anything that needs to change in the future in terms of knowledge transfer in the field of software development?
I think there are questions that need to be clarified, particularly in the area of AI-based tools. These tools have many advantages, but also disadvantages. One disadvantage is that they take up a lot of processing power. Starting this semester, all new students must bring their own computers. Allowing AI tools to be used in an exam could give students with powerful multiprocessor devices an advantage over those with simple computers. How do we ensure that things stay fair?
Using AI tools such as ChatGPT for programming has become common practice. What do you think of this development?
You know, when the first compilers came out, people said, “Oh, that’s bad.” They thought compilers were inefficient compared to assembly language programmers. But compilers caught on. I think there are advantages to these AI-based systems as well. But will tools be able to solve each and every problem? Absolutely not. After all, you have to be sure that the tool not only solves the problem, but also that there are no vulnerabilities or bugs that will cause problems later on. Another interesting question that arises is: how can I be sure that students using the same prompt will get the same answer from the AI system? In the end, it’s a matter of luck whether someone can quickly develop a program that meets the requirements – and that shouldn’t be the case.
What aspects of programming do you think will remain relevant in the future?
The question of dependencies: what do I want to do? When you set out to develop a program, it usually means that someone has a specific requirement in mind. The task is to write a program that includes all the aspects that can currently be thought of within that context. But that’s not all. Your program also needs to handle the problems that you don’t think of. Let me give you an example: in Switzerland, it was possible to register online as an organ donor. When implementing the system, no one had initially thought of incorporating any form of confirmation. So you could sign up your neighbour without them being asked. Software development will remain challenging.
Have you noticed a change within ETH and the department over the years?
My impression is that over the past 30 years, a certain rethink has taken place at ETH Zurich. This is also due to the fact that ETH has recruited more professors from English-speaking countries. In the American system, for example, the entire department is responsible for the education of doctoral students. I have noticed that more and more people in our department have started following this Anglo-American model. In particular, the department taking responsibility for how people are doing has been good for our institution.
“Working at an university gives you the opportunity to continually engage with new ideas and perspectives.”Professor Thomas Gross
Over the decades, the number of women studying computer science has also increased. Has that affected your lecture?
I think it’s important that everyone who is interested in computer science has the chance to study this subject. No one should think that computer science is only for “geeks” or that it’s too hard for them. For the past three years, we have offered a preparatory course for the Introduction to Programming lecture. This has given students with little or no programming experience the opportunity to do simple exercises two weeks before the start of the semester. Does that solve all of the problems? No. But I found that in percentage terms, more women took part in this preparatory course than in the study programme as a whole. Some of these women even worked as assistants the following year. This shows that the course has had a positive effect.
What have you enjoyed most about everyday life at the university
Definitely the students’ questions. Observing how students develop interesting thoughts and supporting them in their learning process. There are students who have hardly any specialist knowledge at the beginning of the semester and suddenly ask really good questions by the end. Or when I see doctoral students who may initially be reserved, shy and uncritical of what others say, but then suddenly are able to develop a system and draw a line. Suddenly, they can clearly state what they do or don’t want to do, and are sometimes even prepared to contradict me. Nothing is more boring than having people agree with you all the time.
ETH Zurich is full of young people. Does that keep you young?
As I said, every year we have new people with different backgrounds and different levels of knowledge, and we want to teach them something. That, I hope, actually does keep me a little bit young. But even in companies and industrial labs, it’s still possible to grapple with new things and stay young that way.
Is there a particularly valuable memory of your time at ETH Zurich that you would like to share with us?
At ETH, a lot depends on individuals, more so than at other institutions. This organisation can largely work with very few structures, which I really like. There were only two rules at Carnegie Mellon: “I will be a reasonable person” and “I will assume that all others are reasonable people.” ETH Zurich has also functioned well for a long time without a comprehensive set of rules. If you focus on training skilled workers for the local economy, a lot comes naturally. Of course, we also train doctoral students, some of whom remain in Switzerland while others go abroad. We accept international students as well. The basic idea is that we deal with current issues in our education, which requires that we stay up to date ourselves. Research is important: not only because it’s fun, but because it’s essential for good teaching. A colleague once told me that our cutting-edge research gives us a head start of about five years in teaching. Of course, others will catch up at some point, but it helps for us to think ahead a bit. Like some North American universities, ETH does a very good job of this and should continue to do so. This is more important than having an extensive set of rules.
Is there one piece of advice you have always given your students that has stood the test of time and will continue to do so in the future?
There are lot of people who are happy here, but I think it’s good to go abroad. I myself did internships in South Africa and Japan and studied in the US. Those experiences opened my eyes in many ways. And I also know from my students who are currently living abroad that leaving the country has been an interesting experience for them in many respects. For example, I had a student who worked in India for a company with 120,000 employees. Sizes like that are difficult for us to imagine. Yet this type of experience is crucial to finding your way in a globalised world.
What’s next? What are your plans for the future?
I don’t plan ahead much, and I’m busy enough at the moment. I continue to be involved in various conferences and organisations. And there are still issues that occupy us in the Introduction to Programming lecture: what factors influence students’ examination performance in the first semester? How can we help them achieve better results? If you devote yourself to a topic with sufficient interest, you always come across new questions. There’s a lot of work left for us to do.
Thomas Gross was Professor of Software Development at ETH Zurich from 1994 to 2024. His research interests include the development of various tools for analysing and measuring the performance of parallel programs. He has also worked on the question of the extent to which software on modern processors can replace complicated hardware. Prior to his ETH professorship, he completed his doctoral degree in electrical engineering at Stanford University and then worked as a postdoctoral researcher at Carnegie Mellon University. On 7 October he will hold his Farewell Lecture at ETH Zurich on Static and Dynamic Dependencies.