AlgorithmsΒΆ
An algorithm is a step by step list of instructions that if followed exactly will solve the problem under consideration.
Our goal in programming is to take a problem and develop an algorithm that can serve as a general solution. Once we have such a solution, we can express it as a program and use our computer to automate the execution. These programs are written in programming languages.
Check your understanding

exceptions35: What is the most important skill for a programmer?
 (A) To think like a computer.
 Computers do not think, they only do what we humans tell them to do via programs.
 (B) To be able to write code really well.
 While it is necessary for most computer scientists to know how to write code, it is not the most important skill.
 (C) To be able to solve problems.
 Programming is all about solving problems. We use computers to automate solutions to problems and to do things faster and more accurately than we can do by hand or manually.
 (D) To be really good at math.
 Algorithmic thinking and mathematical thinking are in some ways similar. Practice at mathematical thinking will probably help in learning to program. But the content itself is different. You do not have to know a lot of math to be a good programmer.

exceptions36: An algorithm is:
 (A) A solution to a problem that can be solved by a computer.
 While it is true that algorithms often do solve problems, this is not the best answer. An algorithm is more than just the solution to the problem for a computer. An algorithm can be used to solve all sorts of problems, including those that have nothing to do with computers.
 (B) A step by step list of instructions that if followed exactly will solve the problem under consideration.
 Algorithms are like recipes: they must be followed exactly, they must be clear and unambiguous, and they must end.
 (C) A series of instructions implemented in a programming language.
 Programming languages are used to express algorithms, but an algorithm does not have to be expressed in terms of a programming language.
 (D) A special kind of notation used by programmers.
 Programmers sometimes use a special notation to illustrate or document an algorithm, but this is not the definition of an algorithm.