🧮 Efficient Algorithms and Intractable Problems 🧮

CS 170 teaches you about the theory of computer science. We will learn how to design and analyze various algorithms and programming techniques that are at the heart of computing.

CS 170 can be thought of as the lovechild of two lower-division classes many will have taken — CS 61B, data structures, and CS 70, discrete mathematics and probability theory. We will combine our knowledge in each class to understand algorithms on a more intricate level.

Topics

Divide-and-conquer

Paths in graphs

Greedy algorithms

Dynamic programming

Linear programming

NP-complete problems

Coping with NP-completeness

Algorithms with numbers