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.