Hours and Location
- Spring 2021: Tuesdays/Thursdays, 9:30 am - 10:50 am via Zoom [Piazza course page]
- Spring 2020: Tuesdays/Thursdays, 3:30 pm - 4:50 pm, at ISC 2280 [Piazza course page]
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 path finding;
- 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, pointers, memory management, classes, inheritance, function and class templates.