CMSC451 Design and Analysis of Computer Algorithms

What does it say on Testudo?

Fundamental techniques for designing efficient computer algorithms, proving their correctness, and analyzing their complexity. General topics include graph algorithms, basic algorithm design paradigms (such as greedy algorithms, divide-and-conquer, and dynamic programming), network flows, NP-completeness, and other selected topics in algorithms.

Why did I take this class?? Should I have taken this class???

Definitely a very interesting and useful class. I would have taken this eventually, but I think the online format for this class is suboptimal. Probably more valuable in-person.

Review

I learned a lot of useful algorithm patterns, but some of the algorithms seem so niche that they're just for fun. We covered all of the topics in the description and syllabus. The full list: The first half of the class up to the midterm (before dynamic programming) was pretty easy. The only thing is that the proofs of correctness tend to be extremely handwavy. I think the TAs didn't really take grading seriously since the averages on the homeworks and midterm were very high. For the second half of the class, I stopped attending live lectures since they were basically like office hours.

Some notes: