Hours and Location
Tuesdays & Thursdays, 3:30 pm - 4:50 pm, at Integrated Science Center 2280
This course is an introduction to the design and analysis of algorithms. We will examine algorithms from several perspectives:
- we will look at specific algorithms for some broad classes of problems such as sorting, searching, and pathfinding;
- we will look at some powerful modeling techniques such as graphs;
- we will look at algorithm design paradigms such as divide and conquer, dynamic programming, randomized algorithms, and approximation methods;
- we will study mathematical techniques to quantify and analyze the time and space complexity of algorithms.
Students will implement various algorithms in C++ and compare their real-world behavior with their theoretical analysis. Elements of C++ we will cover include static typing, control flow, references, lvalues and rvalues, memory management, pointers, classes and inheritance, function templates, and class templates (at an introductory level).