# algorithm

What is an algorithm? – Informally, an algorithm is any well-defined computational procedure that takes some value, or set of values, as input and produces some value, or set of values, as output. An algorithm is thus a sequence of computational steps that transform the input into the output.

• algorithm is a step-by-step solution to a given problem with a beginning and an end. Algorithms are written in ‘human readable’ language (e.g. Standard English) rather than a programming language.

Ada Byron Lovelace, daughter of famous poet Lord Byron, published a paper in 1843 that predicted the development of computer software, artificial intelligence, and computer music. In 1834, Ada heard of Babbage’s ideas for a new calculating engine – the Analytical Engine. Ada suggested to Babbage a plan for calculating Bernoulli numbers with the Analytical Engine. This plan is now regarded as the first “computer program.” Ada Lovelace lived more than a century before the first modern computer. She envisioned a world of machines capable of data processing more than a hundred years before the first ‘modern’ computers, and wrote a computing algorithm to prove the concept was possible.

Some suggested uses of computers she envisioned

• Bernoulli numbers – sample program

computer model – A program that runs on a computer that creates a model, or simulation, of a real-world feature, phenomenon or event.

• The scientists who build computer models start with important features of whatever events they hope to represent. Those features may be the weight of a football that someone will kick or the degree of cloud cover typical of a region’s seasonal climate. Features that can change — or vary — are known as variables.
• Next, the computer modelers identify rules that control those features and their relationships. The researchers express those rules with math.
• Scientists are always learning more from experiments and events in the real world. Researchers use that knowledge to improve computer models. The better computer models are, the more useful they can become.

What’s the problem?
Alan Turing – influential in the development of computer science, giving a formalization of the concepts of “algorithm” and “computation” with the Turing machine, which can be considered a model of a general purpose computer. Turing is widely considered to be the father of computer science and artificial intelligence.

Turing test – a test of a machine’s ability to exhibit intelligent behavior equivalent to, or indistinguishable from, that of a human. In the original illustrative example, a human judge engages in natural language conversations with a human and a machine designed to generate performance indistinguishable from that of a human being. All participants are separated from one another. If the judge cannot reliably tell the machine from the human, the machine is said to have passed the test. The test does not check the ability to give the correct answer to questions; it checks how closely the answer resembles typical human answers.

• Ask – What would it take for a computer to fool you into thinking it was human?
• Imagine – What are some of the things the computer programmer could do to make the conversation more human?
• Design, Build – How hard would it be to make the computer more human-like?
• Improve – Why would anyone want to have a computer that could pretend to be human?

That’s engineering

• algorithm – A group of rules or procedures for solving a problem in a series of steps. Algorithms are used in mathematics and in computer programs for figuring out solutions.
• variable – (in mathematics) A letter used in a mathematical expression that may take on more than one different value. (in experiments) A factor that can be changed, especially one allowed to change in a scientific experiment. For instance, when measuring how much insecticide it might take to kill a fly, researchers might change the dose or the age at which the insect is exposed. Both the dose and age would be variables in this experiment.

Engineering ideas

• computation, value, variable, mathematical expression, model, simulation, data, analytical

Do it
Here are some challenges for you to work on…

• What questions would you ask to determine if you were talking to a human or to a computer? How would you tell the difference? What “mistakes” would you expect the computer to make?