Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (2.1 / 5):
Workload: 10 hours/week
Pros:
1. Fun assignments
2. Interesting Lectures
3. Helpful TA's
4. You always know your grades before you submit.
Cons:
1. If you don't know Pytorch I could see this class moving quick.
2.
3.
Detailed Review:
This was a great course. All your grades are known before you submit the assignment (except on the final project) and it is easy enough to get an A if you put in the work. I would strongly suggest you take DL before this course though. Not knowing Pytorch could easily add 5-10 hours per assignment. I loved the assignments and found them quite interesting. The final project is nice because you can take it a lot of different directions. Just make sure you watch the lectures and schedule time to work on the homeworks and you will be good to go.
Overall Rating (5 / 5): ★★★★★
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (2.9 / 5):
Workload: 15 hours/week
It is an excellent class overall. Pytorch is the framework of use. Highly recommended to have ML background
a priori. The course kind of skips through the ML basics and assumes you can pick it up fast. The programming
assignments are super practical and useful if you find yourself working in this arena in the future. The final
project was quite entertaining and I loved what I ended up coding up. I learned quite a lot in this class. Note
that the class is focused on convolutional neural networks, and somewhat on reinforcement learning. It
only slightly touches on recurrent neural networks.
Overall Rating (5 / 5): ★★★★★
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (3.9 / 5):
Workload: 17 hours/week
Highly recommend this course. All the projects except for the first one are super fun and interesting. On weeks that projects are due, I definitely spent a lot more time. Professor Rossbach is very engaged with the students, and the TA was also very helpful. Workload can range from 14 to 20 hours
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 10 hours/week
Pros:
1. Interesting content that is well taught
2. Super helpful TAs + professors
3. Interesting projects
Cons:
1. Some of the starter code is constructed a little weird and can take some time to figure out how to use.
Detailed Review:
This class is generally well taught and has a bunch of interesting content. Your grade is only based on assignments and a edx quizzes that have unlimited attempts. The assignments are fairly interesting and straightforward, and the TAs were very helpful if people got stuck. Occasionally the starter code for the projects was a bit weirdly constructed, but it didn't take too long to figure out what was required. The final project was open-ended and took a fair bit of work, but it was nothing ridiculous. The professor lectured well and there were usually papers to read if you wanted to go more in-depth. I might recommend taking Deep Learning before this class as the knowledge of pytorch is helpful.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.1 / 5): ★★★★☆
Difficulty (1.4 / 5):
Workload: 8 hours/week
Pros:
1. The professor seems like a great guy. His lectures were enjoyable to watch. There *are* times where they're a little slow and he ends up repeating himself, but his personality makes up for it.
2. I would consider the assignments well thought out. The grading feedback showed the TAs were actually looking at the submission (i.e., no autograder) and the assignments were genuinely educational.
3. The independence granted to students for the final project is awesome. I enjoyed the peer review process.
Cons:
1. A *little* light on content at times. The course could dive into more details.
Detailed Review:
If you're interested in Android app development or if you're looking for a course that will give you the opportunity to design solutions independently, this is a great course.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (3.6 / 5):
Workload: 30 hours/week
Pros:
1. Learned a lot with no prior experience in NLP
2. Projects taught me a lot, TA's were very helpful.
3. It is engaging material and the papers are very relevant (mostly, some are quickly outdated).
Cons:
1. Some of the python libraries have a learning curve if you are new to them. I spent 40+ hours on some projects as a result.
2. The midterm felt kind of silly and there could have been better preparation materials provided.
3.
Detailed Review:
This was a fantastic introduction to the program. The professor was amazing, everything was explained very well. The lectures were engaging, the TA's were really good. I had no prior experience with NLP, and was able to pick up the necessary skills along the way. The notes are helpful as well. I would say to be sure you read the papers, as those have a lot of important information. Since I had no prior experience here, and my math was lacking, I did spend an inordinate amount of time some weeks on the projects. The class was project based. People had told me to take ALA first, but I didn't find that I needed it. I am actually taking ALA now, and I think it is harder than this class.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.1 / 5):
Workload: 10 hours/week
Detailed Review:
Stands for 2021 Fall. It is a very good learning experience. I don’t know why there are so many complaints and bad reviews. It is really not fair. At least my experience in here is pretty good. It is even easier and less work than ALA. But take ALA before will prepare you for this one.
Pros:
1. Professor Constantine is the best. He will hold 1 hour professor office hour through Zoom every Monday Afternoon. IT IS RECORDED. I never see any professor in this program will hold weekly OH theirselves.
2. Midterm 2 has RECORDED solution videos to let you fully understand the materials and some of the questions shows on the final as well. It helps me a lot in final.
3. If you have solid background in math. Easy course. No more than 10 hours needed for each week. The homework is straightforward, you can solve it directly by watching and understanding the lectures. It is good to combine with some time demanding course. I combine with NLP and work full time.
4. Two mid-term are just 1 hour and final is 2 hour. Midterm 12-15 questions. Final is 20 questions. Just multiple choices. Sometime you can just put in some special cases to verify each choice. No need to fully prove in math. So it is easier than the homework that you need to write a bunch of proofs.
5. Lectures: Constantine’s lecture has more details and some time give you some background review. Sujay’s lecture is short and straight forward, but it assume you know the background knowledge in LA and Optimization.
6: Grades: A great curve will be made in the end. As told by professor, 75% students got A and A-. One lowest homework is dropped. Just try to keep all HW full marks, so you can just don’t submit the last one and prepare for other course’s final.
Cons:
1: Less coding part. Almost pure math course. After learning gradient decent and more algorithms, then you need to implement it in python or any other languages you choose. But in some extend, you can understand gradient descent better in a math view.
2. MATH BACKGROUND NEEDED: please note that it is a grad level math course. If you are not comfortable with proofs and upper level math course, it will be hard for you. Take AlA before this will help. I assume all those bad reviews are coming from students are not good at math. Their expectation is this is a CS related course. But it is not. It is a grad level MATH course. So please be aware of that before taking.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 12 hours/week
Pros:
1. Revamped course structure and material to address new innovations in NLP
2. All graded material is well put together and expectations are clear
3. Several responsive and supportive TAs
Cons:
1. Ed, despite being much better than Piazza, is hard to navigate due to sheer number of posts.
Detailed Review:
I have a lot of respect for the professor and other teaching staff in this course for revamping it to be incredibly up-to-date to the current trends in NLP. Even though some of the lectures and assignments were new, everything went relatively smoothly in this course too, with any hiccups being promptly and clearly addressed by the teaching staff.
While not strictly required, I would highly recommend taking Deep Learning first or concurrently with this class as the assignments ramp up quite quickly in difficulty and adequate experience working with PyTorch and tensors is the first step to success on the assignments.
The lectures cover a plethora of topics in NLP, most of which unfortauntely does not show up in the assignments, but the professor provides several papers and other resources throughout the course to dive deeper into specific NLP domains on your own if you wish. Right now, the course is heavily focused on building up to the Transformer architecture and the GPTs that resulted from it, but I would not be surprised if in future semesters this class adapts and provides a more balanced curriculum.
Expectations for grading across all assignments in this class are as clear as possible. Questions on EdX are given effectively infinite tries and the assigments can be submitted as many times as needed through the autograder with full feedback on performance. The midterm, despite covering different material from previous semesters of this course, was pretty straightforward given the resources the course staff provided for studying. The final project, which is essentially a miniature open-ended research project had very thorough instructions, references, and support on Ed.
Overall, I felt that I learned a great deal in this class and it is definitely worth taking as one of the electives in this program if you want to get an introduction to the domain of NLP.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (5 / 5):
Workload: 22 hours/week
Pros:
1. A lot of practical work
2. You will be forced to learn or remember something you learned
3. Useful skills for all backgrounds
Cons:
1. A lot of work, so many times you focus more on the projects than on the lectures
2. Rubrics could not be too specific (debatable, read detailed review)
3.
Detailed Review:
I took this class because it was recommended by AOS teacher, and some classmates also recommended it, and I don't regret it, and yes, this class will consume a lot of time.
As usual for this class, here are my review/ tips for the projects:
1. Prefix sum: Try to stick to the tree-based data structure. I tried to use an array-based structure, but even if it works, performance will get poor as it scales (that's why it's important to use pointers in your trees), and performance is indeed part of the rubric. I would say that once you have the tree object, the other parts are easy, and try to find how to make a simple barrier, it should not be a complicated or a sofisticated one.
2. CUDA K-means: I have seen this project many times in my career. The hard part was organizing the arrays/matrices (since it's very different when you do it in R or Python rather than in C), and the rest should be 'easy', but it takes its time.
3. GO Tree comparison: Here it is debatable, because the final part can not be done (I don't know if the coarse part was fixed or replaced) but you need an specific hardware rig to run that, so ask first if it's needed (I spent like the half of the time trying to solve it only to check ED thread and see that it will not be considered), in the go documentation you have everything you need, but in my case I got 60 for the project an 0/40 for the report, only because I did not specified the other metrics requested. I asked for a revision, but the final decision was "try to stick to whatever the rubric asks for", so it was a bit frustrating. A final tip on this is that you can do it on your local machine, WSL, or whatever you want, but the rubric says that you should run on Codio, so try to run it there before turning it in to make sure the auto-grader works (usually is a problem with go version, so it is not a big deal).
4. Rust 2PC: Honesty, the most fun one, but at the same time, gave me a huge headache. Here is the tip, as someone typed in this page, try to look at the documentation of the one-shot server, there is a 'hidden' clue that solves the 60% percent of the difficulty of the project.
5. MPI Barnes Hut: Good project, I got stucked in the math part because I did a bad division, so check the formulas carefully, and yes this problem could be solved in the same way as the CUDA one, but the problem is the type of objects accepted by MPI, it only accepts some primitive types, so random seed could help, and yes you can try to modify the code to make MPI to accept trees, bt this could take much longer. The pro here is that you can do a good report and still have a 'fair' grade, but again, try ot stick to what they ask for. Finally, the visualization library did not work (at least I did not read any post confirming that) because you need some specific updates and fixes for it to work, so not many people put effort into that. If you want to see visuals, try to save snapshots in csv files and use other libraries like plotly in JS or Python or R to generate the videos, but again this is not the main focus of the project.
Finally, you can do almost everything on WSL, but CUDA can be done (in WSL as well if your machine has a graphics) or renting one in Vast.ai or other platform, it is not expensive (like $0.08/h for a good one) but the coding experience is much much better than codio and you can link VS code if you want.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 5.2 hours/week
Pros:
1. Professor Lin is witty, helpful and knows the perspective of his students
2. The conversation-like structure of the lectures is very helpful
3. The projects are engaging and meaningful
4. There was a generous curve
Cons:
1. The quizzes often felt too complex from the lecture info
2. The class essentially assumes you are familiar with Python (and Object-Oriented Programming)
DETAILED REVIEW
Pros:
I really enjoyed this class, in main part because of Professor Lin! Professor Lin is one of the best teachers in this program. He constantly slipped jokes into the lectures and explained the material very well. He writes on a chalk board, which helped him to slow down his teaching which I liked because it helped me to understand better (versus skipping through slides on a PowerPoint).
In the lectures, there is always a "student" present that Professor Lin talks with and asks questions to. The "student" also asks questions and makes clarifying comments. Having a student present helps to slow down the lectures and brings a unique learner perspective rather than just having the teacher present the material the whole time.
I felt the projects were fun and meaningful. Projects 1, 2, 3, and 6 all have some sort of "game" aspect to them, which makes them more engaging. In general, most of the framework for the projects is already in place, so you don't have to start from scratch, which is very nice. You simply have to build upon the framework to get the desired functionality (using various data structures and algorithms).
There was a generous curve at the end of the class. The final cutoff for an A was an 83 and the final cutoff to pass the class (with a B-) was 55. The need for a generous curve also means that the class was difficult for many students, but having a curve in general was nice.
Cons:
There are 6 quizzes in the class and they often felt too detailed. For me personally, I did far worse on the quizzes than the projects, and I usually got marked down because I missed minute details. Often I feel like the quiz questions couldn't be answered explicitly from the material in the lectures, which was frustrating.
The first week of the class has a few lessons on programming in Python, but there isn't any formal lecture or training on Python or OOP. For me, this wasn't much of an issue because I had done OOP in Python before, but I put it here as a con because other students might not have that experience. I would highly suggest taking an intro online course on Python or OOP before taking this class. If you don't have that experience prior to this class, you'll find that you will end up doing that work during this class.
FAVORITE QUOTES FROM THE CLASS
"Elegance is not a dispensable luxury but a factor that decides between success and failure." -- Edgar Dijkstra
“If you have a long, skinny tree in the forest, can anybody really hear it? Well, no.” — Witty Professor Lin