This course presents the fundamental computing algorithms and data structures, with emphasis on design and analysis. Topics include the asymptotic analysis of upper and average complexity bounds, the best, the average, and the worst, case behaviors. Recurrence relations, sets, hashing and hash tables, trees and binary trees (properties, tree traversal algorithms), heaps, priority queues, and graphs (representation, depth- and breadth-first traversals and applications, shortest-path algorithms, transitive closure, network flows, topological sort). The course also covers the sorting algorithms and performance analysis which include mergesort, quicksort and heapsort. As well, the course details the fundamental algorithmic strategies (divide-and-conquer approach, greedy, dynamic programming, and backtracking). Introduction to NP-completeness theory.
Course Learning Outcomes:
1) Students shall be able to explain and implement trees, heaps, graphs, and hash tables.
2) Students shall be able to analyze searching and sorting algorithms, and explain their relationship to data structures.
3) Students shall be able to solve problems using different algorithm design methods such as the greedy method, divide and conquer, dynamic programming, and backtracking.
4) Students shall be able to analyze the time and space complexity of algorithms using tight asymptotic bounds and asymptotic upper bounds.
3.000 Credit hours
3.000 Lecture hours
Levels: Undergraduate
Schedule Types: Lecture, Tutorial
Computer Science & Mathematics Department
|