Published: 18 May 2021

Meet the academic: Professor Gregory Chockler

Professor Gregory Chockler is an expert on distributed computing whose career has taken him from Russia to Israel and the USA. Now a member of our Department of Computer Science, he continues to combine teaching with research in industry.

How did you get into computer science?

I was always fascinated by maths. I also wanted to impact the world, but the applications of maths can be a bit abstract. Computer science combined my love of maths and my fascination with engineering. I see computer science as a type of applied maths, which lets me immediately see the fruits of my labours.

Was there a single moment that prompted this fascination?

I remember my first experience with a personal computer. It was a very primitive device. For comparison, it was less powerful than a modern smart watch – but it still occupied an entire room. There was lots of hardware and a typewriter you used to input a program. There was no screen, though, so you had to be very careful when typing anything in.

I entered a piece of code solving a simple maths problem and the machine slowly whirred into life. Then it started printing the answer. It was like magic! I could think about something as a piece of code and it could become a material thing in the real world. That was a key moment for me.

Did you study computer science at undergraduate level?

Yes. I studied the subject in the 1980s in the Soviet Union. Unfortunately, we had limited access to computing equipment, so my interest was mainly theoretical back then.

I left Russia in 1990 and I went to Israel, where I finished my undergraduate and postgraduate degrees. I did my postdoctoral research at MIT in the USA, then I came back to Israel to work at the IBM Research Lab. I left for the UK in 2012. I’ve lived and worked here since. I joined the University of Surrey in January 2020.

What is your current area of research?

I investigate distributed computing. This means I examine how machines in different locations can harmoniously work together and ‘talk’ to each other to solve a common problem while communicating using small chunks of data, called messages.

For example, if you’re trying to solve a problem, you normally have one computer or one central processing unit (CPU). You create an algorithm to address the problem, input it into a single CPU and that’s how it works. But what happens when you need to use more than one CPU to solve an issue? After all, each individual machine has its own processor and memory. So, which machine does what and how is the work divided?

Another potential problem we face is that some machines may crash. Or hackers may attack a vulnerable point in the network and change the code, so the algorithm does something totally different. Can we create failsafe mechanisms within distributed systems to ensure the overall algorithm runs correctly in that scenario?

What are the real-world applications of this?

A lot of information now sits in clouds, which are essentially big distributed computing systems. The amount of data stored in clouds is huge, so we use distributed algorithms because you can’t have a massive amount of data in just one place. The load needs to be shared.

You also can’t have interruptions in service in these huge systems. Amazon prides itself on the fact it remains online for 99.99999% of the time. To achieve this, it needs to have a robust distributed computing system in place.

My research has applications in blockchain and cryptocurrency technologies, too, because you don’t want malicious agents disrupting ledger technologies.

Do you work in industry?

I have several industrial collaborations. One of them is with IBM, where I worked for several years before returning to academia. That project investigates blockchain technologies.

I’m also working with Stellar, who are one of the largest blockchain-based payment networks in the world.

I’m working on techniques to increase efficiency and scalability of these systems, and make them more resilient to failures.

What are the main courses you teach on?

I created and teach a distributed systems course on the undergraduate degrees. I enjoy teaching it. It has a component where students develop distributed algorithms capturing the key ideas underlying the distributed systems employed by today’s leading cloud and blockchain companies. I had a lot of positive feedback.

Why should people study computer science?

There’s a famous saying that computer science is no more about computers than astronomy is about telescopes. It’s about algorithms, complexity and computation. Studying this subject gives you a fundamental understanding of how you solve issues computationally.

Many of the problems we want to solve today are computational in nature. This could involve writing a piece of code to help protect against cyber attacks, create web applications, enhance computational thinking, improve storing and processing data, and extract insight from data.

Finally, how do you relax away from the lecture theatre?

I’m into sports. I play tennis and train quite a lot. I also like to travel.

Find out more about studying in our Department of Computer Science.