Introduction to Algorithms and Complexity
Lecture, four hours; discussion, two hours; outside study, six hours. Enforced requisites: course 32, Mathematics 61. Designed for junior/senior Computer Science majors. Introduction to design and analysis of algorithms. Design techniques: divide-and-conquer, greedy method, dynamic programming; selection of prototypical algorithms; choice of data structures and representations; complexity measures: time, space, upper, lower bounds, asymptotic complexity; NP-completeness. Letter grading.
Review Summary
- Clarity
-
6.7 / 10
- Organization
-
6.7 / 10
- Time
-
5-10 hrs/week
- Overall
-
5.0 / 10
Reviews
I don't know who told me that Hsieh was a good professor for 180, but they were lying. Hsieh's lectures were not clear and straightforward. He taught basically in the order of the textbook, so they were organized, but Hsieh's handwriting is terrible and he was difficult to understand, so lectures were not easy to follow along. Maybe the class would be better in-person instead of online?
The homework and exams were *brutal*, but at least they were infrequent. The homework took at least 2 hours each, and required designing algorithms that were taught in class. They were only every two weeks, so averaged out, the time isn't that much (but I personally don't work on homework like that). The exams were another level of difficulty from the homework, especially the final. They were in a similar style, with mostly long answer questions designing an algorithm using the class topics, but the constraints (time complexity, or the difficulty of the problem) made them much harder. They were online, 24-hour exams, and everyone I talked to took 6-8 hours or more to complete each exam.
On the plus side, this class really helps with interviews, and is one of the most useful classes you'll take at UCLA. If you can ace it with Hsieh and get an A+, then you will really have mastered algorithms and should have no problem acing interviews.
Lectures were good but the class was fairly disorganized
This class was very challenging to say the least. I noticed a pretty wide disconnect between the lectures and exams/homework. Overall, the homework assignments (4 total) were not too difficult and pretty manageable. The tests on the other hand were a different story. Even though we had 24 hours to complete each exam, I felt that the homework assignments weren't quite enough to prepare me for the difficult exams. Exams required very creative and clever approaches to solving problems. The mean/median on the final exam, for instance, were both around a 59.
The grading on the homework/exams was pretty lenient for the most part, with notable exceptions for HW 4 and the FINAL. I felt that the grading suddenly became much more harsh towards the very end of the course, and I believe I'm not the only person that felt that way.
Class was very poorly organized and a complete mess. Many questions on Piazza were left unanswered. The final grades were entered almost 4 days after the deadline.
Overall, this class is still super important and useful. But please do yourself a favor and avoid this section of CS 180.
Not the best lecturer, but if you read the textbook and have some leetcode experience you should be fine. There was always at least one question on each exam that took hours of thinking to solve (during 24 hr virtual exams).
The homework doesn't really prepare you for the exams; the exams were much more difficult, while the homework was fine for the most part. The lectures were somewhat all over the place, and the notes given in class were pretty messy and hard to follow. The TA's could be fairly unresponsive at times and their grading was rather tough towards the end.
Cho is very knowledgeable, but his teaching style can be confusing at times.
Sometimes hard to understand and disorganized, but overall fair and not too difficult of a class.
Displaying all 7 reviews
Course
Grading Information
-
No group projects
-
Attendance not required
-
2 midterms
-
Finals week final
-
71% recommend the textbook