1900s

In the early 1900s, Bertrand Russell invented type theory to avoid paradoxes in a variety of formal logics. He proposed this theory when he discovered that Gottlob Frege’s version of naive set theory afflicted with Russell’s paradox. Russell proposed a solution that avoids Russell’s paradox by first creating a hierarchy of types, then assigning each mathematical entity to a type.

After Russell came the amazing Alonzo Church who introduced Lambda calculus to the world. Lambda calculus introduced a new way of viewing problems in Mathematics, and inspired a large number of programming languages. Lambda calculus played a big part in the development of functional programming languages. (Why it is important, and here).

You might know Claude Shannon from his work on the Shannon-Fano algorithm. Shannon founded the base of the sub-field of information theory. He concentrated his work on efficiently and reliably transmitting and storing information. At MIT he wrote a paper that demonstrated the powerful applications of boolean algebra and its electrical applications.

Next, we all know the great Alan Turing. He formalized a lot of concepts in theoretical Computer Science with his work on the Turing Machine. Turing also contributed heavily to Artificial Intelligence theory — a notable example being the Turing Test. Apart from his research, he was a codebreaker at Bletchley Park during WW2, and was deeply interested in mathematical biology theory. (His work and his papers are deeply insightful — you should give them a glance)

Grace Hopper was first exposed to Computer Science when she was assigned a role to work on the first large-scale digital computer at Harvard. Her task was to design and implement a method to use computers to calculate the position of ships. In the early 1950s she designed the language COBOL, and built the first program that interprets english code to binary code. Her vision played an incredible part in the formation of Computer Science and she foresaw a lot of trends in computing. (fun fact: she is credited for popularizing the term debugging!)

John von Neumann is a highly notable physicist and known for being on the manhattan project. But, he’s also important in the history of Computer Science. He designed and the Von Neumann architecture. Basically if you have not heard of it — I am very certain you have seen the model he came up:

One of his biggest principles was the idea that data and program can be saved on the same space. This idea implies that a machine can alter both its program and its internal data.

TLDR; Neumann was just on another level with his work. He contributed to pretty much everything that has any relation to Mathematics.

John Backus was the inventor of the FORTRAN language with his team at IBM. Backus many important contributions to functional programming languages and systems. Also, he served on committees developing the ALGOL system of programming languages. Alongside Peter Naur he also developed the Backus-Naur Form. The Backus-Naur Form is used to describe and depict programming languages.

Interestingly, Backus wrote an article on “Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs”, which is worth reading!

Alongside Backus, Peter Naur made major contributions in the definition ALGOL 60, and pioneered the Backus-Naur Form.

Noam Chomsky is known for being a linguist. But, he has made some indirect and direct contributions to Computer Science. His work on Chomsky Hierarchy and the Chomsky Normal Form are well known in the study of formal grammars.

Edsger Dijkstra is someone we all learn in algorithms class. In 1956 he was given the task of showing the power of the ARMAC computer. To show off the power of the ARMAC computer he came up with the shortest-path algorithm (Dijkstra’s algorithm). Next, ARMAC engineers wanted to cut the copper wire costs. To solve that task, Dijkstra rediscovered and applied a version of the shortest sub-spanning tree algorithm (Prim’s algorithm).

That’s the kind of guy Dijkstra was! Dijkstra also formulated the Dining philosophers problem. The xkcd relates to the paper Dijkstra wrote on how Go-to statements are considered harmful.

Donald Knuth is a pioneer in the field of analysis of algorithms. He worked on developing both the aspect of finding the computational complexity of algorithms and also the mathematical techniques for performing analysis on algorithms. He’s also widely known to be the creator of TeX typesetting system, for The Art of Computer Programming book, for the KMP (Knuth–Morris–Pratt) algorithm, and much much more.

Leslie Lamport laid out the foundations for the field of distributed systems. (fun fact: he won the Turing Award in 2013! He also lives in New York — so meet him if you have a chance. He also has a magnificent beard.)

Vint Cerf & Bob Kahn are known as the fathers of the Internet. They designed the TCP/IP protocols, and the architecture of how the Internet would be laid out.

Following their progress, in 1989/1990, Tim Berners-Lee invented the worldwide web. Alongside his colleague Robert Cailliau, he sent the first HTTP communication between a server and a client. This as you all know was an important milestone in Computer Science as it represented a new era of communication, and also demonstrated the practical nature of theories in Computer Science.