CSCI 303 - Algorithms
Description
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.