CS 320 provides an introduction to algorithms, their correctness proofs and complexity, algorithm classes, problems and problem classes.

The course is about learning and practicing principles for organizing your thinking when solving programming problems.

Mastering these skills will allow you to discover and invent efficient algorithms of your own, by figuring out what steps are needed for correctness and to reduce running time. We will study a variety of subjects:

  • orders of magnitude
  • graph algorithms
    • heaps
    • depth-first, breadth-first search
    • bipartite graphs
    • topological sort
    • connected components
    • spanning trees and shortest paths, cycles
  • algorithmic Strategies
    • greedy
    • divide-and-conquer
    • dynamic programming
    • dynamic multi-threading
    • reduction
  • problem classes (P,NP,NPC)

See syllabus for instructor and teaching assistant information.

Welcome to CS320 Spring 2021!