Develops and analyzes standard techniques for algorithm development which are widely applicable to computer science programs. These include greedy algorithms, branch-and-bound, dynamic programming, satisfiability, graphs and network-flow, and exhaustive search, along with proofs of correctness. The master theorem and other complexity analyses (including output-bounded and amortized complexity) are introduced. Hardware-level interactions with these algorithms and efficient data structures, including cache-obliviousness, are discussed. Weekly hours: 3 Lecture hoursPrerequisite(s): CMPT 260.3 or CMPT 263.3; and CMPT 280.3; and 9 credit units of MATH or STAT courses. Note: Costs in addition to tuition apply to this course.
Develops and analyzes standard techniques for algorithm development which are widely applicable to computer science programs. These include greedy algorithms, branch-and-bound, dynamic programming, satisfiability, graphs and network-flow, and exhaustive search, along with proofs of correctness. The master theorem and other complexity analyses (including output-bounded and amortized complexity) are introduced. Hardware-level interactions with these algorithms and efficient data structures, including cache-obliviousness, are discussed. Weekly hours: 3 Lecture hoursPrerequisite(s): CMPT 260.3 or CMPT 263.3; and CMPT 280.3; and 9 credit units of MATH or STAT courses. Note: Costs in addition to tuition apply to this course.