A Brief History of Algorithms and their Impact on the World

What would the world be without algorithms?

Joseph Pyram

Jul 18, 2020 ·

An 18th century BC clay tablet considered to be one the earliest forms of algorithms

An 18th century BC clay tablet (Wikimedia Commons)

In this digital age, algorithms are ubiquitous! From your phone to your computer to even your microwave, practically every device you use has something to do with algorithms. They are the literal foundation of every technology known to man. Given their importance in our daily lives, it’s worth taking a brief look at them to better understand what they are and how they became so relevant in our lives.

The term algorithm got its name from the Persian astronomer and mathematician, Abu Abdullah Muhammad ibn Musa Al-Khawarizmi (780 AD), dubbed the father of algebra (al-jabr).

He was from a Persian city known as Khwarizm, found in present-day Uzbekistan. The Persian Arabs (or Arabs in general) were given very common names like Muhammad, Musa, Abdullah, and so they would (and still) differentiate each other by their location (city, state, etc). In this context, if John Doe were American, he’d be known as John Doe al-Amriki, i.e. John Doe the American (to set him apart from John Doe the Canadian). Similarly, Muhammad ibn (son of) Musa became known as “al-Khwarizmi”, meaning the native of Khwarizm (in Arabic the letter ‘ya’, from which stems the ‘i/ee’ sound, is added to the end of a word to denote ‘belonging to’). Al-Khwarizmi wrote many important mathematical books that were later translated into Latin. It was his book on Arabic-Hindu numerals and arithmetic, called Al-Khwārizmī On the Hindu Art of Reckoning, later Latinized as Algoritmi de numeroIndorum that gave the word ‘algorithm’ to the Western world.

An algorithm is a series of step-by-step instructions that aim to solve a particular problem. From that definition, it can be seen that they have existed for as long as humans have been striving to solve problems on earth. Thus, things like recipes, mathematics, and physics are all forms of algorithms. It can be argued that the creation of the first artificial fire in the Wonderwerk Cave of South Africa, millions of years ago by Homo Erectus, constitutes our first evidence of the use of algorithms. However, most historians hold the view that the Babylonian clay tablets (1600–1800 BC) are the world’s first known algorithm. The Babylonians had developed a numerical system using cuneiform numerals to count and they preserved those calculations on tablets.

Although we can find instances of algorithms in Euclidian mathematics, Archimedes’ approximation of Pi, or Eratosthenes’ calculation of prime numbers, it was the work of George Boole in developing what is known as Boolean algebra, in 1847, that set the basis for computer logic today. Boole developed a system of logic to make calculations that used true and false values as basic units (binary algebra). This system would later be represented in digital form by 0’s and 1’s or binary digits in low-level programming languages.

Some decades later, Alan Turing came up with a mathematical model of a hypothetical computing machine. It used squares that contained symbols or binary digits in an infinitely long tape. This tape served as storage space for the data in the squares, computer memory. It has a ‘head’ or needle that can move to the right or left of each square to read, write, or erase the symbol within it, the basis for CRUD (Create, Read, Update, and Delete) operations in programming. Using this system this machine could simulate any algorithm, regardless of its complexity!

A typical Turing Tape used for making basic binary calculationsA typical Turing Tape used for making basic binary calculations

A typical ‘Turing Tape’

Mathematicians and computer scientists continued adding to Turing’s concept of a computing machine to advance technology to what we know today. Algorithms then evolved from binary operations to high-level, more human-friendly, programming languages like C++, Java, and JavaScript. Because they allow creating efficient, error-free software applications, they will continue to be important in the foreseeable future.