In mathematics and computer science, an algorithm is a finite sequence of well-defined, computer-implementable instructions, typically to solve a class of problems or to perform a computation. Algorithms are always unambiguous and are used as specifications for performing calculations, data processing, automated reasoning, and other tasks. Some IT companies require basic programing knowledge for manual testers even for junior position: 1) Knowledge of at least one software programming language. 2) Knowledge of object-oriented programming principles Knowledge of algorithms. 3) Ability to read algorithms in a code in a specific programming language.