Overall Rating (1.4 / 5): ★☆☆☆☆
Professor Rating (1.4 / 5): ★☆☆☆☆
Lecture Rating (1.4 / 5): ★☆☆☆☆
Difficulty (1.4 / 5):
Workload: 3 hours/week
Pros:
1. Light workload
2.
3.
Cons:
1. Bad lectures and labs
2. Annoying quizzes
3.
Detailed Review:
This class was laughably bad. I took this course knowing it was bad because I just wanted an easy credit, but damn...it was pretty bad. The entirety of the class is either the professor or the TA just reading slides. The quizzes then test you on minutiae from random parts of the slides or labs to see if you were paying attention. I stopped watching the course material after a few weeks and would try and just sift through the slides to get the quiz answers and that worked well enough. I lost a few points because I sped through annoying wording (ie, multiple choice questions where you're supposed to choose the incorrect answer rather than the correct one), but oh well. The workload picks up at the end when you have to write a long final paper, which I actually kind of enjoyed...until the TA feedback was "your method was kind of simple". That had me punching air.
The only entertaining part of the course was at random points in the lecture videos the professor would try and hold in a sneeze and fail, and let out these little baby sneezes. It was a riot.
Anyway, if you don't care about getting value for your money and just want an easy course (hey, maybe you'd learn something if you put more into it than I did), then this is for you. If you want something academically engaging and rigorous, then avoid.
Poor communication, absentee professors, intrusive video monitoring, useless programming assignments
Spring 2021CS 391L · Machine Learning
Overall Rating (1.4 / 5): ★☆☆☆☆
Professor Rating (1.4 / 5): ★☆☆☆☆
Lecture Rating (1.4 / 5): ★☆☆☆☆
Difficulty (4.3 / 5):
Workload: 15 hours/week
The professors' goal seemed to be to put as little effort into teaching this class as humanly possible. 90% of Klivans' interaction with the class was arguing about the intrusive Panopto software used for exams. He clearly cared much more about policing the students exams than about actually teaching us machine learning. Liu posted about 3 sentences on Piazza the entire semester, so effectively had zero interaction with students at all.
Lecture videos were recorded several years ago. Klivans' videos were from an in-person class, so you have to suffer through random people asking questions, or Klivans asking them questions and then sitting there until someone responds, etc. Requires a lot of outside study to understand most of what he is trying to teach. Liu's videos are at least organized better and he is good at explaining each step and how it connects to the rest of the topic. But it is all math, all theory, and you get no indication of how to actually apply it to real-world problems.
Class is 90% theory and 10% applications. The programming projects were fill-in-the-blank Jupyter notebooks using toy datasets, or (even worse) randomly generated data. This class should've been a great opportunity to work with real data using the ML algorithms but instead we got this.
Homework difficulty / hours required is monotonically decreasing over the course of the semester.
Textbook for Klivans' half of the course is horrifically bad for learning the material. It's probably a good reference if you already have a PhD in ML, but there is no way anyone could learn the material from it for the first time without already knowing it. For Liu's half of the course, he provided notes from a draft textbook that was not as bad.
Exams require the use of Panopto, an intrusive video recording software. Communication regarding this was very poor, and many students had issues with their recordings. This made the exams even more stressful, as students weren't just worried about learning the material, but also about whether their videos were configured correctly, or would upload in time, etc. All this for something that wouldn't even stop someone that truly wanted to cheat anyway.
Peer grading is an atrocious grading mechanism for a graduate class of this difficulty. None of us students are qualified to grade the homeworks. The problems are too complicated and have too many possible solutions for someone who is just trying to learn the material for the first time to make grading decisions. Everyone I talked to had a story of losing points due to a grader not understanding something even though it was a valid solution. Also since grades are curved, you are actually incentivized to give your fellow students lower grades (thankfully it seemed like most people erred on the side of leniency). I understand there are limitations due to the number of people taking these classes, so they all use multiple choice and/or peer grading.. but it would be a huge improvement if UT would cough up a little money to hire some graders.
I did learn a lot this semester, but it was mostly from self-study using books and videos on the web. I was really excited about learning ML before I took this class, and it was a huge letdown.
Overall Rating (1.4 / 5): ★☆☆☆☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 15 hours/week
Pros:
1. Interesting material with interesting (though niche) applications.
2. Lectures are good.
3. Projects are genuinely interesting.
Cons:
1. Massive scope for first project with TAs being misleading (if I'm being generous) about the time commitment required -- claiming 10-20 hours for what took most people who actually completed it over 80 hours of work.
2. Hostile quiz questions written with the full malice of Sauron to trick you.
3. Weekly quizzes that take longer than midterm exams in any other class to finish.
4. Did I mention the quizzes? You get immediate feedback on every mistake, which makes the mental experience of taking the quizzes very much like the glass bridge episode of Squid Game.
Detailed Review:
I was very excited when I heard this course was being offered. I really like the subject matter. However, in its current form, I have to recommend not taking it.
The class is not excessively difficult compared to other courses. It's not easy, but I did not find the difficulty of the projects or the quizzes to be unreasonable in an abstract sense compared to other courses in the program. However this class is excessively stressful compared to others, to the point of being an utterly miserable experience.
Start with the outright cruelty of the quiz format. The MC questions typically required what amounted to proving a minor lemma from first principles in order to answer them accurately. For 20-30 questions. Every week. Questions were written with subtle variations in phrasing from the lecture materials to deliberately mislead you if you didn't work through a full proof of the answer first and tried to answer intuitively based on the lectures. Seriously, don't trust your intuition for any of the questions. I managed a B on the quizzes over all before any curve, so it's not that they were outright too difficult. It's that every week you're spending 3 hours working through these questions in a format that's incredibly stressful because it's very easy to think you know the right answer and still be wrong because of a one word change in the question compared to the way the material was presented in lecture. And if you're wrong, you get immediate feedback telling you so, and at a certain point you just start to doubt your sanity. It's 3 hours of miserable stress every week.
If the quizzes had been hand-written theory homework proving the same concepts, they would have been fine. Challenging, but fine. If the quizzes had been regular midterms (meaning only 1-2 for the semester, instead of 10), they would have been fine. But the weekly MC format that was chosen is cruel. I have significantly more gray hair now than I did four months ago.
The other unreasonable thing was the misleading communication from the TAs about the first project. It is not a 10-20 hour project. Important sub-problems that you have to solve (and were big enough to be separate projects in another course) are completely hand-waved away by the lectures and by the TAs on piazza. It's a good project, and you'll learn a lot from it. But it is also massively more difficult than was communicated. It's not that the TAs simply didn't warn us the assignment was that big; it's that the TAs actively mislead us with inaccurate information about the scope of the project and the challenge of completing it. This was so bad that the original deadline was extended from two weeks to a full month. Still the average grade on that project was 55%.
The second and third projects were fine, even too easy compared to the first. The first would have been fine if communication about it had been accurate and honest.
Overall Rating (1.4 / 5): ★☆☆☆☆
Professor Rating (1.4 / 5): ★☆☆☆☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (2.9 / 5):
Workload: 10 hours/week
Pros:
1. Lectures are good in terms of material covered.
2. Assignments help with learning key algorithms.
3. Theory credit achieved.
Cons:
1. Lectures are extremely boring.
2. Assignments do not help learn the theory behind the algorithms, this does not feel like a theory course.
3. Exams are multiple choice, another odd decision for a so-called theory course. They test your test taking and guessing skills more than knowledge of the subject.
Detailed Review:
Let me start by saying that I took this course to knock out the required theory credit. It was not something I went into expecting to enjoy. While I did find the lectures very dry, I surprisingly found the subject matter covered by the course to be quite interesting at first. I was learning quite a bit for the first month or so at least. Unfortunately, this course suffers greatly due to poor communication and poor grading metrics. I found myself becoming less and less interested as the semester progressed as a result.
TLDR: It's hard to stay motivated for a course when the professors quite clearly don't care about it, or have any respect for the students paying to take it.
It's not a good sign when a week into the course the Ed Discussion forum for it still hasn't been activated. Office hours didn't start until after the first graded assignment was due. It got worse from there. More often than not the link for the assignment would be broken or missing until students pointed it out and TAs got around to fixing it a few days later. The solution would likewise often be missing when it came time for peer reviews. You'd think eventually they'd have figured this out, but no. Grading rubrics often didn't even match the correct assignment, and questions about this often weren't even acknowledged by TAs. By the time the final exam came around details were non-existent. We were apparently permitted 2 pages of prepared notes, but we weren't told this until actually clicking to start the exam. I got the impression the TAs were not being provided necessary information by the professors, and of course the professors did not interact with the class at all.
The grading of this course is designed solely to be as close to zero effort as possible for the course staff rather than to be fair or to encourage learning. 70% is from peer graded assignments, and the remaining 30% is from auto graded multiple choice exams. I found the assignments to be a useful part of the course, but the OL ones are perhaps too simplified. The exams were utterly worthless; your score might as well be randomly generated. I think they somehow succeeded in making me unlearn some of the material. I say that as someone who somehow managed to score in the top quartile on the midterm.
For someone looking for a theory credit that doesn't actually require you to learn the theory, go for it I guess. The assignments are all simple to moderate difficulty python projects. While proofs are presented if you want to dive deeper, the way the course is delivered provides no incentive for you to do so. Courses administered this poorly cheapen the program. Students deserve better, the program deserves better.
Overall Rating (1.4 / 5): ★☆☆☆☆
Professor Rating (2.1 / 5): ★★☆☆☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 8 hours/week
Pros:
1. Pretty good textbook
2. Lectures are a good mix of theory and example
3. Exposure to a different way of thinking
Cons:
1. Major errors on virtually every homework/exam
2. TAs are not helpful - they take days to respond and almost never answer questions directly
3. HW/exam questions feel more like riddles than clear problem statements
Detailed Review:
I'm going to be honest: by the end of the semester, I put about as much effort into this class as the course staff. Which is to say I got through it as quickly as possible and stopped worrying about the results.
Basically every single week, the professor or the TAs post a regrade notice in Ed because there was some error that made it impossible to correctly answer a homework question or two (or more). Sometimes they posted the wrong data; sometimes they didn't include the correct answer choice; sometimes the questions don't make grammatical sense. While I appreciate that they go back and regrade, the fact that this happens every single week, and even on exams, is ludicrous. This isn't the first time this course has been offered, or even the second. But no one seems to go back and check to make sure they aren't making the same mistakes over and over.
Meanwhile, when you try to clarify mistakes, it's almost impossible to get an answer from the TAs. If they respond at all, it'll probably be a non-specific answer (even to a yes-no question) days or even a week later. Even during exam periods, they don't give prompt responses (for example - 30 hours to respond about a grammatically nonsensical question on the final, and even then they wouldn't tell me what the question meant to ask). So you're just left guessing what you're supposed to do with internally inconsistent data or nonsensical questions. Meanwhile, the problems build on one another, so a mistake in an early part means you have no chance of getting points later.
This is unfortunate, because I do think the material is interesting. Prof. Zigler is a decent lecturer, and his material does a good job of complementing the book (which is actually worthwhile to read). The class focuses on a single framework (potential outcomes), so you shouldn't go in expecting that you're going to get lots of different perspectives. But the course does a good job of explaining the interplay between design and analysis (though it takes a little while to get to the point).
But unfortunately, this can only go so far when, on most assignments, you have no idea if your approach is wrong or if the question simply cannot be answered as written, nor can you get any clarification. This isn't conducive to learning the material at any level, and makes this little different from just watching free lectures on Youtube or your favorite MOOC site. I still think this class makes sense in the program, but I wouldn't recommend it in its current, unpolished state.
One change from previous semesters is that you get full credit on the short-answer quizzes as long as you answer the questions and complete peer grading. You can still see feedback on the (very specific) answer criteria, but the actual peer grading points don't matter on your final grade. All regular homework and exams are machine-graded multiple choice.
Overall Rating (1.4 / 5): ★☆☆☆☆
Professor Rating (1.4 / 5): ★☆☆☆☆
Lecture Rating (1.4 / 5): ★☆☆☆☆
Difficulty (2.9 / 5):
Workload: 8 hours/week
Pros:
1. Easy A or A- at worst.
2. Does cover many fundamentals from Ordinary Least Squares (classic multiple regression) to Bayesian Statistics to Other Topics including PCA Theory, Fixed Effects, etc.
3. Just 12 assignments (2 part each) and no exams. Can drop 2 lowest assignments. They are all peer-reviewed, though.
Cons:
1. Boring and recorded lectures don't feel engaging. One of the worst in the program in terms of this matter.
2. Organization of topics is not necessarily coherent at times. Could benefit from having suggested textbooks even if the instructor claims, topics are "self-contained"
3. No effort by the course to use realistic datasets. R scripts are disorganized and use weird notations, variable names like xxx instead of x^3.
Detailed Review:
Covers fundamental topics in regression. Many people dislike this class, for reasons I mentioned above under cons. But at least it is straightforward to take, then move on afterwards.
For a supplementary reference, I recommend Regression and Other Stories by Gelman et al., although this book is really for DSC 384 (Causal Inference). The first half is also a suitable text for DSC 382.
Overall Rating (1.3 / 5): ★☆☆☆☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (3.9 / 5):
Workload: 20 hours/week
Child... Let me tell you a story about taking RL in summer: "No". Having said that, this course is interesting topic-wise, the delivery was not so great. Most of your learning will happen reading a book that is definitely not a light reading, so if you don't like reading technical texts, do not take this class. Videos are a mixed of: Repetition of same concepts on the book, caveats of some of the concepts presented by the authors, and sometimes useful exercises. You feel like you "understand" until you arrive to chapter 8 or 9 more or less, and then is all down the hill from there (videos did not help me with the most challenging chapters of the book). Projects are for the most part OK, except the ones that include programming on Neural Networks for which you receive zero training in this course, so if you don't know how to use TensorFlow / Pytorch be ready to do your outside research. If you are expecting faculty to actually be interacting with you, you are in for a rude awakening! We had one of the most awkward situations regarding examinations when the instructors (can't tell who exactly?) decided to change the conditions on which the final test was taken (after realizing that students could exploit a feature to determine whether their answers were correct while taking the exam), creating effectively 3 different groups of people depending on the conditions they took the test. During this time we did not see one single message from any of the professors (or even the program director, since the validity of the exam was compromised), only one of the TAs was facing us and our questions during the process. There were allegedly two TAs but only one (William) was trying to help, the other one (can't even remember his name), seemed to just be enjoying the thrill of "standing there". The professors seem to take issue with letting the TAs share too much information with students about some of the homeworks, that, combined with the non-collaboration policy (borderline paranoia of plagiarism) makes taking this class a very lonely experience. Also, and I guess this is more a program-wise problem, but I can see how there are two groups of people that this program is catering to: The ones that see this as a professional development opportunity and the ones that want to use this master as a stepping stone to complete a PhD. Perhaps for the second group this class was awesome, and don't be surprised if you see high ratings in that case... I am in the first group, and I find not just this class, but all the classes I have taken in UT to be extremely theoretical. In the case of RL I was left with a bunch of knowledge but little awareness on applications (more than the projects the professors are working on). Maybe this course should be revised in scope just to make sure we are getting away what is truly relevant. If you ask me today to implement any of the 30 something variants of algorithms we had to review while reading the book, I don't think I would be able to remember how... And I got an A in this class. The final exam was a slaughter fest, with an average of 65 and std. deviation of 20. To me this reveals the failure of either the exam as an evaluation instrument or the course as means to ensure proper learning. A tough final does not reveal anything about the student group more so than about the instructors that put it together... So net, I would not recommend this class unless you are interested in the topic (or you have to take a class... is not like we have so many options anyway).
Overall Rating (1.1 / 5): ★☆☆☆☆
Professor Rating (3.9 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (1.1 / 5):
Workload: 1.5 hours/week
Pros:
1. Very low workload until the project, but you work on this all throughout the semester so it shouldn't be a big deal
2. An opportunity to force yourself to work on a project or pursue an idea, or whatever you'd like in ML
Cons:
1. Very low quality quizzes in terms of gauging learning outcomes and difficulty
2. Grade structure of the course
3. Very, very high cost-to-learning ratio
Detailed Review:
The maturity of the quiz questions are not at an appropriate level for undergraduate students, much less graduate students. The questions resemble that from a lazy high school teacher's regulars course who didn't bother to come up with real assignments and decided to just make "did you pay attention?" kinds of questions by taking exact words spoken in the lectures and perturbing a word and making a T/F statement or select-all-that-apply questions out of it. So you can imagine that the questions at best test your understanding in the most shallow way. Other questions are like "what is the name of the package that does this", and "Select the ML models we 'ultimately' used for the presented research article" where "ultimate" is undefined unless you ask the course staff. If you were designing a graduate course to maximize learning, none of these questions would make the cut because they are largely a waste of time.
For $1000.00 this is by far the worst investment you can make in ML since there are a plethora of extremely high-quality and entirely free content available. The first week has zero material, which is a waste of course time in my opinion. The overall wording for each question was also quite poor, and it's completely permissible if english is not a first language for the professor. But it's strange that there were so many TA's, and none thought to simply read the questions beforehand and correct the wording and grammar. Only after complaints were the quizzes revisited and re-worded, but some students were likely penalized (heavily unfortunately because of the huge weight). The class did well on the quizzes overall though. By the end of the course, I hadn't watched a single lecture and was able to reasonably quickly search lectures to score either a 90-100% on each quiz.
Another reason that this course resembles a high school course is the *minimum* page requirement for the final project, which indicates the lack of understanding of how papers are written. Every academic paper to be published has *maximum* page requirement; it's much more difficult to make writing concise. The *only* reason to have a minimum page requirement is to penalize the extremely lazy students (again, in high school) who are looking for minimum work, but even this is short-sighted. If a student writes a terrible paper that is far too short to adequately fulfill the assignment, then it should naturally be captured by the rest of the grading rubric. A minimum page requirement is meaningless and reflects a poor understanding of how writing is professionally and academically evaluated. Short, well-written papers should be encouraged by a rubric; not the other way around. This is an expensive graduate course for god sakes.
Overall I'd say stay away from this course until further major revisions, unless you really just want to spend $1000.00 to just obtain course credit, a GPA booster, and to work on your own project. This course cannot compare to ML, DL, OLO, Optimization, and NLP in terms of quality and learning outcomes. You deserve a much better introduction to ML than what this course has to offer!
Overall Rating (0.7 / 5): ★☆☆☆☆
Professor Rating (2.1 / 5): ★★☆☆☆
Lecture Rating (0.7 / 5): ★☆☆☆☆
Difficulty (5 / 5):
Workload: 30 hours/week
I wont go into Pros and Cons but here is my detailed review:
In the course outline, the topics are divided into three sections - Programming, DS and Algo.
On one hand, in Programming, they want to teach testing, debugging, Programming Methodology as if you are a newbie programmer. However, on the other hand, they expect you to be a rigorous programmer with minimum of two semesters of hardcore programming experience (this is an official statement from Professors and TAs).
In DS, you are expected to know basic data structures and they will try to teach you complicated structures like B-Trees etc. I am not averse to learning advanced data structures. Thought, I am from CS background but a lot of people from non-programming background are part of MSDS and I can understand their pain and confusion
In Algo section, you don't know what are divide & conquer, greedy or Dynamic Programming. They may have taught DFS, BFS, Binary search etc. but which belongs to what - hardly anyone cares
Lectures - Believe me, lectures are like 101 and a colossal waste of time. I stopped watching lectures after 2-3 quizzes. Just took the topic headers and went on YouTube and watched top 5 rated videos there. By the way, lectures don't help you anywhere - not in assignments, not in quizzes and there are no additional reading material
Quizzes - In this course, quizzes are test of your mindreading skills, i.e. how good you are with reading mind of the person who designed the quiz. The questions and the options are too vague and will have multiple meanings and interpretations. I started feeling as if I was part of English course rather than a DSA course. The question will have multiple meanings and depending on which meaning you interpret, there will be an option (out of 6-7 options) which will match the answer of that interpretation. And if you change the interpretation, then there will be another option. Lectures and Quizzes have nothing in common. By the way, Quizzes contribute to one third (33%) of the entire grade (assignments contribute to remaining 67% of the grade)
Assignments- There are 7 assignments (Course Agreement, Image Manipulation, Evil Hangman, Boggle, Treaps, B-Trees, Wikiracer). And all the assignments test you in the mind reading skills and your patience. For example, Course Agreement had a simple question - Have you read the Syllabus and Course policies and agree to it? The response is a free text to be filled in a text area and if you have put a simple Yes, you will get 0 out of 10. The response should have been two options - Yes and No through radio buttons and believe me it is the easiest assignment of all the seven. Also, all the assignments contribute differently to the 67% of the grade like earlier assignment contribute less and later assignments contribute more and No, we were not told about the exact breakup (i.e which assignment contributes how much) after Evil Hangman (as far as I remember).
Now the assignments are supposed to be done in Python (agreeable) but using Poetry framework. The initial setup instructions were full of discrepancies. It was a nightmare to get everything setup correctly and then the debugger doesn't work. Though there is a lecture video on how to debug in VSCode but that is not applicable with VSCode+Python+Poetry. Initially all the assignments were individual assignments - Image Manipulation was relatively easy but it became too complicated because it was supposed to be done in Poetry. Then the difficulty level went 100X with Evil Hangman. Boggle became another 100X (Compared to Evil Hangman). After a lot of criticism and feedback on Evil Hangman, the Boggle, Treaps, B-Trees assignments were made Group assignments (in groups of 3) which made them bearable. According to me, Boggle was the toughest assignment because it involved poetry at its worst (e.g. if the Terminal window is less than a particular size, it will throw an error and you wont know what to do about it because you can't properly debug in Poetry. The only way to debug in Poetry is through Print statements which you need to place at various places. Boggle, Treaps, B-Trees and Wikiracer became a bit manageable because of Groups (Wikiracer was an individual assignments) and because the Pytests removed the dependencies on Poetry to a lot of extent.
The assignments in general are difficult because partial code is provided by the instructor and you have to write code for few functions or classes and there were no proper instructions in the handouts on what is required. The handouts contain high level what the assignment wants you to do. TAs and Professors started providing videos on what is expected but it was nothing but a mere replication of the content in the handouts. The biggest problem which I felt in all the assignments were the use of ADTs (Abstract Data Types) which were extensively used (in Boggle, Evil Hangman etc) and mind you there are no videos on ADTs or OOPS concepts in any of the lecture videos. So, the entire assignment became an exercise on guessing what the TA or Professor were thinking while coming up with that particular structure of ADTs or inherited classes/functions. Now, those who know or have done programming are aware that every person will structure the code differently and hence it was difficult to comprehend what was required.
Evaluations were another issue. Though the quizzes get evaluated almost instantly, the solution to the quizzes were released almost 10 days after the deadline and by that time, either you have forgotten why you chose a particular option or you are too tired/frustrated because you can clearly relate that your interpretation of the meaning of the questions/options (due to choice of words resulting in ambiguity and vagueness) were different than what was expected.
Evaluation of assignments was a big issue. All the assignments were graded using a mysterious auto-grader with mysterious test cases and evaluation took a min of 7-8 days to 3 weeks and by the time the results are out, you would be busy with the next assignment and you would just accept whatever grader the auto-grader has given you.
There were only two good things in the entire course - First there were no exams (mid-terms or end-terms) and second were the responsiveness of the TA and Professor on Piazza and their open mindedness. Spring 2022 was the first time this course was offered and honestly, I expected the course to have some hiccups but the course had a lot of mountains as hurdles. Withing 4-5 weeks, I realized that I wont be able to learn anything new from the course and I started treating this as a course to just be done with it so that I can get the degree. At the end of the course now, I realized that this was the right decision because I had taken DSA course in my UG in CS and there was nothing new which I learnt or was taught here.
For future improvements - The Professor and TAs should understand that this is an online course and there are people with varying level of programming background and experience. It is not a campus course where the entire class has less than 2-3 year of programming experience. In an online course like MSDSO, there will be people with 0 programming knowledge as well as people with 20 years of work experience. DSA is a hardcore CS class. Next lectures should be redone. They should check the lectures and delivery of Data Visualization course (Spring 2022 was also the first time Data Viz was offered but the lecture quality was superb). They should provide autograder to the students so that they can run the auto-grader and see if there are any bugs. The focus should be on learning rather on making the course difficult in terms of grading
Overall Rating (0.7 / 5): ★☆☆☆☆
Professor Rating (1.4 / 5): ★☆☆☆☆
Lecture Rating (1.4 / 5): ★☆☆☆☆
Difficulty (4.3 / 5):
Workload: 20 hours/week
Pros:
1. Easily accessible and informative textbook
2. First half of the class is relatively well structured
3. You can improve your C programming skills relatively quickly
Cons:
1. Projects 2-4 are incredibly time consuming and difficult to get done in time
2. Material after the Midterm is almost useless (Professor is also not a gifted lecturer)
3. Very little support from the professor/TAs
Detailed Review:
Overall the first half of the class (pre Midterm) is pretty good, its decently paced and provides a lot of informative material (especially if you needed a refresher on some basic O.S principles). However, the class falls apart almost immediately after this. Projects 2-4 are incredibly taxing and require a lot of time to get comfortable with the codebase before you can actually start coding. You're given less time to complete the harder projects in this course for some reason and they time it poorly where you have spring break, the midterm, and a project due pretty much back to back to back.
The lectures are not geared towards Pintos at all either, and for such a tricky project it seems unfair to just leave students to their own devices without any sort of helpful tips or tricks to get started. Overall, while this course has some good aspects almost all of them (textbook, projects, etc.) are freely available anyway and the parts which are negative are unique to this course specifically. It seems strange and almost negligent to change the projects in such a severe way from before and not change any of the other aspects of the class to try and provide more support. If just a few things were changed/updated I could see this class improving dramatically, but in its current state I would not suggest any student take it.