This course will focus on a few great ideas in theoretical computer science that power modern computing applications. We will cover both classical ideas in algorithm design and more contemporary ideas from optimization and their applications. We will also study new computation models, such as online learning and communication complexity motivated by current large-scale applications. We will examine the role of randomness in algorithm design and theoretical computer science more generally. We will also cover modern topics such as error-correcting codes and their role in reliable information processing and transmission.

Lecture Times

  • Days: Monday and Wednesday
  • Time: 10:40am - 12:00pm
  • Location: Arch Bldg N101

Course Instructors

Pravesh Kothati

Course Instructor

kothari@princeton.edu

Pedro Paredes

Course Instructor

pparedes@princeton.edu

Matt Weinberg

Course Instructor

smweinberg@princeton.edu

Teaching Assistants

Daniel Braga

Graduate TA

dbraga@princeton.edu

Ilya Maier

Graduate TA

imaier@princeton.edu

Fangqi Dong

Graduate TA

fangqidong@princeton.edu

Sabrina Van

UCA

sv1903@princeton.edu

Charlie Yang

UCA

cy6358@princeton.edu


Office Hours Calendar

Instructors generally hold office hours on consistent days, but occasional changes may occur.