Design and Analysis of Algorithms (CSE 202, 2024 Fall)
Course Information
Location:
WLH 2001
Time:
Tuesday and Thursday, 3:30 pm - 4:50 pm
TA(s):
Boyang Huang
Sudhansh Peddabomma
Chinmay Sharma
Raymond Sun
Pisit Wajanasara
Yangkun Wang
Office Hours:
Monday 3-4 PM, CSE B240A: Pisit Wajanasara
Tuesday 2-3 PM, CSE B275: Boyang Huang
Wednesday 4-5 PM, CSE B275: Sudhansh Peddabomma
Thursday 2-3 PM, CSE B260A: Raymond Sun
Friday 11 AM - 12 PM, CSE B270A: Chinmay Sharma
By appointment, CSE 4226, Qipeng Liu
Grading:
Evaluation is based on five psets, one project and one final exam.
30% homework + 20% project + 50% final (take-home) exam
FAQ:
I am unable to manually add students to Canvas or Piazza, as they are automatically synced with the UCSD system. However, I truly appreciate your enthusiasm for this course!
Likewise, I do not have control over enrollment decisions.
Course Description
The course will cover topics in the foundations of algorithm design and analysis, including the necessary backgrounds, graphs, greedy algorithms, dynamic programming, divide-and-conquer, network flows, more advanced data structures, computational geometry, the class NP and NP complete/hard problems and how to deal with intractability. We will also cover how to implement these algorithms and give real coding and algorithm problems as examples.
Prerequisites
We expect students to have some undergraduate-level knowledge of discrete mathematics, algorithms, and their analysis, as well as the ability to read, understand, and write valid proofs. Courses like CSE 20, CSE 21, and CSE 101 cover the necessary prerequisites. While we will revisit many topics from undergraduate algorithms courses, after a brief review of the fundamentals, we will progress to more advanced material. If your background in these areas is lacking, additional effort will be required to catch up. Please reach out to me if you have concerns.
Tentative Schedule
A detailed schedule will be continuously updated each week. An outline of the tentative course materials is below:
introduction
graph basics/reachability/topological sorting and more
shortest path/dijistra algorithm/heap and applications
more greedy algorithms
divide-and-conquer/master theorem
segment tree and its variants
dynamic programming
network flow: max-flow and min-cut
NP-complete problems and how to solve them using brute-force, dynamic programming and etc
a gentle touch on computational geometry
other materials may be added (string algorithms, randomized algorithms, or even intro to quantum computing)
Lecture 0 (Sept 26) : Welcome! [Slides] + Background [Slides, Annotated]
Lecture 1 (Oct 1) : Graph, Reachability, BFS, DFS [Slides, Annotated]
Lecture 2 (Oct 3) : DFS induced tree, bridges, cut vertices, connectivity in directed graphs [Cont'd]
Lecture 3 (Oct 8) : remaining of Lec2, shortest path, heaps [Slides]
Lecture 4 (Oct 10) :
Lecture 5 (Oct 15) :
Lecture 6 (Oct 17) :
Lecture 7 (Oct 22) :
Lecture 8 (Oct 24) :
Lecture 9 (Oct 29) :
Lecture 10 (Oct 31) :
After each class, I will upload annotated notes. The annotated notes may be different from the first version, as we may not have time to cover all materials.
Homework
Assignments will be added biweekly. It is highly encouraged to typeset solutions in LaTeX.
[For Project Option 2 Group Only] If your group choose to do project option 2, please include screenshots (for each group member) of at least 4 coding problems (per group member) done together with each homework submission. The screenshot should contain information like difficulties, date and problem names. Each member should also write a short solution bi-weekly for one problem, but you are not required to submit it with your homework. Just compile all solutions together into a single PDF, and it is due on the same date with project option 1 (TBA). I.e., if there are 5 homework in total, each member should solve in total 20 and 80 as a group of 5 at the end of the quarter.
Homework 1: [File] [LaTeX Source]
Template: [Overleaf Link]
Useful Resources
Podcasts: podcast.ucsd.edu
Textbook: Algorithm Design by Jon Kleinberg and Éva Tardos
Other recommended reading: Algorithm, A Gentle Approach by Russell Impagliazzo and Ragesh Jaiswal
Gradescope: submit assignments, view graded assignments, and make regrade requests.
Canvas: lecture slides, background materials and more.
Piazza: discussion, announcements, finding study groups.