Courses
CSC310 Algorithms and Data Structures
[3–0, 3 cr.]
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, recurrence relations, disjoint sets, hashing and hash tables, heaps, priority queues, and graphs (representation, traversals and applications, shortest-path algorithms, network flows, topological sort). The course also covers sorting algorithms and performance analysis, which include mergesort, quicksort and heapsort. The course details the fundamental algorithmic strategies (divide-and-conquer approach, greedy, dynamic programming, and backtracking), and includes a brief introduction to NP-completeness theory.
Prerequisites: CSC245 Objects and Data Abstraction and CSC245B Objections and Data Abstraction Lab and MTH207 Discrete Structures I.