#### What is an Algorithm?

An Algorithm is a step by step method or set of rules for solving a problem. The algorithm is everywhere, and whatever systems you develop, you first develop an ‘Algorithm’ to run it. It is a precise series of instructions on how to accomplish the desired task. A formal algorithm used with computers or in mathematics is an unambiguous specification of how to solve a class of problems. Algorithms can perform Data processing, Calculation and Automated reasoning tasks.

In a technical or non-technical world, we use algorithms in our everyday activities, for, e.g., when you hit the Google search button, the search engine sifts through thousands or millions of web pages, to provide you with the information that you are seeking within a blink of an eye or a recipe to bake a cake or a do-it-yourself handbook. What makes this possible is the underlying algorithms – a set of simple mathematical rules embedded in the software.

The concept of ‘Algorithm’ has existed for centuries. Greek Mathematicians used algorithms in the sieve of Eratosthenes to find the prime numbers and the Euclidean algorithm to find the greatest common divisor of two numbers. The development of numerical algorithms was derived in the 9th century by the Persian mathematician Muhammad ibn Musa al-Khwarizmi, who introduced the Indian numeric systems to the Arabian world and from whom we derived the name ‘algorithm’ to denote computing procedures. In the Middle-ages algorithms for commercial transactions were widely used, but it was not until the nineteenth century that the problem of characterizing the power of algorithms was addressed. Alan Turing established the precise definition of ‘algorithm’ and the notion of computability in the 1930s. His work is also considered the beginning of the history of Computer Science.

Alan Turing and Emil Post later demonstrated that the Entscheidungsproblem was unsolvable which evolved to the next transformational development in the history of algorithms – the ‘Turing Machine’ which anticipated the creation of computers.

Algorithms are essential to the way computers process data. Many computer programs contain algorithms that detail the specific instructions a computer should perform (in a specific order) to carry out a specified task, such as printing students’ report cards or calculating employees’ paychecks. Thus, the algorithm can be considered to be any sequence of operations that can be simulated by a Turing-complete (Computability Theory) system.

#### Algorithms could be expressed in different kinds of notations:

##### 1. Natural Languages:

In neuro-psychology, linguistics and the philosophy of language, a natural or ordinary language is any language that has evolved naturally in human beings through the use and repetition without premeditation or conscious planning. Natural languages can take different forms, such a signing or speech. They are distinguished from formal and constructed languages such as those used to study logic or program computers.

##### 2. Pseudocode:

Is an informal high-level description of the operating principle of a computer program or other algorithm.

##### 3. Flowchart:

A flowchart is a kind of a diagram that represents an algorithm, process, and workflow. The flowchart depicts the steps as boxes of various sorts and their order by connecting the boxes with arrows. This diagrammatic representation illustrates a solution model to a given problem. Flowcharts are used in designing, analysing, managing and documenting a program or a process in various fields.

##### 4. Drakon-charts:

Drakon is an algorithmic visual modelling and programming language developed with the Buran space project following ergonomic design principles. The language provides a uniform way to represent flowcharts of any complexity that are easy to read and understand.

##### 5. Programming language:

A programming language is a formal language, comprising a set of instructions to produce various kinds of output. Programming languages are used in computer programming to develop programs for implementing specific algorithms.

##### 6. Control Tables:

Control tables are tables which control the control flow or play a significant role in program control. There are no rigid rules about the structure or content of a control table. Its qualifying attribute is its ability to direct control flow in some way through ‘execution’ by an interpreter or processor.

The design of the algorithm refers to a method or mathematical process for problem-solving and engineering algorithms. The design of algorithms is a part of many solutions theories of operation research, such as divide-and-conquer and dynamic programming. Techniques for designing and implementing algorithm are also called ‘Algorithm Design Patterns’ – Template decorator pattern or method pattern. One of the significant aspects of algorithm design is to create an algorithm which has an efficient run-time, also known as its Big O.

#### Following are the key steps in the development of algorithms:

- Problem Definition
- Development of a model
- Specification of the algorithm
- Designing an algorithm
- Checking the correctness of the algorithm
- Analysis of algorithm
- Implementation of algorithm
- Testing Program
- Documentation Preparation

In the world of computer science, an Algorithm is a set of steps for a computer program to solve a particular problem or accomplish a specific task. Algorithms put science in computer science. The critical factor lies in finding the right algorithm and knowing when and how to apply them enabling you to write exciting and vital programs. Take the case of Google maps – How does Google Maps figure out the shortest route from Singapore to Hongkong for you to go to Disney Land? – Google uses the route finding algorithm. Likewise, how does Nasa choose to arrange or when to rearrange the solar panels on the International Space Station? – Nasa uses the optimisation and a scheduling algorithm which are more complex than the non-technical or everyday algorithms like making a grilled chicken! If you already know about the existing algorithms, then you can save some effort and make your programs faster by application of the right one.

Across all sciences and on websites, efficient algorithms are needed today to analyse massive datasets or to select intelligently from a vast number of possible decisions. The new algorithms allow enormous computational power to be harnessed to do things which people really need and care about. Since not all algorithms are made equal, the Two most significant criteria are – a) It solves a problem and b) it does it very efficiently. The efficiency of an algorithm is measured based on how long it takes to run the code or process the data which also depends upon the particular programming language and on one specific computer. Therefore computer scientists use the technique called ‘Asymptotic Analysis’ which allows algorithms to be compared independently of a specific programming language or hardware for concluding that some algorithms are far efficient than others.

*To summarise, the Algorithm is in everything and everywhere. The algorithm basically rules the world! In my next article, I will be discussing the types of algorithms, and the uses cases.*

Feel free to check my BlockDelta profile for additional articles.