CS7643 Deep Learning - One Overhyped Class!
Disclaimer - I took this class in summer (for the love of OMSCS, don't do this) and I ended up in a bad project team. So YMMV
Background - Non-CS bachelors; Comfortable with Python; Reasonable exposure to ML basics; Completed AI and CV so far
Grade - A (98% in assignments, 80% in quizzes, 96% in project)
Introduction
I have no idea why this course has so many rave reviews. It was not a terrible class (hence the dislike and not strong dislike), but nowhere near as good as some of the reviews suggested. The lectures are mediocre (don't even get me started on the Facebook lectures. That has a rant section of its own below), half of the assignments were pointless and the group project was just two weeks of frustration with absolutely no meaningful end result.
If you really want to get started with deep learning, I would strongly recommend looking at Dr.Andrew NG's Deep Learning specialization on Coursera. I ended up doing that in parallel with this course and it did pretty much everything better than this course. The lectures were miles better in quality and the assignments were easier but much more meaningful and it was about $700 cheaper. I apologize if I come across as promoting a different course here, but I was so disappointed that an MOOC can offer so much content that is better in quality than a GaTech course.
Here is a section wise breakdown along with my ratings:
Lectures and Content (5/10)
In the beginning of the course, I was delighted that this course had its own dedicated lectures and slides and not some Udacity cut and stitch job. I enjoyed the first few (say 25%) of the lecture videos. I felt the professor - Dr.Zsolt Kira put in a lot of effort into introducing the fundamentals of deep learning. Basic neural network concepts, optimization, CNNs were all covered very well. The CNN architectures is where things began to fall apart for me. The lectures started to feel more rushed with a lot of diagrams thrown in but no proper context. (Dr. Andrew NG's specialization does a great job here and teaches you the intent behind each of the architectures with a lot of insights on the implementation). From here, it was downhill. The Faebook lectures start to take over and the whole experience is ruined. Also, the textbook was not great and I ended up returning it in 10 days.
Facebook Lectures (0/10)
One of the reviewers used the term "pedagogical disasters" to describe these lectures. Those words could not have been more accurate. This is easily the worst aspect of the course for me. These guys may be world class software engineers and I respect them for that, but they should stay away from teaching for the rest of their lives. Every single video was beyond terrible and most of them go like this: Self introduction -> throw in some random technical term with absolutely no context -> brag about some cool stuff that Facebook did in this domain -> the end. Please Prof. Kira - get rid of these ASAP. These concepts are valuable and need to be taught well. Even if you provide links to YouTube videos on this content, I would be okay with that.
Assignments (5/10)
Massive disappointment. According to me, the assignments are the most important aspect of any course and can potentially save an otherwise bad course. Not here unfortunately.
- Assignment 1 - Really good. You build your own neural network from scratch, implement loss functions and backprop, visualize the learning, etc. Medium - hard in difficulty and I learnt a lot. Included a detailed write up section as well. In general for write-ups, as long as you explain your tuning process instead of just showing a massive table of hyperparameters, you should be fine.
- Assignment 2 - First part was building CNNs from scratch and was pretty brutal. But it was worth the slog. The second half was CNNs using PyTorch - good introduction to this library but nothing beyond that. The third part was class imbalance and focal loss. In theory this was interesting, but was not executed well in the assignment. The instructions were vague and we had no idea what end result they were expecting.
- Assignment 3 - Removed due to short summer semester. Why they removed a potentially valuable assignment and kept a useless group project is beyond me (same 2 week time frame for both!)
- Assignment 4 - Without doubt, the worst assignment I have ever worked on in any course so far. Had to build encoder-decoder type sequence models and transformers. It was setup in a terrible way without any introduction to what you were actually trying to achieve. 90% of it was wrestling with tensor dimensions and blindly trying to pass the autograder. I got 100/100 but learnt absolutely nothing.
Overall, the assignments (A4 and most of A2) didn't teach me anything particularly useful or relevant to the real world. My advice is start early and keep learning expectations to a bare minimum
Graded discussions (7/10)
There were three of these - You essentially read cutting edge DL papers, answer some subjective questions and respond to others' posts on Piazza. The papers were great, the questions were great, but the responding to others part was forced and you just end up making generic comments. On the plus side, they were graded leniently.
Group project (2/10)
Absolutely hated it. I really wish OMSCS gets rid of all group projects. I just don't see the value of these in a setting where most of the people are working professionals and are in different timezones. We worked on this project for about 10 days. Technically, we had about a month, but in the first two weeks, there were a gazillion other deliverables. I am pretty sure most of the folks spent under two weeks on the project. (The longer semesters should definitely be better in this regard) The project itself was weak - pick some preprocessed dataset, tune some really basic models and write 6 pages on how we changed the world. Absolutely nothing meaningful was achieved. I don't think it is possible to do a research paper type DL project in 10 days unless all team members are already proficient in this field. To make this worse, I ended up in a bad team - one person who didn't bother to review the work others had done and suggested last minute changes to everything and another person who hardly showed up to meetings or did anything valuable. I am not even sure if the peer reviews are factored into grading. Overall, a hugely frustrating experience.
Quizzes (10/10)
The lone savior! This is the most challenging part in this course and can make or break your grades. There are five proctored quizzes (longer semesters have 11 I think) that are a mix of conceptual and computational questions. They are hard and you really need to understand the content well to get through them. I really liked the quizzes and felt a sense of accomplishment when I did well on these. Also, they were my main motivation to slog through some of the god awful lecture videos.
Grading (8/10)
Assignment grading was fair. Discussions and projects are graded leniently. Pay attention to the assignment write-ups which carry about 30% weight. You can potentially lose points here. The grading process is extremely slow and this creates unnecessary anxiety. Grades for Assignment 2 and 4, Discussions 2 and 3 were all released only in the last week. Overall, if you do the assignments, discussions, project well and somehow manage 60% in the quizzes (which is not easy), you have a shot at an A.
TA support/Office hours/Slack (8/10)
The professor was attentive and held office hours. Thank you sir! (However, based on past reviews, looks like he was more involved during the longer semesters). TA office hour support was stellar during the first few weeks and was helpful to get through assignment 1 and quiz 1. But then, it dropped off steeply. The later sessions were not very helpful. Piazza was a dumpster fire especially during assignment 4. TAs just couldn't handle the chaos and there were numerous questions left unresolved. Surprisingly, the slack channel which is usually bustling with activity was relatively quiet. A shoutout to TA Farrukh Rahman who was active and remained extremely polite throughout the semester.
Note on Workload
This is a high workload class (20 hours or more per week). Without exposure to ML and Python, this will be borderline unmanageable. I strongly recommend you take this course in the longer semesters. This is definitely not a summer course. You end up doing 75% of the work in 67% of the time. It is a constant barrage of deliverables week after week. It will probably be similar in spring or fall but you would at least have more time to work on the project.
Overall (5/10)
In short, this course was a disappointment. Unfortunately, it is not a case where there are a few rough edges and will be eventually sorted out. It needs significant rework - assignments need to be made more meaningful, Facebook content needs to be redone, project needs to have a better definition and scope, etc.
Take this course if you want CS7643 - Deep Learning to show up on your transcript or if it helps you meet your specialization requirements. But if you want to actually learn deep learning, look elsewhere. There are tons of good resources online.