Design and Analysis of Algorithms
Announcements
- Hi! If you’re looking at this page I’m guessing you will be taking this course with me this summer. I’m excited to meet you!
- There will be an announcement after finals week of Spring, but I will be gone for week 1 of this class. The content will be delivered asynchronously, so stay tuned.
- If you would like to prep before this course, it may help to brush up on data structure fundamentals and discrete math.
Key Documents and Pages for the Course
- Make sure to read through the syllabus. I have outlined the expectations for myself and for you for this quarter amongst other things.
Teaching Staff and Contact Info
Instructor:
- Shion Fukuzawa
- fukuzaws at uci dot edu
- Office hours:
- TBD
TAs:
- TBD
Course Outline
The following is the breakdown of the three modules we will divide the class into.
- Module 1: Foundations/Divide and Conquer
- Big-Oh Notation and mathematical preliminaries
- Sorting Algorithms
- Proving the run time of merge sort and quicksort
- The Master Theorem
- Divide and Conquer algorithms
- Module 2: Dynamic Programming:
- Optimal substructure property
- Analyzing the size of the search space
- Top-down (memoization) vs. Bottom-up
- Module 3: Greedy Algorithms:
- Greedy choice property
- Optimal substructure property
- When can we use a greedy algorithm instead of a dynamic programming approach?
Lecture notes
- I will be posting links to all the lecture notes here. I will also post the annotated versions as we progress through the course.
Problem Sets
Please submit your problem sets to gradescope. If you do not have access to gradescope, let me know ASAP. Solutions will be posted to Canvas.
Assignments will not be accepted after the due date. If you cannot solve a problem, please write down what you tried and where you are stuck.
Tentative Midterm Information
- Midterm 1: Module 1 (Jul 10)
- Midterm 2: Module 2 (Jul 31)
- Midterm 3: Module 3 (Aug 24)
- Final: Aug 28