B4Rg+t5El3svbUx4Dnp1Nw==summer 2025
Taken in Fall 2025, not Summer
I enjoyed this class a lot, and would definitely recommend it!
Lectures: Professor Riedl does a great job explaining topics in the NLP space. Of all the classes I've taken in OMSCS, this class has far and away the best lectures. I'm only talking about the first half of the class, because the Meta AI ones that don't come from the professor are not good for the most part (they mostly just read from the slides). The task-oriented dialogue and question-answering modules in particular were brutal. I would replay some of the Meta AI videos several times and still not understand what was being said. Professor Riedl informed us that he plans to record those lectures in the future when he has the time/resources which will make the class that much better.
Textbook: The class uses "Natural Language Processing" by Jacob Eisenstein (2018). I would guess most people ignore the readings, because they are not really required (like for exams and stuff). I did do the readings, but will admit that certain sections were harder to understand compared to Riedl's lectures. Still, there's some interesting material in the textbook. It goes a bit further on some of the concepts if you're interested in the domain.
Quizzes: I agree with the post below. They are not too hard. Generally, most weeks there will be a 2-4 question quiz on the module. You have to go through the honorlock system each time which is a bit annoying but not the worst thing in the world. Like in other OMSCS classes, my main tip is for the multiple selection questions do not choose options that you are not relatively confident about because your score for the question gets subtracted for incorrectly chosen options.
Assignments: The assignments are all in Python notebooks, so you can run it in Jupyter or Colab. You should not have to spend a ton of time to get full points on the majority of the assignments. There are small asks like implementing a neural network via PyTorch's nn.module (the constructor and forward functions) and tuning the model by playing around with the batch and embedding sizes. Due to Gradescope, all cells for each assignment should run within 30 minutes or so. They also provide the test cases so you can compare your output versus what is expected to determine what part of your code is off. I will note for assignment 3B (at least for this semester) you have to implement an attention-based architecture that will only work if you follow the steps outlined in the Attention lecture. It felt rewarding after I figured that out. Occasionally, I ran into issues importing/installing packages but often a restart resolved those problems.
Final/Mini Project: The final homework (HW5) is a more open-ended mini project. You get three weeks for it, as opposed to two for most of the other assignments. It's a cool concept in that you really get to decide how you want to do the preprocessing (i.e. glove embeddings, tokenization) to improve model accuracy. You also get to implement the training/test loops unlike the previous assignments (I honestly think this should be done for the earlier assignments too, but in those everything is done for you). The recitation video for the assignment posted on Ed Discussion helps point you in the correct direction (they have a video for each assignment), although the pseudocode is not 100% correct and you have to tweak things. It is important to point out that you are not graded on model accuracy, but rather your ability to articulate your decision-making processes and why you implemented your architecture a certain way. My main issue with the final project was that I was running in Colab and kept getting kicked off the GPU towards the end after a couple hours and would not regain access for another day. It is impossible to finish this assignment using CPU alone. Hopefully, the class provides Colab Pro licenses for students at the beginning in the future to avoid issues like this. I ultimately had to switch to Jupyter otherwise I wouldn't have finished. On the plus side, they grade the assignment fairly leniently.
Exams: The exams are a bit tricky, partly due to the fact that they aren't out of a ton of points. I would say the midterm is more based off the lectures, but the final was a bit different and open-ended. The exams mostly have short answer questions. I think most can be answered in a couple sentences. For the final, we were asked things like how we would develop a dataset for various scenarios, and how we would design the architecture of the actual model. Don't stress too much about the formulas. There will be a question or two on calculating tf-idf, rouge, and bleu scores but as long as it's in your notes you'll be fine. I ended up needing the entire time for both the midterm and final, but I also probably wrote a lot more for each response than what was required.
Other thoughts: Due to the fact that the final project and final exam had to be manually graded, the TAs unsurprisingly did not have enough time to go through them with a close eye for each of the 750 students taking the class this semester. I would not be surprised if they change things next semester to make things more manageable. Since grades were due shortly after the final exam, students could not request regrades and I'm sure that angered some that were borderline between letter grades.
Overall: If you get 100s on most of the assignments (not hard to do) and do well on the quizzes, you don't have to stress as much about the exam grades and should get an A. There was not really a curve at the end of the class, but the professor added 0.61% to each student (he added 0.5% to each student's grade, and we were also given half a point back on quiz 4 because honorlock wasn't configured properly at the beginning when the quiz was released). That should be more than enough to get you to an A. Like the student below, I was like a few hundredths of a percent under the 90% before the rounding and finished with an A.
Rating: 5 / 5Difficulty: 3 / 5Workload: 10 hours / week