## samedi 30 novembre 2013

### Algorithms - a Debut (II) [Basic Algorithm and Data Structures Courses]

A basic algorithm course is about building up the abstract steps intended to solve a specific quandary. It introduces the going-to-be programmer to the fundamental tools mundanely utilized, namely reading from the standard input, writing on the standard output, conditional control structure, iterative control structure, and of course a trivial introduction to scalar data types (int [short], char, real [float, double], and boolean). The accompanying programming course is to concretize the aforementioned.
Further, the importance of data structures (their prerequisite are the scalar data types) appear when a beginner programmer has to move to "next level": manipulating arrays. Arrays allow to gather homogeneous values within one variable at run-time.
Niklaus Wirth made use of a very, very critical equation to entitle his book (Algorithms + Data Structures = Programs), in the 1970s already.
A data structures course is supposed to introduce students to the plethora of ways to organize data before engaging into its algorithmic solution.
The fate of a program's performance is fundamentally based on the choice of the data structure.
A virtuoso programmer may succeed to achieve the intended results most of the time, but might be surprised when their solution is adopted within a production environment, when the algorithm is going to be exposed to data of all kinds (vertically and horizontally).
A gullible programmer is the one who would try to solve the Towers of Hanoi using arrays. A sophomore student in Computer Science (recently introduced to recursion) might think that the recursive solution of the Towers of Hanoi problem is a perfect suggestion.
Would Facebook have been as efficient as it is, if any data structure other than Graphs was chosen?

### Algorithms - a Debut (I)

Have you ever realized that Algorithms are omnipresent in our daily life?
For instance, reckoning bills and coins, consuming a beverage in a café, or taking the bus back and forth, are actions that involve a sequence of endeavors performed with the aim to achieve an eventual purpose.

Philosophically, I hope it is eligible to assert that an algorithm could be described as "Meta-Actions": Actions about Actions (imitating the definition of Meta-Data: Data about Data).

Nowadays, computer programmers are the main population that is concerned, or haunted, to some extent, by the consumption of the rules and laws offered by the field of Algorithms, to produce solutions whenever applicable, within the obfuscated realm of zeros and ones.

Indeed, a computer programmer in the twenty first century is someone who should acquire a training in basic algorithm, combined with a programming language (distinct courses, respectively), data structures, algorithm analysis along with, for instance, computer architecture, operating systems, compilers, and/or many more ...

## vendredi 29 novembre 2013

### Prelude - Etymology of Algorithm

Algorithm? What is Algorithm? More precisely, What is the origin of the word itself?

Let's analyse the word, before we analyse what it vaguely refers to as a field.

Dissecting the word: Algo + Rithm ?

The prefix Algo-:
Listing a few words in the dictionary, I encountered the word "Algology", which means "the branch of botany that studies algae" wordweb. Wrong track for sure.

The suffix -Rithm:
Phonetically, it sounds like Rhythm ... Intuitively, we might subjectively be leaned to provide an explanation related to "something recurring at regular intervals" wordweb. Yes, Rithm and Rhythm are two distinct words that have nothing in common, except the partial homonymy.

Dr. Rashid Bin Muhammad, the Computer Science professor at the University of Kent, included in the page of his Design and Analysis of Algorithm course, the picture and the name of an ancient scientist (born in Baghdad) like the following:

Abu Ja'far Muhammad ibn Musa Al-Khawarizmi

780 - 850
B.C.

Al-Khawarizmi, indeed, is the founder of the field of Algorithms, and that's from where the word came.
Conclusion, "The word algorithm is derived from the Latinization of his name" source.