Issue #11 - Edsger Dijkstra

Welcome to the 11th issue of Heroes of Computer Science! Days are getting longer and temperatures are higher, I hope you’re enjoying Spring — if you are on the northern hemisphere, of course.

In other news, I’ll doing a 6-day run in Croatia next week, raising money and awareness for TRIBE Freedom Foundation. This is a London charity working hard to end modern slavery (an estimated 40 million people are trapped in modern slavery worldwide). If you want to help, head out to JustGiving — I will be grateful! 🙇‍♂️

Edsger Dijkstra

Edsger W. Dijkstra (if you’re curious about the right way to pronounce his name, look no further) was a Dutch computer scientist, one of the most influential figures of this field.

Mentioning and explaining all of his achievements on this issue is incompatible with the goal of the newsletter, which was conceived to be short and to the point. There are just too many!

Both as an engineer and a theorist, Dijkstra was pivotal in shaping Computer Science as a discipline. His contributions were broad and cover compiler construction, operating systems, distributed systems, sequential and concurrent programming, programming paradigms and methodology, programming language research, program design, development and verification, software engineering principles, graph algorithms, and philosophical foundations of computer programming and computer science. New research areas stemmed from some of his papers, and several concepts and problems that are now common place in computer science were first identified by Dijkstra.

You see, until the mid-1960s computer programming was seen more as an art rather than a scientific discipline. Dijkstra was one of the few academics who advocated a new programming style to improve the quality of programs, introducing the term “structured programming”. His ideas helped lay the foundations for the birth and development of the professional discipline of software engineering, enabling programmers to organise and manage increasingly complex software projects.

"The revolution in views of programming started by Dijkstra's iconoclasm led to a movement known as structured programming, which advocated a systematic, rational approach to program construction. Structured programming is the basis for all that has been done since in programming methodology, including object-oriented programming." — Bertrand Meyer in 2009

If you studied computer science or computer engineering, you’re most likely to hear his name in the namesake algorithm, created in 1956. The original version finds the shortest path between two given nodes, but many variants exist. Simply put, for a given origin node in a graph, the algorithm finds the shortest path between that node and every other. Knowing the right variables (or costs) of the graph in question, this algorithm helps with finding the most efficient path from A to B — you can apply this in city traversals, tracks of electricity lines, oil pipelines, and many other movements.

Dijkstra accumulated many awards during his lifetime, even having a prize renamed in his honour. Symposium on Principles of Distributed Computing (PODC) says it clearly: “No other individual has had a larger influence on research in principles of distributed computing.

Further reading

During his career, Dijkstra published many technical books spanning many fields, if you’re interested in researching his work further. Also, while researching for this issue, I came across an actual researcher that accumulated an invaluable trove of Dijkstra paraphernalia — photos, diaries, his college books… even his chair!

Are you eager to study the past developments of your field? Do you believe an appreciation for historical developments can help you grasp the problems of tomorrow? Then follow this blog and join me in reliving parts of Edsger W. Dijkstra's life.