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 (0.7 / 5): ★☆☆☆☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 20 hours/week
Pros:
1. Textbook and Lecture videos are decent.
2. Depth of content is good
3.
Cons:
1. Worst course support in the program
2. Requirements for assignments unclear
3. Expect your GPA to fall after taking this class
Detailed Review:
It's hard to ascertain if this was the course or the horrible TA and instructor support during the summer offering.
In contrast to the Spring or Fall, this course in the summer moves extremely quickly. Every week there are a set of reading quizzes and a proof/programming assignment. In addition, there are two midterms and a final exam. The weeks of the midterms and finals, you additionally have to complete (rather challenging) proof or programming assignments. This leads to a rather high workload throughout the course which feels like a constant sprint. The textbook is pretty dry as are the lectures, but they are highly informative. Lastly, the assignments are incredibly poorly defined in terms of requirements and clarity.
Starting the summer course, TAs notified the students that there would be office hours on Wednesdays and Thursdays at 1:00 PM CT. When asked if there could be any modification to the times or recordings of the office hours for students that work full time or are international, the staff response was a prompt "get f*****". This ended up not mattering after about 6 weeks, at which point the TAs just stopped showing up to the scheduled office hour slots anyway.
Lastly, to add insult to injury, when the staff was asked for practice materials the answer was "refer to the textbook". The only exception was midterm 1, where a practice midterm was provided. The TAs did not release solutions and instead instructed students to discuss the problems with other students on ED discussion. This was fairly frustrating, as the entire first 1/3rd of this class is learning a very specific syntax and reasoning method that the instructors want you to use via trial and error on the first 4 assignments.
This would have been made better with ED engagement or support, which ended up also being non-existent. The professor was engaged on ED for the first week of the class, after which he disappeared from the course. The rest of the course was run by a TA. In the entirety of the course, there were a total of 40 ED posts and responses submitted by the TAs. Out of these, 18 were grade announcements, office hour cancellations, and date changes.
The remainder were generally snarky posts from a single TA about why they were stupid for not uncovering his hidden test cases in the midterms and assignments, reminding everyone that "yes, it makes sense that if you pass 98/100 test cases your score on this problem should be 15/30", or finally, letting everyone know that "yes your Matlab function should deliver a correct solution for an input matrix that is 1x1 in size." This was followed up by the TAs leaving the students with a "no, this course will in no way be curved" and then archiving the ED forum.
Lastly, the grading was weeks behind the entirety of the class. The final 2 assignment grades, which covered the material of the final exam, were released three days before the final exam was due, as were the grades for the second midterm. Students learned their grade going into the final roughly a day before the Q-drop deadline, which many students used.
With regards to the curve and grading distribution, the following is the distribution of grades for the 93 students who did not withdraw from the course this summer:
A or A-: 32/93
B+, B, or B-: 40/93
C or lower: 20/93
This was sort of a kick in the teeth for those who did poorly considering that in comparison to previous semesters, where 93% of students were receiving a 3.0 or higher, roughly 35% of this class has now received a grade that could conceivably qualify them for academic probation and 20/93 did not meet the credit requirement.
The following were the distribution of grades for the bundled assignments, midterms, and final exam:
Homeworks: Q1: 77%, Median 86%, Q3: 93%
MT1: Q1: 46% Median 63% Q3: 82%
MT2: Q1: 78%, Median 85%, Q3: 93%
Final Exam: Q1: 65%, Median: 80%, Q3: 85%
TLDR: This course is probably okay during the spring or fall, with robust course staff support and a slower pace. In summer, where the quality of instruction is noticeably lower, don't touch it with a 10-foot pole. That is unless of course you enjoy teaching yourself graduate level math directly from the textbook and have all the time in the world.
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.