Reviews for CMSC416

Information Review
Abhinav Bhatele
CMSC416

Expecting a B
Anonymous
12/20/2023
This is probably the worst class I have taken here at UMD. The year started with a super difficult project which I could see demoralized the class. Then you get to the midterm which is almost immediately after that first project. The midterm asked overly specific with no real guidance to prepare for it. Might I mention that he refused to record lectures for reviewing purposes and the slides that he posted contained no real context to the content i.e. only, pictures, diagrams, etc. Furthermore, there are no relevant coding examples shown to us that pertain to the project. He shows methods and functions relevant to some parallel coding implementations but no working code examples. He explicitly said we were meant to dig through the documentation and other resources instead of showing how to implement the code himself. He allowed us to watch lecture recordings from previous years after people complained but many of them were outdated with the slides being 2 years older.
Abhinav Bhatele
CMSC416

Expecting an A+
Anonymous
12/17/2023
I would be weary of the positive reviews from the previous semester. That was when the class had online midterm and final exams. All exams are now in person. Also the extra credit assignment at the end of the semester is significantly harder than it used to be. I do not believe the previous reviews are accurate of the current state of the class, it has become worse.
Abhinav Bhatele
CMSC416

Anonymous
12/16/2023
The class is absolutely overhyped, and it is not worth taking. I took this class because the grade distribution looked very appealing. However, that grade distribution is not accurate of how the class currently is performing. Also keep in mind, all exams and midterms are now in person which means that distribution is 100% going down. I also realize that it would have served me better to take a class with more meaningful content that would be more harder to get a good grade. Pros: - Projects require zero brain cells, meaning they can be completed in a short amount of time if you know what you are doing. - Lecture outline notes are provided online. Cons: - Projects require zero brain cells, a waste of my time and does not serve an meaningful contribution to my learning in this class. - Professor cannot keep is word for anything. He says he will give a certain extra credit assignment which would be easy but then switches it up and gives a extremely hard one that more than half the class opted not to do because of the difficulty. Also he said that he would move the final exam to the last day of classes, but then 1 week before he decided to have it over 2 classes (the last two classes), which reduced the amount of time students would have to study. This is literally one week before it, so of course I and some other students went crazy and voiced our concern. He ended up having an option to take the final during finals week, but I shouldn't have to go through a range of emotions and stress to be given that options that I rightfully deserve. - The free response questions on the exams have a strict grading rubric. This means that if you do one minor step wrong, you lose points for all future portions of that question. This was very frustrating, and when I tried to reason with a TA he was very condescending. - Professor keeps saying he collects feedback, but it is clear he doesn't implement any of it. We had a feedback meeting on the last week of classes, and he agreed it would be a good idea to provide a clear list of topics that would be on the final since the course content is very broad.... he did not do this and ghosted the class on Piazza. Overall, if you want a free grade take this course. If you want to maximize your potential as a student, this course is not worth your college tuition. To those who signed up for this course next semester due to the inflated grade distribution, it may be a solid idea to reconsider.
Abhinav Bhatele
CMSC416

Expecting a B
Anonymous
10/20/2023
Professor is friendly but the course and course content sucks. Lectures are extremely boring and projects are too (aside from the first one, which is pretty hard). Half the semester is done and not a single project is graded. Every project usually involved learning some kind of API and then using it and does not really use any problem solving.
Abhinav Bhatele
CMSC416

Expecting an A+
Anonymous
12/20/2022
Abhinav is a really good professor. He's pretty good at teaching, but his slides are excellent. You could study his slides from home if you wanted to and they'd be nearly as good as the lecture itself. His projects are interesting and despite being very very simple, you end up learning the content much better by doing them. The exams are super fair (the final was online, open note, and open book) and he takes student feedback very seriously. He would constantly check in with us as a class throughout the semester and ask for our opinion on different aspects of the course, and he's fairly active on Piazza. He offers a boatload of extra credit, too.
Abhinav Bhatele
CMSC416

Expecting an A
Anonymous
12/20/2022
This iteration of the course addresses some issues that his previous semesters had. He routinely asks for feedback as to how the course is going, how students found assignments, any issues we had, etc. The first assignment is still difficult, but not as difficult as the previous iteration, and in fact all of the assignments have gotten easier (i.e. some unnecessarily hard parts have been removed) from what we've been told to the point where some projects are just a few line changes. I definitely think that over time the projects will become more and more substantive/useful while still being pretty straightforward. Anecdotally, it seemed like most other students in the course had a fine time with the material, and struggled mostly with the buggy setups for some projects / getting used to working on a cluster / vague project descriptions. Since the class is pretty new, lots of the materials draw on professor Bhatele's research background, so he's able to offer lots of insight into their applicability and trade-offs he has to consider. Definitely a benefit especially if you're interested in the high-performance computing field. Overall, the material feels pretty well distributed between technical facts and trade-offs you have to think about, so it's a more engaging lecture than just reading off the slides. The novelty of the course does mean some of the assignments aren't very fleshed out and have somewhat vague/buggy project descriptions in places where we'd definitely need the info. This results in blockages for everyone, but they're very generous with extensions if some mass problem occurs even for an hour. Also a lot of our project grades are based on the runtime performance of our programs (on the new Zaratan cluster), which can vary wildly without any code changes. Seems like they'll definitely fix/work on this next iteration of the course. There's also a ton of extra credit in the class. The midterm was timed + in-person, then the final was a 24h online take-home. Both were straightforward and pretty much all material was contained in the lecture slides (definitely go to lecture though to listen to discussions on big-O runtimes, properties on hardware architectures, etc.). Should definitely get an A if you start the projects early so that you don't run into last-minute bugs, even easier if you're fresh on your C/C++ knowledge.
Abhinav Bhatele
CMSC416

Expecting an A-
Anonymous
12/20/2022
While Abhinav means well, this course is by far the worst CS course I've taken at this university. Horribly taught and the grading scheme is borderline all or nothing on exams. Highly recommend not taking the course and spending your time on something more worthwhile.
Abhinav Bhatele
CMSC416

Anonymous
12/26/2021
Extremely knowledgeable
Abhinav Bhatele
CMSC416

Expecting an A+
Anonymous
12/26/2021
To my knowledge, this is the second time this class has been offered. I have mixed feelings. PROS (These pull the course up from 1 to 2 stars): [+] The midterm and final exams were offered online, open-note, with no time limit. This format both feels and is way better for the students, so I appreciate this. [+] There was a lot of extra credit, which made it not too hard to get a good grade. CONS: [X] The first project was ridiculously difficult. I had never been more stressed out by a comp sci project before. It wasn't even something conceptually that difficult, but the information we had leading into this just wasn't enough and too much time had to be wasted on things that didn't lend to learning more about parallel computing. In the end, too many students did not even have anything to turn in, and got a zero (to be clear, I was not one of those students, so this review is not out of spite for that). The average for this project was in the 50s. [X] Projects in general were not great. The projects would be assigned weeks after we had moved on from the relevant material. The explanations on what to do often felt inadequate and were not clear enough. This led to a lot of misunderstandings and frustration that could have been avoided with a little more clarity in writing. There would often be errors and/or files not properly set up that would cause it to be difficult to continue the project. [X] The projects were not designed very well. That doesn't mean they were hard. Some, like the CUDA projects, were easy when you figured out what to do, but I can't say I learned very much from doing them. [X] There wasn't enough preparation given for some of the projects. Knowledge of certain languages or technologies would be assumed when they had never been used in classes leading up to this one. There were not live code demonstrations, which I've come to realize are essential for understanding how certain commands/methods work. [X] Projects were done on the DeepThought2 server. This caused a lot of issues. Firstly, the only info given on how to use it was an ungraded project that mainly directs you to a page on documentation. This is an alright way to learn *as a supplement*, but certainly not as a main source if you can help it. Similar to the last point, a little demonstration could have gone a long way here and would have been easier to understand. If not live in class, then maybe with a prepared video to share with the class. [X] On DeepThought2, to debug a project, you need to send a job request through the server. For an individual job this would take anywhere from 30 seconds to 3 days, since at times research departments would hog up the whole server for long stretches of time. This happened multiple times with multiple projects. This led to a lot of wasted time waiting for just one run of your project to go through. [X] Too much knowledge was assumed out of the gate. It felt more like a course for grad students than for undergrads because of this. A brief introduction on computer architecture (e.g. What is a core? What is a node?) would have been a big help. [X] The examples given for how parallel programming models work were not very helpful, because when showing how a certain feature works, too many other details would be omitted because they were deemed unnecessary when they were. For instance, an example showing a method that takes ~8 parameters would omit the last three or four arguments. I need to see what you're putting there to know what goes there! [X] It did not feel like the course staff was on our side like they have felt in my past courses. The clearest example of this was when the first project had ended and Dr. Bhatele was asking for feedback in lecture. It seemed like he did not want to take responsibility for the project going over poorly and would be a bit invalidating with student complaints. It was off-putting. This course could improve since it's new, but for now I would not recommend it.