Overall Rating (3.9 / 5): ★★★★☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (2.9 / 5):
Workload: 5 hours/week
The course is largely based on the textbook, which is a good thing since the book is very well written, dense in information, and self-explanatory. In terms of assignements, we have weekly reading responses and homework questions. The lecture videos are mostly complementary to the text but I still find them helpful offer important contexts, overviews, and sometimes examples. The class is well-paced (roughly one chapter per week) and does not require too much of effort other than reading and understanding the book. One can argue that the latter is not as important if you know where to find the relevant points, which brings up the lowlight - personally I feel that the homework questions are not challenging enough and most programming assignements concern more about implementation rather than understanding that you can get full credits by implementing psudo code from the book without actually understaning it. Still rating 4/5 since I personally learned a lot and find the subject interesting.
Overall Rating (3.9 / 5): ★★★★☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (2.9 / 5):
Workload: 20 hours/week
Great class. Lots of work, but worth it. Definetly a good mix of hands-on and theory work, with a fun final project.
Overall Rating (3.9 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.1 / 5):
Workload: 9 hours/week
Pros:
1. Great lecture quality and TA support
2. Improves your numpy and python coding skills
3. Great topics especially in OL portion
Cons:
1. Assignments could be more interesting than implementing algorithms
2. Some overlap with RL course
Detailed Review:
This course is 2 classes in 1. The first portion is more challenging if you haven't taken Optimization but still the prof takes the time to review key concepts. The second portion is very easy if you have taken RL class. Overall great lecture quality and a very interesting topic.
Overall Rating (3.9 / 5): ★★★★☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (2.9 / 5):
Workload: 9 hours/week
Dr Caramanis is a very patient and detailed professor, and I really enjoyed his lectures. He does a great job at tying each lecture together, by reviewing the previous section before moving on to new material. I've had no exposure to Optimization at all, and so I greatly appreciated that aspect. Despite the "hand holding", his lectures are great. Most topics are covered surprisingly clearly, often with great visualization and examples. He was very responsive on Piazza as well. The part I didn't like was the homework. It could have been my lack of exposure to the subject material, but I felt like I completely understood what he was teaching in class, but the homework problem statements would make no sense to me. It would take me 10-ish hours to do the homework, half of which was just understanding what the question was asking. The homework was usually a python Jupiter Notebook hosted on collab that we needed to fill out and then share with the TA for grading. The final was a bit of a curveball. There were theory quesions, which I expected, and application questions that required some computation by hand, but it required an approach we had never done before and I hadn't prepared for.
The Online Learning portion was also pretty great. The lectures were *very* high level, but the professor provided all his notes that the nitty gritty details he'd skipped in lectures. If you were more interested in the details he encouraged you to go through his notes and the book yourself, but largly doing so wasn't required. The homeowork was pretty straightforward, though it could be frustrating when you didn't see the results you expected because the TA didn't offer much help if you were stuck. I'd often get the algorithm implemented relatively quickly, but then have to spend several hours tuning it until I'd get the results to look they way they needed to. Additionally, the homework was usually small "toy" problems that were fine to begin with, but I think it would have been cool to have been given a larger, real-world dataset for the last assignments and try applying what you'd learned to that.
Overall it was a good class that I'd recommend
Expanded Grading
Difficulty: 4 Optimization, 2 OL
Workload: 10 Optimization, 8 OL
Overall Rating (3.9 / 5): ★★★★☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (2.9 / 5):
Workload: 16 hours/week
This class has the most programming of any master's class currently offered by UT Austin (according to the professor). It is a TON of work. Be prepared to have time in your schedule to work on this class. As time goes on, the assignments get harder and require even more time to complete--be ready for that. Give yourself an entire weekend plus a few hours during the week for HW1 and HW2. HW3 will be a little more. HW4 is a beast--give yourself two entire weekends to do it. The FC's also vary in difficulty--the easy ones take less than 4 hours but the hard ones can take up to 8 hours.
Overall Rating (3.9 / 5): ★★★★☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (2.9 / 5):
Workload: 20 hours/week
Good course. However, if you haven't learned about Java, it would be stressful.
Overall Rating (3.9 / 5): ★★★★☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (1.8 / 5):
Workload: 5 hours/week
Course driven by the textbook for the most part. Fairly easy class, although workload will spike a little when you have a programming assignment due. Otherwise, it was weekly readings, a short response, watching videos, and a few homework assignments. Piazza was active and TA was great at answering questions quickly. Final was significantly more challenging, primarily due to the time constraint of 2 hours.
Overall Rating (3.9 / 5): ★★★★☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (2.9 / 5):
Workload: 8 hours/week
I bought the textbooks that were recommended in the syllabus -- both Big Nerd Ranch books for Android and for Kotlin. These helped tremendously in the beginning getting ramped up. I used them through the first two homeworks and then felt good enough with the videos to get through the rest of the class. You get enough starter code for the homeworks and flipped classrooms to make sense. Just plan ahead for homework 4. Class wasn't too difficult and overall will teach you the basis of making an app. Spent alot of time on Google and Stack Overflow. Would not count on the TAs for help -- office hours are usually full and you might be in a waiting room for the full hour and not get to ask your question. Not sure if thats the norm with these big classes but it was frustrating at first.
Overall Rating (3.9 / 5): ★★★★☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (2.9 / 5):
Workload: 10 hours/week
Learned a lot in this class, class is theory heavy but thats expected in any ML course. I liked that homeworks had both theory and programming components. The class pushes you to think, read, search for answers and still get help on piazza to get that aha moment. You can feel the difference in teaching style between Klivans and Liu, both are great profs, with Klivans assuming you know a lot of basics where Liu takes the time to explain things really to the detail. Liu's notes are also great. Expect the class to get easier in the second half. This class would be a 5 if it had a project or more challenging programming homeworks.
Expanded Grading:
Workload: 5-20 Klivans, 5-10 Liu
Overall Rating (3.9 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (4.3 / 5):
Workload: 14 hours/week
Pros:
1. You will come out understanding the fundamentals of OSs
2. Lecture quality is really good imo, professor is very knowledgeable and its really cool how he can explain design tradeoffs.
Cons:
1. It's annoying that you will have an exam and project due with in a day or two of each other (both midterm and final)
2. Projects are quite time consuming, which is why they make you work on it in groups. I got very lucky with a great group though, hopefully you do too. Projects are also very unclear on how to actually start and the steps to take. Instructions are long but still too high level.
3. Midterm was somewhat related to the projects while final was not related whatsoever
Detailed Review:
I got extremely lucky with a great group and they really did most of the work, which I feel horrible about. I underestimated how much time this class would take and feel bad taking another class (Algorithms) on top of this, which greatly reduced my contributions. I think it is still possible to take another class with this class, just take a less demanding one and start early on the projects.
Please use the KAIST lectures, and even then, definitely use LLMs to understand what needs to be done for the projects. They appear to give you the answers and code needed, but be extremely wary, it's mostly not right or way more than you need. It seems like they have stripped some of the Pintos test cases for us, so for example, you don't need to implement memory mapped files in Project 3, nor a cache in Project 4. Definitely use printf statements a ton to figure out what is going wrong.
What's odd to me though, is that I think taking Parallel Systems before this class is for sure better so that you can be comfortable with locks and race conditions in a more contained and smaller setting. I think it would be very rough to have learn all of that from scratch here. But the paradoxical point is that if you take this class first then take Parallel Systems, the lecture material in Parallel Systems will make a lot more sense (most of it went over my head tbh, it would have helped to have taken this class first). I do think people should take the compilers class (SIMPL) before this mainly because that touches on concepts like the stack and heap and even malloc at the very end, which is very nice context to have for this class. But it's not a hard requirement.
You do have test cases for the projects which is very nice, but this class is still hard because the descriptions and test cases are not enough to know the path and direction of implementation you should take. I am sure most everyone used external resources (other lectures like KAIST, GitHubs of other Pintos implementations, LLMs, etc) to get these projects done.
Midterm and final were entirely lecture based. Take really good notes when watching the lectures, in particular understand the tradeoffs whenever they're mentioned, and key ideas and concepts highlighted.