**Purpose of this Article:**

*To give a broad knowledge of what are computer algortihms and give helpful resources to anyone who wants to get started.*

**What are Algorithms:**

Algorithms are used for calculation, data processing, and automated reasoning. In simple words an algorithm is a step-by-step procedure for calculations.

Starting from an initial state and initial input (perhaps empty),

^{}the instructions describe a computation that, when executed, will proceed through a finite^{}number of well-defined successive states, eventually producing "output"^{}and terminating at a final ending state. The transition from one state to the next is not necessarily deterministic; some algorithms, known as randomized algorithms, incorporate random input.^{}
Each algorithm has advantages and disadvantages in different situations.

**Sorting**is one place where a lot of research has been done, because computers spend a lot of time sorting lists. Here are five different algorithms that are used in sorting:
If you have a million integer values between 1 and 10 and you need to sort them, the

**bin sort**is the right algorithm to use. If you have a million book titles, the**quicksort**might be the best algorithm. By knowing the strengths and weaknesses of the different algorithms, you pick the best one for the task at hand.**Expressing Algorithms**

Algorithms can be expressed in many kinds of notation, including natural languages, pseudocode, flowcharts, programming languages or control tables (processed by interpreters).
Natural language expressions of algorithms tend to be verbose and
ambiguous, and are rarely used for complex or technical algorithms.
Pseudocode, flowcharts and control tables are structured ways to express
algorithms that avoid many of the ambiguities common in natural
language statements. Programming languages are primarily intended for
expressing algorithms in a form that can be executed by a computer, but
are often used as a way to define or document algorithms.

**Learning Resources:**

**Online resources:**

- http://openclassroom.stan
ford.ed... - http://www.topcoder.com/t
c?modul... - http://courses.csail.mit.
edu/6.0... - http://news.ycombinator.c
om/item... - http://cslibrary.stanford
.edu/ - http://algorithms.openmym
ind.net/ - http://blog.palantir.com/
2011/09... - http://www.samba.org/~tri
dge/phd...

**Introductory textbooks:**

- Lafore, Data Structures and Algorithms in Java: http://www.amazon.com/Dat
a-Struc... - Harris & Ross, Beginning Algorithms: http://www.amazon.com/Beg
inning-... - Schaum's Outline of Data Structures with C++: http://www.amazon.com/Sch
aums-Ou... - Sedgewick's Algorithms in C: http://www.amazon.com/Alg
orithms... - Dasgupta, Papadimitriou & Vazirani, Algorithms: http://www.cs.berkeley.ed
u/~vazi... - Skiena, The Algorithm Design Manual: http://www.amazon.com/Alg
orithm-... - Heineman, Algorithms in a Nutshell: http://www.amazon.com/Alg
orithms... - Knuth: http://www.amazon.com/s/r
ef=nb_s... *(just kidding)*

**Handbooks:**

- Samet, Foundations of Multidimensional and Metric Data Structures, ISBN 0123694469 ,http://www.amazon.com/Fo
undation...

**
**

**Other helpful resources to check out:**

- What are the best ways for a complete beginner to learn programming?
- Bentley, Programming Pearls: http://www.amazon.com/Pro
grammin... - Jason Brownlee's Clever Algorithms in Ruby: http://www.cleveralgorith
ms.com/... - What is the best textbook for data structures and algorithms?
- Programming Challenges: What are some good "toy problems" in data science?
- What are some great general algorithms books other than Knuth, CLRS, or Sedgewick?
- http://news.ycombinator.c
om/item... - http://research.swtch.com
/ - http://petr-mitrichev.blo
gspot.com/ - http://stackoverflow.com/
questio... - http://code.google.com/co
dejam - http://www.facebook.com/h
ackercup - http://inst.eecs.berkeley
.edu/~c... - http://software-carpentry
.org/ - Advanced CS Courses: http://the-paper-trail.or
g/blog/...

**
**

**You may like to read:**