Computer Science
>
>

CS 170: Efficient Algorithms and Intractable Problems

Spring 2020

UC Berkeley

This is an introductory course to computer science theory, exploring the design and analysis of various algorithms, number theory, and complexity. The prerequisites include familiarity with mathematical induction, big-O notation, basic data structures, and programming in a standard language.

Course Page

Overview

CS 170 is Berkeley’s introduction to the theory of computer science. In CS 170, we will study the design and analysis of graph algorithms, greedy algorithms, dynamic programming, linear programming, fast matrix multiplication, Fourier transforms, number theory, complexity, and NP-completeness.

Prerequisites

The prerequisites for CS 170 are CS 61B and CS70. You will need to be comfortable with mathematical induction, big-O notation, basic data structures, and programming in a standard imperative language (e.g., Java/C/Python). Another “prerequisite” for doing well in the course is mathematical maturity, or the ability to think about and work with proof-based math (which CS70 can help build).

Learning objectives

No data.

Textbooks and other notes

The required textbook is Algorithms by Dasgupta, Papadimitriou, and Vazirani, also known as DPV. Most readings will be from the textbook, and the relevant textbook chapters will be linked for each lecture. Any readings not from the textbook will be freely available as notes.

Other courses in Data Structures and Algorithms

CSE 373 Data Structures and Algorithms

Summer 2022

University of Washington

CS 161 Design and Analysis of Algorithms

Winter 2023

Stanford University

15-451/651 Algorithms

Spring 2022

Carnegie Mellon University

CS 166 Data Structures

Spring 2022

Stanford University

CS 61B: Data Structures

Fall 2022

UC Berkeley

Courseware availability

Reading available at Reading

Webcast available on YouTube at CS170 Spring 2020

No other materials available

Covered concepts