Summer Classes 2024
Over the summer I took one class. It was a data structures and algorithm course. I figure it would be good take in the summer to prepare for job interviews.
Design and Analysis of Algorithms
Topics covered:
- Module 1: Foundations/Divide and Conquer
- Big-Oh Notation and mathematical preliminaries
- Sorting Algorithms
- Proving the run time of merge sort and quicksort
- Module 2: Dynamic Programming:
- Sorting lowerbounds
- 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
Class format:
The course is split into three main modules, but the concepts in module 2 build on ones from module 1. There is an exam for each module. The professor provides a packet of material for each module. In class, the professor goes through the packet and fills in additional information as he lectures. This is a nice practice because if you also fill out the packet you end up with good study material.
Assignments:
There are weekly homework assignments. The grading structure was a bit confusing. Basically only one question is graded for correctness and the other for completeness. Honestly I struggled on some of the assignments. In addition, each homework has leetcode problems you can practice.
Exams:
There was three exams and a final that you could skip if you were happy with your grade. The first exam covers big-O notation and sorting algorithms, the second dynamic programming and the third greedy algorithms. There a sort answer questions and one algorithm design question that is half the exam. The algorithm design question can be very challenging if you do not see the pattern or key insight in time. I did poorly on the second exam because I missed the design question. For the third exam since I was starting my NASA internship in the final week I took a special make up. This was the most interesting exam because I had all weekend and could really consider some more challenging question. I actually preferred this style of exam.
Overall:
The graduate student, Shion Fukuzawa, who taught the class did a fantastic job. I really liked the idea of the packets. I have never had a professor provide material like that. It provided the perfect study guide. The class did a good job of focusing on the high level patterns of the algorithms and then seeing how those patterns can be applied to different problems. The material was challenging, but the exams were fair.