There is a close relationship between programming and algorithms, the latter is written in a specific programming language to perform a specific purpose or solve a specific problem, and any programming language in the world is based on specific algorithm steps.

**Eng. Mohammed Alhassan**

No one who works in the field of programming or owns the basic concepts of it can bypass algorithms, or ignore their essential role, nor can he develop in his career unless he masters how to use them, and understand their nature, especially since they are essential in programming science and benefit from its languages circulating in the world, and a major contributor to the tremendous development that we are currently witnessing in the field of programming applications in various fields.

This concept, which may seem ambiguous to a segment of the public, is not a programming language, but can be explained as representing the methods of analysis and thinking that can be followed so that any programmer can write what is known as "code" in programming science. Algorithms – attributed to the scientist Muhammad ibn Musa al-Khwarizmi – are defined as a series of mathematical and logical steps that are used to solve a specific problem, or as a set of specific steps in a specific order according to which the programmer walks to solve a software problem. Accordingly, if the development of an algorithm requires a combination of methodology, science and creativity, its implementation leaves no room for interpretation and intuition.

There is a close relationship between programming and algorithms, the latter is written in a specific programming language to perform a specific purpose or reach a solution to a specific problem, and any programming language in the world is based on specific algorithmic steps, and therefore either side (programming and algorithms) is only done by the other, and each is complementary to the role of the other.

In simple terms, if the programmer wants to solve a problem and wants to express it in a programming language, he will first resort to algorithms, that is, logically think about the steps and stages of the solution, and put them in mind. Then comes the role of programming, which is to express these steps and stages through the language chosen by the programmer, and in clear words that he understands or can express through recognized forms. This means that algorithms can be used for all problems that need logical thinking about how to solve them, especially complex processes that need to be simplified and shortened in time to address.

**History of the Term**

There must be a historical look that shows us the sequence of use of the term algorithms, and whether those who used it meant to be attributed to the algorithmic scientist, or was it carved from two words used in one of the world's languages.

According to historical references, the term was used in the early twentieth century in mathematics and computerization, but its roots in history go much deeper. Old English dictionaries make it clear that the term refers to the decimal or Arabic counting system that Europeans called Algoritmi de Numero. It was widely believed that it came from the combination of the words Algiros (painful) and Arithmos (number). But the American computing scientist Donald Connuth was one of the first to mention that the term was attributed to al-Khwarizmi.

Some researchers believe that man since ancient times developed algorithms to draw geometric shapes and calculate their areas and volumes, and all the methods that humans learned to multiply and divide numbers are algorithms. Perhaps the oldest algorithm in history is Euclid's algorithm on calculating the greatest common divisor of two integers developed in the third century BC. Another famous algorithm is the one developed by the ancient Egyptians to draw a right-angled triangle, which Pythagoras turned into a famous theory.

Contemporary interest in the term algorithm dates back to the 1960s-1980s, when those interested in computer science and programming were trying to give this new scientific field an academic character independent of similar disciplines. The role of Konuth emerged in two important contributions: the first is what he mentioned in the introduction to his encyclopedia (The Art of Computer Programming) that the word "art" that came in the title is adapted from the Arabic name, to refer to the highest levels of scientific or professional performance, and he also mentioned that the term algorithms is attributed to Al-Khwarizmi. Konoth's second contribution was through a paper published in the Journal of the Association of Computer Machines (ACM), on the occasion of its 20th anniversary entitled "Ancient Babylonian Algorithms", in which he showed the ancient concept of the term, and that human civilizations practiced solving the problems they faced by developing descriptive solutions to how to solve them.

On the use of the term algorithms in the Arabic language, the Iraqi researcher in computer science, Dr. Abdul Ilah Al-Deyouji, says, "In 1972, I saw for the first time the first part of Konuth's book, and I was struck by what he wrote about the origin of the term Algorithm, and I also read his research paper on Babylonian mathematics, which attracted my great interest, which prompted me in 1974 to write a brief research in the university journal issued by the University of Mosul entitled "Algorithms in History", which was, I think, the first time. In which "Arabization" of the term was used attributed in a way that referred to the name of al-Khwarizmi in Arabic. I have never seen anyone who wrote in Arabic and used the term in the form attributed to al-Khwarizmi."

**Use Algorithms **

The term algorithm originally denoted three structures: sequence, selection, and repetition. In the sequence, the algorithm represents several sequential instructions, perhaps simple or of two types, the first of which is the choice: where there are problems that cannot be solved with a simple sequence of instructions, but you may need to test some conditions and then wait for the result of the test, if the result is correct, a path containing sequential instructions can be traced, and if they are wrong, another different path of instructions can be traced. The other type is repetition, which is used when solving some problems with which we need to repeat the same sequence of steps several times.

There are very fast algorithms used in the case of simple inputs, but if these inputs are too many, they fail and take a long time, and then we resort in this case to other algorithms that suit these inputs, and this means that the appropriate algorithm must be used for the appropriate situation in order for the programmer to reach a quick and simple solution to the problem he is addressing.

Algorithms have a number of characteristics, the most important of which is that they are applied to changeable data, give a specific result, have an finite number of instructions, consist of a set of precise rules that everyone understands, and that they are accurate and specific so that each instruction is described unambiguously. The scope of identification of the input data, if any, must be defined, and the algorithm must be effective so that anyone can perform all operations in a finished time using manual capabilities.

Cadre

**Algorithm**

Abdullah ibn Muhammad ibn Musa al-Khwarizmi (781 – 847 AD), originally from Khwarazm in present-day Uzbekistan. He lived in Baghdad during the reign of the Abbasid caliph al-Ma'mun and was the supervisor of the al-Ma'mun library. He has published a number of books, including: The First and Second Marriage Books, The Book of Marble, The Book of the Astrolabe Work, The Book of Algebra and the Interview. The latter book is his best-known book, and it is one of the reference books in the field of mathematics in general, and in algebra in particular. He has outstanding achievements in mathematics, geography and astronomy.