CSCI 358 - Fall 2025
Applied Algorithms
Home | Lectures | Assignments | Handouts | CS@Williams
Home
Instructor: | Sam McCauley |
Email: | srm2@cs.williams.edu |
Office: | TCL 306 |
Office Hours: | Monday Noon-1:30pm; TPL 304 |
TA Hours: | Monday 7:00-8:30pm; Wednesday 7:00-9:00pm; TCL 312 |
Labs: | Thursday 1-2:30 and 2:30-4; TCL 312 |
Lectures: | Tuesday Friday 1:10-2:25; Schow 030A |
Assignments are due Thursday @ 10 pm |
Course Description
This course is about bridging the gap between theoretical running time and writing fast code in practice. The course is divided into two basic topics. The first is algorithmic: we will discuss some of the most useful tools in a coder's toolkit. This includes topics like randomization (hashing, filters, approximate counters), linear and convex programming, similarity search, and cache-efficient algorithms. Our goal is to talk about why these efficient algorithms make seemingly difficult problems solvable in practice. The second topic is applications: we will discuss how to implement algorithms in an efficient way that takes advantage of modern hardware. Specific topics covered will include blocking, loop unrolling, pipelining, as well as strategies for performance analysis. Projects and assessments will include both basic theoretical aspects (understanding why the algorithms we discuss actually work), and practical aspects (implementing the algorithms we discuss to solve important problems, and optimizing the code so it runs as quickly as possible).
Coding in this course will be done in C. All testing will be done on TCL 312 lab computers.
Syllabus & Textbook
The course syllabus is here.
There is no textbook for this course. Readings for specific topics will be linked to from the Lectures page.