About

This course is designed to be a survey of useful algorithms and their applications in competitive programming and coding interviews. Before taking this course, you should have a basic understanding of programming (61A or equivalent) and preferrably some experience with either Python or C++.

This course has some concepts in common with 61B, 70, and 170, but there is a bigger emphasis on implementation and application.

Location

Monday 6:30-8 PM @ Physics Building 2

Book

CSES Handbook

Schedule

weektopicbook chresources
1 (jan. 23) input and output, time complexity 1.2, 2 slides pset
2 (jan. 30) prefix sums 9.1, 2.4 slides pset
3 (feb. 6) greedy algorithms 6 slides
4 (feb. 13) sorting, two pointers 3.1, 3.2 slides
5 (feb. 20) BREAK (PRESIDENT'S DAY)
6 (feb. 27) binary search 3.3 slides
7 (mar. 6) graph representations 11, 12 slides
8 (mar. 13) complete search with recursion 5 slides
9 (mar. 20) dynamic programming 7 slides
10 (mar. 27) BREAK (SPRING RECESS)
11 (apr. 3) more dynamic programming 7 slides
12 (apr. 10) segment trees 9.3 slides
13 (apr. 17) rolling hashes 26.3 slides
14 (apr. 24) wrap-up and final contest slides

Policy

Coursework

The class is composed of two components, the lecture between 6:30-8 PM on Mondays introducing concepts and a corresponding weekly assignment due at Sunday midnight. Two homework assignments will be dropped! We expect the homework to take around one hour of work. Some homeworks may have optional challenge problems. Homework will be conducted through Codeforces.

Remote office hours will be available on discord; schedules will be announced later this week.

Grading

Category Percent Criteria
Homework 70% Demonstrated effort, participation
Attendance 30% Form with password at each lecture

You receive a P in this class if you receive 70% or higher aggregate score. Late work will get 50% credit. The class shouldn’t be stressful! If you have extenuating circumstances or find yourself falling behind, please reach out to us.

Collaboration

Study groups are allowed and encouraged. Sharing ideas is fine, but sharing code is not allowed.

Course Staff

  • Jelani Nelson (advisor)
  • Xavier Plourde (lecture/content)
  • Nishant Bhakar (OH)
  • James Rungsawang (lecture/content)
  • Ryan Zhu (lecture/content/OH)
  • Chris Liu (content/problem writing)
  • Vivek Verma (lecture)
  • Youngmin Park (OH)
  • Young-jin Park (infra)