Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (1.4 / 5): ★☆☆☆☆
Difficulty (4.3 / 5):
Workload: 18 hours/week
Pros:
1. This course is very challenging and will greatly increase your C programming skills.
2. In hindsight, pintos is an awesome project, and would be a lot of fun to work with in free time for OS enthusiasts
3.
Cons:
1. The first semester of the new PintOS projects made this course wildly more difficult than previous reviews made it seem.
2. With the new course format, the lectures are effectively useless.
3. Expect workloads of 15+ hours per week unless you are already familiar with the PintOS project or another lightweight x86 OS.
Edit: I'm modifying this and dropping the rating further after taking the final exam. The final exam is even further removed from the course content than the assignments and midterm and has multiple extremely nuanced/tricky and even opinion based questions.
Detailed Review:
I'm not sure what happened when they revised this course, but they are still clearly working out the kinks. In hindsight, conceptually the assignments themselves are not particularly difficult. The issue that arose for the group I worked with (and I assume many others) is the fact that PintOS is a moderately large code base. As a group we spent tens of hours over the course of the semester just figuring out where things were located and what they did. For reference, there are 17,000 lines of code in the code base and each project will add/remove ~1000 lines across 10-15 files.
You are provided the benefit of working in a group, but unless you know where to start and what needs to be done ahead of time, you typically just end up working on the same portion of a given project until one of the group members finds something that sticks.
All of this would have been fine, except for the fact that the lectures and reading material are entirely disconnected from the projects.
This course is currently advertised as a course where an introductory os course is not needed for success. I don't think that is the case. For reference, I took parallel systems prior to this course and found the assignments and content far more straightforward and frankly less difficult.
On the bright side, successfully implementing the projects does feel very rewarding and it will genuinely improve your knowledge of operating systems and virtualization. However, this comes at the cost of slamming your forehead into your monitor half the time trying to run down a 76 line kernel panic that it turns out was just trying to free an already freed file in the file system.
Breakdown of projects and time:
Project 0: Wish shell ~4 hours per team member/week
Project 1: Threads ~10 hours per team member/week
Project 2: User Programs ~15 hours per team member/week
Project 3: Virtual Memory ~24 hours per team member/week
Project 4: File System ~20 hours per team member/week
TLDR: tough projects, lack of piazza support, and meaningless lectures. The projects are tough and not particularly fun, but they would be significantly more valuable if the rest of the course was centered around them.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.1 / 5): ★★☆☆☆
Lecture Rating (1.4 / 5): ★☆☆☆☆
Difficulty (2.1 / 5):
Workload: 20 hours/week
Pros:
1. I learned a lot in this class
2. The grading is lenient
3. Project-based, no exams
Cons:
1. A lot of lectures are outdated, so you have to learn by your own.
2. I would say the TAs/Instructors aren't helpful on piazza. Most piazza questions are answered by other students.
3. The intervals between assignments are very short.
4. Assignments are some times confusing cause there are a lot of ambiguity.
5. Unorganized class structure.
Detailed Review:
TLDR: Pretty easy class to get an A if you put in the work to learn on your own. Unhelpful TAs/Instructors.
I came from very little CS experience so the assignments were pretty tough and time consuming for me. Since most lectures are outdated, I had to pretty much google and learn from YouTube tutorial for most of the assignments. The flipped classrooms or mini homework would take me on average 5-8 hours and the homework would take me on average 20-30 hours.
Lecture Quality: The first thing that made me disappointed in this class. A lot of the lectures materials are outdated making me hard to code along the lecture. The lecture was made on 2020 and android has made a lot of changes to their API/elements. Only 1 new lecture throughout the semester.
Professor Quality: Typical university professor, the professor is great at the subject but not great at explaining/teaching. I wish the professor could be more straight to the point when explaining concept/assignment.
Piazza Support/TAs: Not that helpful, most of the time their answer to piazza question is just to refer to android documentation. A lot of unanswered student's questions.
Class Difficulty: Overall very double to get an A even if you're new to programming just takes a lot of time. Grading is very lenient, in most assignments students get above 90%.
Stats of the assignments:
HW1 (out of 30): Mean: 26.14, Median: 29
HW2 (out of 33): Mean: 31.99, Median: 33
HW3 (out of 58): Mean: 56.24, Median: 58
HW4 (out of 47): Mean: 43.64 ,Median: 47
Final Project (out of 100): Mean: 92.15, Median: 95
Flipped Classrooms assignments: Pretty much most students got 99% for all of the assignments.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.1 / 5): ★★☆☆☆
Lecture Rating (1.4 / 5): ★☆☆☆☆
Difficulty (2.1 / 5):
Workload: 7 hours/week
Pros:
1. Fundamental methods of the regression analysis are mostly covered
2. Workload is reasonable (except the last 2 weeks of summer session)
3.
Cons:
1. Peer grading policy
2. Extra time needed to confirm the materials ( to be explained below)
3. Unclear target of this course
Detailed Review:
Lectures:
The slides are not clear with full of typos, and often times missing necessary assumptions and details. Without providing helpful supplements to the students, this class is not suitable for beginners to dig out the materials themselves. However, for people with math/stats background, lectures omitting most of the proof is not helpful either. Not sure whom is this class designed for.
Homework & Peer grading issues:
The purpose of homework seems lacking purpose as well. Some required very complicated calculation (not mathematically difficult, but just complicated and time consuming). Since the lecture notes are missing lots of details, many students raised fair questions but received responses from TAs or instructors with little respect and patience. One particular TA answered without fully understanding the discussions(no matter for grading or for the questions).
The reference codes provided are not helpful at all. The naming of variables are lacking comments and logics. It is hard to use.
The grading policy was horrible at the beginning by just taking the very first two grades submitted. The instructor changed the policy by taking one more person's grading but the unfairness could be observed here and there. I still do not understand why they set the grading options by only good(full points)/fair(half points) and poor(no point).
Since the lecture is not self-contained, I would not recommend you to take it as a review course if you don't have fresh memory of stats/math from college.
I did not find this course helpful because its neither theoretical enough or practical enough. It seems like the instructor needs to work more to update his lecture.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (1.4 / 5): ★☆☆☆☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (3.6 / 5):
Workload: 20 hours/week
Pros:
1. Interesting topic, lots of information to cover
2. Learned some python/pandas/scikit/seaborn
3. Quick responses on Piazza
Cons:
1. Lectures were posted as hour-long videos with no notes provided.
2. Homeworks were demanding, theory-heavy, and confusing
3. TA's weren't as helpful as they could have been
Detailed Review:
Very demanding and theory heavy course, condensed into the summer semester. The first portion covers "machine learning algorithms" and involves 3 homeworks which take a considerable amount of time. All 3 had a theory portion and a programming portion which were difficult to complete and quite obscure in terms of what was asked of students. For Summer 2021, these were peer-graded meaning that other students graded the assignments instead of the TA's doing that. I found this a little strange, but it all worked out anyways.
There was an exam for the first portion. Its average was a 40/60.
The 2nd portion covered statistical modeling and involved another 3 sets of homework. These were a little lighter - one homework was just a theory portion, another included just a programming portion, and the third was a theory and programming assignment. However, the topics covered were still quite rigorous. The assignments were peer graded as well.
The exam for the 2nd portion was non-cumulative. We haven't gotten the results back yet.
A decent course overall, but definitely a lot to bite off.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.1 / 5): ★★☆☆☆
Lecture Rating (1.4 / 5): ★☆☆☆☆
Difficulty (2.9 / 5):
Workload: 8 hours/week
Pros:
1. Easy class
2. Low time commitment
3.
Cons:
1. Extremely boring lectures (long proofs)
2. Poor communication
3.
Detailed Review:
First half of the semester was more time than the second half. They are each taught by different professors. Second half legitimately took probably 1-3 hours a week to do the homework. First half was probably closer to 10-15 hours.
Peer grading is ok but this class turned into everyone gets 100% rather quickly. The professors and TAs did almost nothing all semester. Students graded others and mostly gave our 100s, then that is the grade we got. I won't complain about a good grade but there was nothing constructive about this and I did not know if my answers were actually correct because we were graded on "effort".
The exams were quite hard but it was fine because they curved the final and the homeworks made up for a poor midterm.
The lectures were terribly boring and not all that useful. At least the second half the professor published his notes, the content was much easier though.
I would recommend for the grade boost but would not if your goal is to learn a lot.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (3.6 / 5):
Workload: 8 hours/week
Pros:
1. Homeworks are very simple once you look up relevant resources and understand what it is trying to make you do
2. Doesn't require a lot of time commitment
3. Opportunity to flex your math muscles (e.g. doing derivatives)
4. Contents are pretty broad
5. Instructor and TAs are very nice
Cons:
1. I passed with an A without gaining a good understanding of anything
Detailed Review:
I feel it is a difficult course. I had difficulty understanding 90% of the materials. Then when I started on the homework (especially the later ones), I didn't know where to begin. However, when I read up on the online resources, I realized that many of the problems actually do have well-structured solutions (i.e. step-by-step methods that you can follow and apply to solve similar problems). Unfortunately, those structured solutions were not presented in the course materials.
The course materials lacked examples. In the scarce examples that were presented, data was randomly generated without seed and critical steps were omitted from the process (sometimes only intermediate results were provided), making it difficult to replicate and check your understanding.
In some cases, more practical approaches (such as one-line R code) exist, but were never mentioned in the course materials. R/Python was only used as a "calculator", which is probably a reason why the provided R code is difficult to interpret. I understand if the purpose is trying to make us dig under the hood. However, I feel from a practical point of view, at least knowing what pre-existing functions we can use will be very helpful.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (0.7 / 5): ★☆☆☆☆
Difficulty (0.7 / 5):
Workload: 3 hours/week
Pros:
1. Knock out a class with low effort
2. Final project is open ended and allows you to explore your interests
3. Easy quizzes and grading.
Cons:
1. Course material is pretty superficial.
2. Quizzes are poorly worded.
3.
Detailed Review:
This class was great. You are pretty much coasting once you get the final project done. And you can work on it at any point in the semester.
I know a lot of people advise against this class because it's too easy, but honestly I needed an easy class to just make some progress with the degree. So I'm all about it.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (2.1 / 5):
Workload: 7 hours/week
Pros:
1. Not to a big time commitment
2. Professors and TA were helpful
Cons:
1. Mostly covered content from other classes
Detailed Review:
This class kind of felt like a weird hybrid between the Optimization and Renforcement Learning courses. The first half of the course is basically a review of optimization (which is weird since that's a pre-req for the course) and the second half is a different take on concepts covered in Renforcement Learning. The concepts are all taught at a pretty theoretical level without a ton of real world examples, so for me at least it felt pretty dry. Homeworks were pretty straight forward but occasionally involved a lot of sitting around waiting for stuff to run on Google Colab. Peer grading was designed to be super generous and those homeworks comprise 70% of the grade. The TA and professors were generally responsive to questions on Piazza and willing to move things around as needed.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (2.1 / 5): ★★☆☆☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (2.9 / 5):
Workload: 10 hours/week
Pros:
1. Constructive, engaging projects
2. Mostly well structured, informative lectures
3. Good project/exam grade weighting
Cons:
1. Lectures disjoint at times with unexplained logical leaps
2. Not uncommon for professor to be considerably wrong in both lectures & exams
3. IMHO first project had excessive boilerplate
Detailed Review:
Honestly, I can’t say I enjoyed this course. But at the same time, I know objectively this course isn’t bad & for those like myself that didn’t like it much, a few changes & this course would be excellent. For one, there were too many mistakes & errors in lectures & exams for me to forgive. On the midterm, the professor phrased 1/4 of the questions centered around a prompt which assumed a provably false claim to be true. The topic was also fundamental to the theory of the course. This resulted in several questions which were truly unanswerable. How can that be allowed to happen? At least once per week in the lectures, the professor would say something which made no sense, only to flip-flop the words around later in the lecture to compound the confusion. Sometimes these mistakes resulted in having to rewatch the lectures. With all that said, I am someone who can’t “just go with it”, & I can easily tell if you are someone who is OK with just going with the most obvious choice, you will generally not be as dissatisfied as I was. I also can’t deny I learned a ton about compilers, coming from someone who only had a minor in CS with no background in compilers. The projects were super helpful to understanding, but the first project could be absolutely miserable if you don’t design it well from the start. It is a substantial piece of software, too substantial in my opinion. I had to take off 2 days from work on the week of the deadline & put in probably 40 hours just that week. I think our time would have been better spent if LO-1 were implemented for us & we just expanded to LO-2+ (language levels of the fake language we implemented). I also agree with the other review from this summer, suggesting quizzes instead of exams. You would have to try to get below a B in this course, given the generous grade weighting & unlimited submissions for projects. An A is entirely doable as well, so I can’t beat on this course too much. Final note, the exams were in my opinion frustrating & unfair. He provides the previous semesters exams, so maybe he just felt like throwing in more brain teasers & pointlessly complicated assembly this particular semester compared to last, but beware & probably don’t have super high expectations. A large portion of your grade on the exams is up to how well you interpret his cryptic problems (IMO, a crapshoot, best off just going with your gut & not over-analyzing because you WILL find ambiguity). Multiple choice all/nothing is also an unforgiving format. Luckily, you can average a 75% of the exams & still get an A easily.
Overall Rating (2.1 / 5): ★★☆☆☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 7 hours/week
Pros:
1. The concepts were pretty well-explained (at least compared to my past experiences of algebra)
2. It seems like a great way to ramp up on algebra for the MSCS.
3. 2nd midterm and final were take home exams and were released over around 2 weeks before the due date. You could almost just think of them as assignments/projects.
Cons:
1. Long turnaround on getting grades. We didn't ever get the 2nd midterm marks back, for example.
2. Piazza questions were often not answered or needed students to answer. FWIW, I think there was a very large cohort of students taking the course. They did post a lot of helpful hints & clarifications for the final exam though.
3. Not particularly interesting content (very subjective)
4. Take home exams weren't organized the best. Submission instructions came very close to the deadlines.
Detailed Review:
The course covers algorithms for computing algebraic things (like eigenvalues/eigenvectors, solutions to matrix equations, etc.). To do this requires understanding a lot of algebra, so this course is probably a great way to get ramped up on algebra. It would also be somewhat helpful for proofs since you see a lot of them, but you don't get enough feedback to improve your skills. I came in with a strong maths background, so this wasn't an issue. The maths foundations from this course should be more than enough to do OLO, QIS, RL, DL, NLP (I haven't done the other courses that require some maths knowledge).
The organization was not the best. Take home exams were released early but submission instructions were released very close to the deadline. Homeworks were marked very late (last 2 homeworks weren't even marked; full marks were given if you made a submission).