IT323/SCS3203 Design and Analysis of Algorithms
[Summary]|[ Objectives ]|[ Modules ]|[ Teaching]|[References ]|[Assignments]|[ Exams]|[ Grades ]
Course lecturer(s): Denis Ssebuggwawo, (PhD) & Assoc. Prof. Kim IL Hyon
Teaching Assistant(s):
Pre-requisite(s): IT215/SCS2105 Data Structures and Algorithms, IT214/SCS2104 Programming & Progamming Methodology I
IT113/SCS1103 Discrete Mathematical Structures
Consultation hours: Tuesday: 3.00 – 5.00 p.m. (Course Lecturers), Friday: 3.00 – 5.00 p.m. [or by Appointment ]
Lecture schedule: DAY : Tuesday: 10.00 – 12.00 p.m. (Assoc. Prof Kim IL Hyon) Venue: IICD Upper Lab,
Friday: 10.00 – 12.00 p.m. (Dr. Denis Ssebuggwawo) Venue: Computer Lab S2.40
EVENING : Tuesday: 7.00 p.m. – 9.00 p.m. (Assoc. Prof Kim IL Hyon), Venue: Rm S2.49
Saturday: 8.00 – 10.00 a.m. (Dr. Denis Ssebuggwawo) Venue: IICD Upper Lab,
The course Design and Analysis of Algorithms, builds on the concepts introduced in the Data Structures and Algorithms course. Unlike the Data Structures and Algorithms course, where the emphasis was on programming the different data structures, this course puts more emphasis on the design of the algorithms and their analysis with respect to running time and space. Designing an algorithm means finding a computational procedure that solves a stated computational problem. Although there quite a number of tools we can use to design an algorithm such as, flowcharts, decision tables etc., it is convenient to use a pseudo-code for analysis purposes. There is a well-developed notation for this. Analyzing an algorithm has come to mean predicting the resources that the algorithm requires. Generally, by analyzing several candidate algorithms for a problem, a more efficient one can easily be identified. Such analysis may indicate more than one viable candidate, but several inferior algorithms are discarded in the process.
This course covers an introduction to the design and analysis of algorithms, the divide-and-conquer approach, the dynamic programming design method, the greedy approach, backtracking and branch-and-bound algorithms, computational complexity.