Spring 2025 CS231

This is a course about algorithms; their design and analysis

About CS231


The language of computer science is to a great extent the language of algorithms. Although there are many thousands of algorithms, there are relative few basic design techniques. These include: divide-and-conquer, greedy, dynamic programming, and network flow. We will illustrate these techniques by studying a few fundamental algorithms of each type. In addition to helping us understand classic solution techniques, these algorithms have proven very useful in practice. Their names and the names of the problems they solve have become a standard part of the language of computer science.

Unfortunately, there is rarely a best algorithm to solve a given problem. Each approach involves a series of tradeoffs. Therefore, we will also study methods for evaluating the usefulness of an algorithm in a given situation. Among the various competing measures, we will focus primarily on the anal- ysis of time and space complexity. However, a number of other issues will also be discussed.

Meet your instructors & tutors

Click here for CS231 support calendar


Instructors

Christine Bassem
Office hours:
Monday 4-5:30pm in H103
Wednesday 9:30-10:20 in H401

Brian Brubach
Office hours:
Monday 3-4pm in H103
Wednesday 11:30am-12:30pm in
Fridays 3-4pm in


Tutors

CS231 Sections


Section 1 - Christine Bassem
Section 2 - Brian Brubach