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.