An algorithm is a systematic procedure or a set of instructions to perform a particular computational task. Many people to associate algorithms with programming and believe that all algorithms were developed after the introduction of the modern computer (computer languages). This is a common misconception. Actually, algorithms are independent of machine and language and there are many nice algorithms that are more than a thousand years old. For example, Euclid’s algorithm to ﬁnd the greatest common divisor was introduced around 300 BC. Although the journey of the algorithm started before Christ, the speciﬁc word “algorithm” appeared much later. In fact, the word “algorithm” originates from the name of the Persian mathematician Abu Abdullah Muhammad bin Musa al-Khwarizmi1, who was part of the royal court in Baghdad and who lived from about 780 to 850 AD. Most probably the word “algebra” also originated from his works. Here it would be apt to note that in our childhood when we learned addition, multiplication, etc. we essentially learned a set of algorithms as those were the systematic procedures for doing speciﬁc computational tasks.