The module introduces formal techniques to support the design and analysis of algorithms, focusing on both the underlying mathematical theory and practical considerations of efficiency. Topics include asymptotic complexity bounds, techniques of analysis, and algorithmic strategies.
Intended learning outcomes
Knowledge &understand
Learn how to analyze algorithms and compute running time.
Learn about asymptotic analysis of algorithms.
To understand the concepts of algorithm design
To recognize the classification of recursive and non-recursive algorithms
Explain the basic model of divide-and-conquer approach, some examples.
Recognize the methods of analyzing the execution time of recursive algorithms
To become familiar with the better use of the concept of dynamic programming
Learn about graph algorithms
mental skills
To distinguish between (Big O, Big Omega, & Big Theta) Asymptotic notations
To choose the best algorithm to solve a problem.
To distinguish between recursive algorithms & Non recursive algorithms
To compare the execution time of the different algorithms.
Practical & professional skills
Analysis of the running time of different algorithms
Analyzing the complexity of an algorithm using asymptotic notations.
Determine the efficiency of an algorithm, and compared it to others to solve a problem.
Use different concepts in designing algorithms
General and transferable skills
To be able to use modern technological tools.
Able to using internet and scientific references for independent study
Able to using internet and scientific references for independent study