# Algorithms – Introduction

The objective of the course is to adopt a programming methodology based on the analysis of problems. You should take large scale problems and then break them down into a series of small problems that can then be solved. An algorithm is used to describe a programmable problem solving method on a machine.

An algorithm is a finite sequence of elementary operations constituting a calculation or resolution scheme for a problem.

## Fundamental Concepts

A program defines and specifies to a computer all the operations necessary to solve a problem.

1) Specify the problem
This can involve all parties but should result in both clear and understandable specifications and sufficiently precise and complete ones for step two.

2) Design
Now that you have sufficiently specified the problem you can start to design the solution using a series of modules. Each with a specification which says what the module does and an achievement which should say how. Each achievement should be sufficiently precise but doesn’t necessarily have to be on a computer. A test set based on the design should also be created.

3) Implementation
Each module should be written and tested separately and then integrated into the system which must then be validated using the the designed tests from step two.

4) Delivery
You should then check with the customer whether the design meets with the specification.

5) Maintenance
After delivery errors may appear and changes may need to be made due to updated circumstances.

## The Nature of Problems

When software becomes too large or complex it starts to face problems,

• It doesn’t meet specifications
• It is not reliable
• Costs exceed expectations
• It is difficult to maintain
• Porting from one installation to another can be fraught with peril
• It consumes more resources such as time and memory

Therefore a software education must also deal with,

• Project management
• Design and programming methods
• Algorithms
• How to create and test a program
• The tools found in a programming workshop

## Design Methods

Composition and problem decomposition

The Top Down Method is based on successive decomposition of the problem. For instance a first look at a problem might reveal that it is actually three different problems and each of those may be made of smaller problems each revealing a finer detail.

For example, if the problem is to translate the text from one language into another then some decompositions might be,

• You are going to need a dictionary with each word pair
• Text is made of sentences
• A sentence is a series of words separated by spaces and ending with a period

Ekluboko, K. (2018) Algorithme (Course material for Programmation : s’initier)