Summer Classes 2024
Over the summer I took one class, Data Structures and Algorithm.
Design and Analysis of Algorithms
Topics covered:
- Module 1: Foundations/Divide and Conquer
- Big-O 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 was split into three main modules. The concepts in module 2 build on ones from module 1. Each module ends with an exam. For each module, the professor provided a packet that covers all the material. Class consisted of working through the packet with the professor as he lectures on the general topics. I thought is was an effective format of the class because it forced you to work with concepts as you were learning them.
Assignments:
There are weekly homework assignments. The grading structure was a bit unorthodox. Only one question is graded for correctness and the other for completeness. Honestly, I struggled on some of the assignments. In addition, each homework includes leetcode problems that correspond with the homework topic.
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 is a sort answer section and one algorithm design question that is worth half the exam grade. The algorithm design question could be very challenging; if you do not see the pattern or key insight in time you can not finish answer the entire question. 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 was given the entire weekend and to complete more challenging set of question.
Overall:
Professor Shion Fukuzawa, who taught the class did a fantastic job. The study packets he made were really useful and I am going to keep them to restudy the concepts in the future The class did a good job of teaching how to identify patterns in algorithm questions and providing a structure for building understanding to more intuitively solve problems.