CSCI 303 - Algorithms - Spring 2020

Course page on Piazza.

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).