Computable
Computable if we can come up with an algorithm which will solve the problem in a finite number of steps
intractable problem
a problem that cannot be completely solved e.g. travelling salesperson problem
problem decomposition
The process of taking a big problem and breaking it down into smaller problems until you have fully explored each of the problems. (Each smaller problem = one module of code)
Abstraction
The process of deciding which details are needed to solve the problem and removing the unnecessary details to help solve the problem more easily.
Divide and Conquer
reduces the size of the problem over successive iterations: look at a set of rules, discard data then repeat with left over information.
Performance modelling
the process of carrying out mathematical approximations of how well models perform.
benefits of performance modelling:
Pipelining
The process of taking a task and splitting it into smaller tasks then overlapping the processing to improve the overall performance
Advantages of pipelining
-
disadvantages of piplining
drawbacks of performance modelling
- sometimes it is difficult to interpret the results
advantages of abstraction
disadvantages of abstraction
disadvantages of divide and conquer
advantages of modules
disadvantages of modules
Visualisation
The ability to picture a problem and its solution in a visual way to make it easier to understand
visualisation advantages
visualisation disadvantages
backtracking
the process of incrementally building up towards a solution, abandoning partial success then going back and trying again a different way.
concurrent programming
where one computation occurs simultaneously with another and doesn’t wait for the other one before advancing.
advantages of backtracking
- simple to implement
disadvantages of backtracking
Heuristic
Making use of experience to find an acceptable solution (not always the optimal solution).
e.g. rules of thumb, educated guessed, common sense. Often derived from a previous experience with a similar problem