Perfectionist computer scientist drives program quality

Some would say that computer scientist Prof Willem Visser has built a career on fault-finding. Others point out how his well-honed skills in identifying bugs or errors have saved them from serious blunders. Visser has been so innovative in the fields of model checking, software testing and analysis, and static defect analysis that, in 2022, he received his second A-rating (this time A1) from the National Research Foundation.

In 2017, Visser was one of only three researchers from Africa to be named a distinguished scientist by the esteemed Association for Computing Machinery (ACM), the world’s largest educational and scientific computing society.

Today, he is a senior principal applied scientist at Amazon Web Services (AWS) in the USA, and still affiliated with Stellenbosch University’s (SU’s) Department of Mathematical Sciences. He presents courses to SU honours students in computer science, and is supervising the research of two postgraduate students.

The early years

Visser’s general interest in computer science was sparked when, in the mid-1980s, he and his teenage friends from Strand High learnt how to change the back-end code of the games they were playing on his eight-bit ZX Spectrum personal computer.

He got hooked on software testing when, in his honours year at SU, he learnt about the field and its various concepts, for example static security testing, from lecturers such as Dr Pieter de Villiers and Prof Lynette van Zijl.

“It turned out that I was good at finding mistakes and at model checking,” muses Visser, who received his honours degree cum laude in 1990.

A master’s degree, also from SU, followed in 1993, and a PhD from Manchester University in 1998.

Doing research in search of a solution to a problem still excites him.


“There’s something special about the high that you feel when you realise that a concept that you thought and hoped would work, actually does when you apply it.”


A lasting impression

Visser joined SU in 2009 as head of the Computer Science Division, a position he served in until 2013.

In 2019, when he stepped down as vice dean of research of the SU Faculty of Science to join AWS, the highly competitive American tech space was by no means new to him. He had spent the first decade of his career, between 1998 and 2007, at the NASA Ames Research Centre in Silicon Valley, and worked as a senior software engineer at another Bay Area company, SEVEN Networks, between 2007 and 2009.

At NASA Ames, he was research lead in the development of Java PathFinder – a project he started with Klaus Havelund, now at JPL – and co-lead for Symbolic Pathfinder. Twenty-two years since the first versions were released, these open-source tools are still being widely used to find errors in Java programs. These include so-called ‘concurrency errors’, which can occur when various independent yet possibly related threads or processes run in parallel.

“Concurrency errors are easy to make, but quite difficult to locate,” Visser explains.

For him, quality control lies at the heart of software testing: “It’s about analysing software programs and finding possible errors that can be fixed in time. It’s also about suggesting better lines of code that can run faster and more effectively.

“Of course, the programmers are never happy when we highlight something or make suggestions. Never. Because it means that there is more work for them to do. But of course, it’s better to take the extra time to improve upon something than for it to eventually be hacked, or for a software program to show an error when it is used.”

Academia versus industry

Having worked in both academia and in industry, Visser is in a position to reflect on the two sectors on grounds of his firsthand experience.

“They are two different worlds. You cannot compare them.

“In academia, the goal is to develop something unique. It might only be a small part of a much bigger project, but it has to be new. The end goal is to publish something and/or to graduate, and to make the information available in the public domain.

“Being unique isn’t necessarily the driving force behind developments in the commercial sector. It’s more important that a program works well, and solves some kind of problem. Some programs that are developed in the process are often solely used internally, while others are sold for commercial gain.”

At AWS, Visser now has “the total luxury” of having at least 20 extremely bright PhD graduates in his team, all working together to solve issues. At a university, there’s normally one student working on one problem, or one part of it.

Visser fully realises, however, that a strong cohort of computer scientists is needed at academic and research institutions to ensure the sustainability of the tech industry.

“You need people to train the next generation of computer scientists working in industry.”

Recognition received

In the early 2010s, Visser developed a concept called ‘probabilistic symbolic execution’ with the help of two colleagues at SU: Dr Jaco Geldenhuys (then of the Division of Computer Science in SU’s Department of Mathematical Sciences, now also at AWS) and Prof Matthew Dwyer (now the Robert Thomson Distinguished Professor of Computer Science at the University of Virginia in the USA).

Probabilistic symbolic execution is used to derive probabilities in computer code. As such, it helps to methodically analyse and strengthen computer programs so that information does not inadvertently ‘leak out’ via security applications.

The trio officially introduced the concept to the computing world a decade ago at the 2012 International Symposium on Software Testing and Analysis (ISSTA). It has since stood the test of time. The first paper on the concept was recognised at ISSTA 2022 as the paper that has had the most significant impact on research or the practice of software testing and analysis in the first decade since its publication. As such, Visser and his co-authors were awarded the 31st ISSTA Impact Paper Award.

Over the years, Visser has received many similar awards for work that he was involved in that has since had an impact on research and development in his field.

The NASA Ames team’s 2004 paper ‘Test Input Generation with Java PathFinder’, which described their work on Java Pathfinder, was recognised with the 2018 Retrospective Impact Paper Award of the International Symposium on Software Testing and Analysis.

A 2000 paper, ‘Model Checking Programs’, received both the ACM SIGSOFT Impact Paper Award in 2020 and the Most Influential Paper Award from the International Conference on Automated Software Engineering in 2014.

In 2021, Visser received the Test of Time Award from the European Joint Conference on Theory and Practice of Software for a 2003 paper, ‘Generalized Symbolic Execution for Model Checking and Testing’, co-written with American colleagues during his first stint in the USA.

“Such recognition is very motivating as it shows that the work we are doing is important, and is making a difference.

“But I’m not just all about work. I like collecting wine, for instance, and doing long-distance running,” adds Visser, who is currently training towards his fourth Comrades ultramarathon.

This father of two teenagers believes it is almost non-negotiable today that young people pursuing a professional career should have more than a basic sense of computer programming and the workings of a computer by the time they enter university.

“Everything, absolutely everything is nowadays being run with the help of computer programmes.

“The only way a computer can help you, is if you know how to use it in such a way that it becomes possible. This is because a computer is, in essence, stupid. You have to tell it what to do before it can do anything useful. And for that you need to have some programming skills.”

Prof Willem Visser


Photo by Amanda Visser

Written by Engela Duvenage

Useful links

Systems and technologies for the future
Read more about our NRF-rated scientists here