“Whether you’re a young or an old researcher – keep learning and enjoy it!”
BLOG: Heidelberg Laureate Forum
Those were the memorable words with which Alfred Vaino Aho ended his #HLF21 dialogue with Jeffrey David Ullman. The two 2020 ACM A.M. Turing Award laureates sat down for an informal talk, which was initiated by fellow laureate Robert Endre Tarjan to discuss how they got started with computer science, what they expect for the future of the field, and just how useful textbooks are nowadays
The winding road to computer science
The two fresh laureates will likely be familiar to many young researchers in the field of computer science – if not for their seminal papers and research work, then for the iconic textbooks they published. In fact, that’s also a part of why they were awarded the Turing Prize: not just for developing fundamental algorithms and theory, but also for “synthesizing these results and those of others in their highly influential books, which educated generations of computer scientists”. But as is so often the case, the path towards computer science wasn’t always straightforward for the two.
“When I was an undergrad, I wanted to be an actuary,” Ullman recalls. “An actuary is basically a mathematician who works for an insurance company,” he explains.
That started to change when he landed a summer internship as an assistant programmer. Back then, the program looked nothing like you’d imagine it today. He was programming on a machine called the Burroughs 5500.
“It was the size of a giant refrigerator. You programmed it by sticking pins into holes. I learned to program that way.” Fast forward to another summer job in programming, and the path became a bit clearer. “At that point, I decided I couldn’t become an actuary.”
Meanwhile, Aho’s story, while different, is still strikingly similar. “It was all serendipity and luck,” he recalls. The Laureate was still unsure what to do with his future, so he decided to try graduate school. He considered two schools, MIT and Princeton – and decided on the latter because it sent him personal letters, whereas the former only sent standard forms. If you’re a university and want to draw in top students, personal letters sound like a good plan.
Writing good textbooks
Of course, being a good researcher is one thing, and it doesn’t automatically guarantee that you’re a good teacher or writer. Perhaps this is what truly set the two laureates apart – the fact that they were able to share their knowledge with students and the rest of the world.
Funny enough, it was another laureate (John Hopcroft, 1986 recipient of the Turing Award) that inspired them to start writing books. “Ullman, if you want to be a famous person, you gotta write a book,” Hopcroft had said. So they did.
It took them about two years to finish a book, they recall, and the most intense brainstorming sessions were on deciding the structure of the book – then, once the table of contents was done, each would work on their part.
Today, though, programmers aren’t really all that fond of books, and most information is found online, oftentimes for free.
“Not only has technology changed in incredible ways [..], but writing books has become somewhat of a fool’s errand, you can learn all sorts of things without picking up a textbook. The sales of books have gone way way down,” Ullman notes, though he doesn’t seem to be very saddened by the fact. “It’s not at all clear that the book is the best way to encapsulate knowledge today.”
Aho notes that the are still some advantages to books, especially when it comes to the process of writing them. But as Ullman notes, computer science book publishers seem to be spiraling: to make up for declining sales, they are increasing prices, which further drops sales.
Never stop learning
The two also took a moment to look at the state of the computer science industry and offer some advice to young researchers. Both are thrilled by the prospects and the level of multidisciplinary enjoyed by computer scientists at this time.
“What seems to be driving the field forward is the applications, you can do some amazing things with enormous volumes of data, something we could not imagine decades ago. If I had to give one advice, it would be – major in CS and minor in some application area, whether it’s literature or physics or biology,” Ullman says.
Aho is “bullish” on the field becoming even broader. He loves the different applications, from biology to quantum computing, although he admits that research, especially in the industry, has changed a bit. When he started out his career, he was told to study whatever seems important to him, which sounds a bit like a dream in today’s environment. But in leading companies, there is still room for that environment, and Aho encourages young researchers to aim for this type of environment when they can. It pays off to be specific and know what you’re looking for, he explains, as well as to focus on what you actually want to be spending time on.
Ullman also asked young researchers to be demanding, even in grad school.
“If you’re a student, your advisor is supposed to be working for you, helping you achieve what you need, not the other way around.”
Are algorithms good or bad?
The two also had a brief discussion on whether algorithms are “bad”. We sometimes see it in the media, that algorithms do this or that, that they cause biases and problems, but that’s missing the point. If an algorithm is leading to biased results, we shouldn’t blame the algorithm – we should blame the data, says Ullman. Aho agrees.
“The definition for a layperson is a recipe for doing something. How can a recipe be good or bad? It depends on what you do with it.”
The dialogue ended with all parties involved rightfully expressing regret that they didn’t have more time. Even though the laureates just scratched the surface of what they have to say, they still left plenty to think about – and perhaps the most important point was made right at the end. If you want to have a good career, make an impact, and enjoy the ride, the best thing to do is to never stop learning.
Yes, you can find online material on Aho and Ullman’s core compiler design topics, as well as detailed descriptions of general algorithms. Interestingly, algorithmic libraries (i.e. out-of-the-box software that implements common algorithms and which can be used unchanged) are still rare, and when the C language dominated, algorithms were not available as library elements at all. On Reddit you read (quote):
Only C ++ has changed this with its standard template library, but the algorithms in the standard template library are still very straightforward and very simple. More complex algorithms are found everywhere in software, but not as building blocks, not as subroutines or parameterizable software elements. If you want to build your own compiler, you either have to start from scratch or use a ready-made compiler front end. The same goes for databases.
Personally, I hope that one day this will change. That one day writing a brand new database engine will be a matter of 4 weeks of work, whereby the work consists of parameterizing general algorithms according to your own needs.