Abhinav Bhatele

This professor has taught: AMSC663, AMSC664, CMSC416, CMSC498X, CMSC663, CMSC664, CMSC714, CMSC818X
Information Review
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.
Abhinav Bhatele

Anonymous
04/20/2020
Awesome professor!