# Algorithms

### OVERVIEW

A computer program is clear instructions in a programming language that solve some problem. You can write this program in different programming languages, but the solution to the problem irrespective of programming language remain same.

Therefore, an algorithm is an independent solution to a computer-based problem. You will find following characteristics of an algorithm when you study them in this tutorial.

1. They have finite number of steps.
2. They take one or more inputs.
3. They produce one or more output.
4. Terminate in fixed amount of time.
5. Each step of algorithm is precise.
6. Algorithms are strongly based on Mathematics (not all of them).

Choosing a correct algorithm depends on lot of factors such as storage space required to solve the problem, or time required to solve the problem. Sometime there are more one algorithms to solve a problem.

In that case, you need to perform analysis of algorithms based on these factors and decide which one is more efficient in solving our problem. There are problems which are unsolvable, and you will learn how to find and categorize these unsolvable problems.