Overall Rating (5 / 5): ★★★★★
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (5 / 5): ★★★★★
Difficulty (3.6 / 5):
Workload: 18 hours/week
Pros:
1. Entirely project based, no exams
2. Codio offered is sufficient to finish all projects (use VSCode SSH)
3. Hands on coding involved in all the projects, learnt a lot!
Cons:
1. Can be time consuming (Avg 15 hrs, Max 20 hrs a week)
2. Report writing requirements are sometimes not very clear (and you can lose marks if you miss something that was expected to be written but not conveyed clearly)
Detailed Review:
This was my first course in this program (yes, some call me brave haha) and I actually loved it!
I know all the reviews talk about how time consuming the course is - and that is true to an extent. But if you are a developer at your full-time job, then you are going to love it as the projects are entirely just coding.
The projects are in C, Go and Rust. I was very new to Go and Rust, but it was easy to pickup as I was familiar with OOPs.
The second project (CUDA) was the hardest I think. A lot of people struggled to complete it. However, the grading seemed to be reasonable. Few projects have Extra Credits too (but used only within that project, not carry forwarded to the total score).
The lectures seemed sufficient, I never referred to the books. Infact, I had skipped some lectures and it was all fine.
Piazza was always active and our questions were answered without much delay.
The part I didn't like I guess was the Report work. Some of the projects' intructions were not very clear regarding what to write and explain in the report. And the Rubrics were released only after the deadline for 2 projects.
Overall, its a great course! You will learn a lot for sure.
Overall Rating (5 / 5): ★★★★★
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (1.8 / 5):
Workload: 11 hours/week
This course was very well done. The homeworks built off of one another in a way that allowed you to feel like you were actually applying what you were learning. Having had no experience with neural networks before this course, I was able to learn enough to do well on the assignments and feel like I was learning the concepts behind what I was doing. A big thing is making sure that you manage your time to complete the assignments; although they are definitely doable and really cool to do, they can take some time. Lectures varied between coding examples, theory, and case studies, giving a very good overarching intro. Quizzes were managable based and based on what we are given. No exam, and very responsive TA on piazza. Definitely recommend taking this course at some point (it was the first course I took in MSCSO and was a great intro to the program)
Overall Rating (5 / 5): ★★★★★
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (2.9 / 5):
Workload: 16.5 hours/week
Great course. I love the lectures and the course notes. I came to the course with basically zero LA knowledge. It took me a while to catch up on basic LA concepts. I learned a ton from the course. The first exam was a little stressful. All the questions are from class notes. I spent a lot of time understanding everything and there are some memorization required. The other two take-home exams are very well-designed. I learned a lot from taking the take-home exams. The only thing I don't like is that they don't have videos for the last chapter of the course and it's hard to just follow the notes. Although the last chapter is not on the final exam, it is a very important topic. I wish they could make the last chapter better. Workload can range from 8 to 25 hours
Overall Rating (5 / 5): ★★★★★
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (4.3 / 5):
Workload: 24 hours/week
Pros:
1. Very engaging and interesting lectures
2. Homework that enhanced the understanding of the course concepts
3. Helpful TAs
Cons:
1.Heavy workload
2.Restrictive Office Hours
3.Imperfect Exams
Detailed Review:
Taking this course was a very enjoyable while simultaneously painful experience. The lectures are well-done and I found the course material extremely engaging. Professor Aaronson is clearly a leading expert in this field, but thankfully, also a gifted lecturer, able to explain these concepts to others. The TAs also spent a lot of time answering questions and being as helpful as possible. As I'll detail below, at times I felt they were hamstrung by the nature of the HW problems, but all the TAs to a person were as helpful as they could be and would regularly spend more time than required of them to help students.
The homework really helped to understand course concepts but was extremely time consuming. A lot of the homework was not simply applying a concept from lecture, but usually required proofs and problem solving that are tricky to say the least, and built upon course concepts. This made the amount of time spent extremely variable and wasn't as simple as re-watching the lectures or re-reading the course notes.
At times I'd breeze through problems others were struggling with in TA sessions, other times I'd find myself not seeing the "trick" to solve a problem that others did. This also made it difficult for TAs to provide useful assistance on HW. If the core of solving a problem involves a "trick" or novel approach, giving that away, gives the solution to the problem, but anything other than that doesn't tend to be very helpful for the students. I lost track of the amount of times I'd lose hours just staring at a problem trying to find another approach. I understand why they did this, they are trying to build intuition for concepts that aren't naturally intuitive, but it's a painful process.
That being said, when you solved the HW and got a good grade, you can be confident you understood the concepts and feel a great sense of accomplishment. This homework is weekly, so the grind really starts to weigh on you week after week with very little reprieve except for the mid semester break (Spring Break). Once one HW is turned in you should really be starting on the next one as soon as possible.
As someone working full-time in the Central Time Zone I found it very hard to attend TA sessions. Almost all sessions were in the middle of the workday, making it hard to attend, and no sessions on the weekend at all. In future iterations of the class it'd be nice to have some weekend sessions when those of us who are working full-time are mostly likely to be engaging with the course material. The TAs did try to mitigate this by recording lots of sessions, but it's not the same as being able to ask questions yourself.
The last negative were the exams. They make up 50% of the grade, are very long, and offer no significant partial credit. On the midterm I found myself barely able to finish on-time and lost numerous points for careless arithmetic mistakes due to the speed I was working.
The final was longer, and we had more time, which was nice, but some of the exam problems required applying QIS concepts to algorithmic problems I wasn't familiar with. For example, the practice final involved using QIS to solve Graph Ismorphism, assuming the students were already familiar with those algorithms, which even though I received my undergrad in CS from UT Austin, I was not (it's been over a decade since my undegrad).
Ultimately, this points a little bit of a trend I've seen with this program, which is that the courses are really geared towards students who are coming right from undergrad and have a lot of concepts at the ready, not people who are going back to school after time away from the core undergrad curriculum. If that sounds like you, just be prepared, brush up on your linear algebra and peruse the course lecture notes ahead of time if you can.
It might sound like I'm a bit negative on this course but I really loved it. It's currently my favorite course I've taken in the program. If you are willing to spend A LOT of time on this class, it will be deeply rewarding, and the course resources are there for you to succeed. Just go into this course with 1) an interest in the subject and 2) an ability/willingness to put the time in to master the concepts. If you are taking this class with another course in a given semester, ensure the other one has a much lower workload or you're asking for trouble.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (4.3 / 5):
Workload: 14 hours/week
Pros:
1. Highly relevant coursework content that touches on both fundamentals and latest things in NLP
2. The TAs+professor are very active in Piazza
3. Very well-crafted assignments, mid-term and final project
Cons: N/A
Detailed Review:
I took this alongside DL and RL in the same semester, and should be qualified to say that NLP is really the most recommended course among them. It's both funny and sad to see the big contrast in Piazza response for some of these courses towards the end of the course. I wouldn't comment too much on DL and RL here, but the response from students in NLP's Piazza was overwhelmingly positive and encouraging. You can almost see everyone agreeing that they've truly learned from the course and some of them even become interested to continue pursuing this path.
The overall effort that the teaching team (TA+professor) puts into the course is obvious. In terms of programming assignments, they are challenging (yet manageable) as compared to other courses I've taken. There's also great design in terms of making the models accessible (NLP is famous for large language models that most people don't have access to/can't afford to run), and in most assignments you can really get away with using just CPU. The final project, while benefits from using GPU, also allows weaker GPUs to be used (I used my old 1080Ti) and it was more than sufficient. This wouldn't be possible if the instructors didn't put effort to scope the project - and they actually helped to narrow it down to one of the best performing lightweight model at the time of writing. They actually also revamped some of the assignments this semester to make it more relevant in light of recent developments in NLP. I can assure you of how annoying it can be to take other courses that recycle old materials blindly. In the end, I think what really matters is whether the team (professor + TAs) actually put effort into developing the course, in the case of NLP, they've done more than expected.
The graded homework questions in EDX are mostly giveaway questions since you have a lot of attempts to get them correct, but I find them generally useful as checkpoints to see if we truly understand the material.
There was also a midterm for this semester. The effort put in to ensure that everything goes smoothly was also super encouraging. There was even materials prepared prior to exam to get everyone in sync of the questions to be expected. Overall material was challenging yet motivating enough as long as you've prepared for it. Generally the grading is fair - you get points even if you're wrong in the absolute answers as long as you show that you understand the concepts. Read the review about RL and you understand how different things can be.
The final project is around a relevant topic and offers two different paths to choose from. There's sufficient time for us to explore what we want to do (I think it was a month's time?), we can choose to do solo or pair up. There was also peer review, but I'm glad that the instructors are the ones who decide on the final grade (in contrast to courses who just use student's peer review feedback directly).
Overall, I find it rare that there's an online course that's so well-crafted. There are online courses that will inevitably give you the impression that they're trying to milk with minimal effort using some old content, but this course is by far the opposite of that. I just wanted to say that Prof. Durrett and his team has really done so well for this course that I'm glad I took it in my first semester, and this makes me look forward to other courses. DL imo is also well done, and I'll write in another feedback. RL pales in comparison, unfortunately, in terms of how well prepared the course materials are. I've similarly written a detailed review for RL.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (1.4 / 5):
Workload: 10 hours/week
Pros:
1. Relatively easy class
2. FANTASTIC lectures
3. Very involved teacher / TAs
Cons:
1.
2.
3.
Detailed Review:
I don't have a negative thing to say about this course. To be fair, I am only partway through the semester, but this class has been so fantastic so far that I needed to leave a review. I wouldn't be surprised if this course turned out to be my favorite of all classes in this program.
So, just to get it out of the way, this class is relatively easy compared to the other courses in this program. I wouldn't be surprised if it turns out to be the easiest of all the classes. BUT, completely ignoring that, it is also a perfectly taught class. The teacher, Professor Wilke, had a hand in designing / improving ggplot2 and so he is an expert in the material he is teaching. The class is formatted in this way:
Each week, you get lectures. The lectures are usually split into a couple different parts (first, a theoretical discussion on why we use certain visualizations, ideal situations to use them in, etc and then secondly, an in-depth look at the code to create the visualizations). The teacher also provides all lecture material in powerpoint slides.
Each week, if you feel the lectures were not enough for you to grasp the material, the teacher also has provided interactive R workbooks for you to practice writing the code yourself.
Each week or every other week, there is usually an assignment of some sort (homework or projects). Homeworks are smaller and take up 17% of the grade while projects are a bit more involved and take 67% of the grade. The remaining portion of the grade is based off participation (literally just commenting / posting / replying on Piazza). In order to receive your grade for your assignment, you do have to complete peer reviews (usually 3 or 4 per assignment).
The assignments are all directly related to the material taught in the previous / current week, so the class feels very cohesive.
This class should be an easy A for anyone who takes it, but it's not just that the material is easier than the average course in the program. It's also just taught by a teacher who clearly wants you to succeed and he has provided all the resources you'll ever need to do well.
The only complaint I have seen about this class is from other students regarding the participation points. In my opinion, these are basically free points since all you have to do is make 5 interactions on piazza (posts, questions, comments, replies to other people, etc) and get a single one of your interactions endorsed by the teacher or TAs (and they are very liberal with endorsing things). I don't mind this process, it's pretty brainless and doesn't take long to do it. But other students have fretted over feeling like they have nothing to post, so they feel pressured to make up a dumb post just to get the points. A downside to this is that there ARE a lot of pointless piazza posts, so you do have to wade through piazza to find what you're looking for sometimes.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (2.1 / 5):
Workload: 5 hours/week
This was my first class in the program and I really enjoyed it. I thought the professor was great and he made the subject interesting and approachable. Homework assignments were challenging, but not overly difficult or frustrating to figure out. I used Google Colab, which took some getting used to, but overall it worked well and sped up my model training.
I don't know if they'll do this every semester, but they released all the homework assignments and lecture content/quizzes at the beginning of the semester. This allowed us to take the course at our own speed, some people finished really quickly, I'm sure some will wait until the last possible day. I wish I would have known they were going to do this ahead of time, because I would have taken another class along with this one.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (3.6 / 5):
Workload: 10 hours/week
Pros:
1. Topics are recent and very relevant to the industry
2. Good balance between high level lecture content and in depth programming assignments
3. Professor articulates content well
Cons:
1. Disconnect between lectures and programming assignments can make the programming pieces difficult to tackle, especially if you are not strong in C
2. Projects are done in groups, can be good or bad depending on how you feel about that
3.
Detailed Review:
Overall this was an amazing class, perhaps one of my favorite ones in the program. The topics are really relevant and can easily be applicable to full time jobs. I liked the lectures the most, they are high level and easy to grasp. Programming assignments were a bit difficult because the lectures don't actually help you much with the assignments, but if you are willing to set aside time for them and have a good group to work with then it shouldn't be an issue. I also recommend taking the Advanced OS class taught by the same professor prior to taking this course. That course provided good background knowledge that can help with this course as well.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (2.9 / 5):
Workload: 5 hours/week
Pros:
1. Lots and lots of practical code written, Kotlin is an amazing language that's worth learning
2. Funny, interesting lectures and novel flipped classrooms
3. Responsive and helpful TAs and classmates
Cons:
1. The Android SDK (Software Development Kit) is pretty garbage and keeps changing
2. Since there's so much code/so many assignments, there's pretty frequent bugs
3. Some of the projects and FCs are much harder than others
Detailed Review:
I really enjoyed this class and would recommend it to anyone who wants to be a really good Software Engineer.
It'll give you practice working with some cool, bite-sized problems through the Flipped Classrooms; it then expands out to larger efforts via the projects.
You'll work with some really bad spaghetti code but also get to refactor and improve it to make it make sense. You're working with a constantly changing framework (Android SDK) that has a LOT of critiques but is slowly getting better.
Most importantly, it's truly just a lot of code that you get to write; lots of practice. Well worth it, if you're a strong engineer! No other class gives you this much volume and reps.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (2.9 / 5):
Workload: 14 hours/week
Pros:
1. The course provides an in-depth exploration of Large Language Models (LLMs), Low-Rank Adaptation (LoRA), and Vision Transformers through application-based projects.
2. Professor Krahenbuhl provides a significant amount of boilerplate code. This allows you to focus on the underlying logic and architecture rather than basic syntax or debugging.
3. The pace is manageable, and materials are provided early, which is perfect for those who prefer to work ahead.
Cons:
1. Access to a modern Graphics Processing Unit (GPU) or a subscription to Google Colab Pro is essential. The long project run times are significant, though they would reflect real-world engineering scenarios.
2.
3.
Detailed Review:
If you have completed the introductory Deep Learning course, this is the ideal follow-up. While the "Advanced" designation may seem intimidating, the actual workload is very reasonable. Professor Krahenbuhl excels at translating complex research papers into digestible short lectures and straightforward coding assignments.
The curriculum covers critical areas such as memory efficiency, generative models, Large Language Models, and Computer Vision. A major highlight is that the assignments include substantial boilerplate code. This means you are not building these massive models from the beginning; instead, you focus on fine-tuning and understanding the architecture.
It is important not to underestimate the hardware requirements. If you are using a Mac or an older computer, it is advisable to pay for Google Colab Pro. The training processes for the later assignments are intensive, and attempting to complete them on underpowered hardware near the deadline will be difficult.
Overall, this was one of the most rewarding courses in the program. It successfully bridges the gap between academic theory and the practical tools currently used in the industry. If you have the opportunity to take this course with Professor Krahenbuhl, I highly recommend it.