Very difficult class unless you have a CS undergrad or extensive coding experience.
Spring 2022Overall Rating (0.7 / 5): ★☆☆☆☆
Professor Rating (2.1 / 5): ★★☆☆☆
Lecture Rating (1.4 / 5): ★☆☆☆☆
Difficulty (5 / 5):
Workload: 30 hours/week
Pros:
1. The lectures are overall good, with clear explanations of theory, drawings on chalkboards, and discussion between Leo & the professor
2.
3.
Cons:
1. The 6 assignments make up 70% of the grade and they ramp up in difficulty very fast
2. You cannot work in groups at all. Any discussion of the assignments or quizzes, even after they're done, is considered cheating.
3. The lectures are purely theory - no coding, so if you don't have prior coding experience, you'll have a hard time connecting the two and teaching yourself code.
Detailed Review:
I should've known better than to take this class right from the first week when the teacher wanted everyone to install linux, but the instructions he provided were so woefully inadequate (and caused many errors during set up) that it took myself and two other people (who had extensive to moderate experience with linux) about 8 hours to work through all the errors and finally get the installation to work properly.
The grade distribution is 30% quizzes, 70% assignments. The teacher assumed all the students have a high level of coding experience already, so there is almost zero coding discussion in lectures and he has insanely high expectations in terms of how you learn on your own:
- no working in groups
- no discussing assignments or quizzes with anyone at all, even after they're done and submitted
- googling for ideas on how to code something can also be considered cheating per some of the piazza discussions I saw from TAs and the teacher.
So basically, if you don't already have a solid coding foundation, you are forced to teach yourself how to code in this class... BUT you are also scrutinized for how you learn and some of your google research can be considered cheating.
The assignments themselves are really tough if you don't have a coding background. Basically, the teacher provides the skeleton of the assignment and you have to fill in one or more classes to complete the code to make it functional. You are graded by an autograder and they have secret test cases that they grade you on. For the most part, the teachers and TAs have not been forthcoming about what these test cases are, but they dock you major points for not getting them. I missed a couple on my second assignment and it dropped my score to a 52% even though the bulk of my code was working.
Also frustrating to note is that no solutions to assighments will ever be provided - instead you just get cryptic notes saying what tests your code failed. So you're left in a situation where you did something wrong, but you don't know exactly what you did wrong or how to fix it. By the halfway point of the semester, Piazza had over 1000 posts written in it and it was incredibly difficult to wade through all those posts to find information relevant to your work. Even worse, the assignment instructions are written very poorly and often times you have to search through piazza to find an important change / clarification to the assignment was announced halfway through the week (for example, the teachers didn't include in the instructions for project 3 that it would need to have multiplayer functionality and the majority of their test cases would use multiplayer. So if you just didn't see the piazza post announcing multiplayer functionality and you submitted a perfectly working code only for single player, you'd basically not get many points for the assignment since most of their test cases were for multiplayer). Furthermore, it takes them FOREVER to grade assignments. The first assignment took 11 days by my count. The second assignment was closer to two weeks.
People have been so frustrated by this class that they openly criticized the teaching in piazza posts and the best answer we have gotten out of TAs and the teacher is that they weren't aware of the programming level of the average student AND "don't worry if you didn't do well on one of the assignments, there will be a curve". Which really doesn't answer the concerns students had at all. Furthermore, there is a major disconnect between what the teachers expect and the reality of this class - the syllabus states they expect students to spend 5-10 hours per week on this class, but when the reality turned out very different, a TA clarified in piazza that assignments could take "dozens" of hours. For the students struggling in the class, they ask the teacher and TAs for more concrete information on grading and how to improve, and the TAs / teacher always fall back on "there will be a curve". But what does a curve matter when this class is pretty well divided in terms of student coding skill? On the last assignment, 40% of the students scored a perfect score or higher. The portion of the class that already has a very solid background in coding surely will demolish the curve for everyone else, and this is a concern voiced by multiple students that the teacher and TAs seem to refuse to acknowledge.
Overall, I despise this class. I expect this degree to be full of difficult classes and I expect I have to work hard. I have a math background, so I always expected that I would need to up my coding game to make sure I can handle these courses. But the way this class is set up feels like the teacher wants to treat students like criminals. Right from the start, they don't want to teach any coding and they are extremely restrictive with how students interact so students cannot help each other learn coding, and they consider much of online googling to self-teach as cheating. I realize the teacher is trying to prevent cheating by being very strict, but in my view, he's being so strict that he's also limiting the learning potential of students.
I am of the opinion that, as long as you learn what you need to learn, at the end of the day it doesn't matter how you got there or how long it took you to get there. But this class's restrictions make it seem like the teachers strictly only care about the code, about deadlines, and about the fact that you cannot learn in groups or use outside resources to teach yourself.
If you have a strong coding background already, you'll probably find this class to be a reasonable difficulty level and maybe even a "fun challenge". If you do not have a strong coding background, I strongly discourage you from taking this class until you do. This is, hands down, the most miserable experience I have ever had in an academic setting in my life and I regret signing up for the class. Straight up, I would prefer to take the theory-only version of the class over this version.
Hopefully the teacher makes some adjustments to make this course more doable for those of us that have primarily non-CS backgrounds, but so far the only adjustments the TAs and teacher have hinted they may do is:
- provide video instructions of the assignments to hopefully make all the expectations more clear
- get a half-semester course in coding available for students to improve their coding skills
I feel the need to say this again, since there has been a lot of elitism from CS students in the class looking down on the non-CS students. Saying stuff like "I thought the assignment was easy" or "you should've known a graduate level course would be hard, why didn't you prepare?" isn't constructive or helpful. There seems to be a big divide in the class between the CS elitists and everyone else, and it makes the entire vibe of the class feel very hostile and upsetting.
If you're a person with a strong CS background already, I would guess you could take 10-12 hours on the assignments per week. If you're not, prepare to bang your head against the wall and have sleepless nights, spending 30+ hours on an assignment just to have your score come back as a 50% or lower, to not get any meaningful feedback, and to just be told "there will be a curve".
I cannot emphasize enough how much I hate this class. I hope they make improvements to it in the future, but with how non-responsive most of the TAs and teacher have been to criticism from students, I don't have a lot of hope that major changes will happen in the future.