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
Overall Rating (5 / 5): ★★★★★
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (4.3 / 5):
Workload: 30 hours/week
I took Automated Logical Reasoning in Spring 2024. It was extremely challenging, but also my favorite course I've taken. The quizzes and programming assignments were exceptionally interesting and useful exercises for any aspiring computer scientist.
While the weekly quizzes were challenging, they were all untimed. And there were no exams. On average I spent about 25-30 hours/week on the class and barely got an A, but I think most students could get a B with half the effort.
Breakdown of time spent on the 3 programs:
Program 1 (CDCL SAT Solver): 100 hours
Program 2 (Congruence Closure): 25 hours
Program 3 (Code Verification with Dafny): 25 hours
Obviously Program 1 was painful, but worth it. I scrapped 90% of what I had written twice. A lot of the theory didn't click until I had spent dozens of hours trying to implement it. Everyone else seemed to have spent between 80 and 100 hours on it as well. Programs 2 and 3 were non-trivial but a breeze comparatively. Give it all you've got to understand and implement Program 1, and you'll be fine!
Note: Of the 2 optional texts, Decision Procedures is a must-have for the first part of the course.
Lastly, the TAs (Shashin and Sara) were very helpful in office hours and beyond gracious with grading:
- The lower quiz score was dropped
- They provided an opportunity for extra credit by contributing to forum discussions
- Deadlines were frequently extended at the request of students
- Students who did poorly on the first 2 programs had a chance to resubmit late for additional partial credit
Of course they didn't have to do any of this, but it was appreciated.
I highly recommend the course.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (2.1 / 5):
Workload: 6 hours/week
Pros:
1. Engaging instructor videos. Sometimes drops by Ed Discussion, although TAs are primarily in charge of that (TAs are engaging too).
2. Good intro to R and the R ecosystem. Updated content.
3. Excellent overview of basic data science principles as well
Cons:
1. May not be the best course for you if you are a veteran practitioner in data science already. May feel like undergrad level.
2. Likewise, if you took Data Viz, and then take this one too, you may not necessarily be maximizing the benefits out of your MSDS program.
3.
Detailed Review:
Refer to list of pros and cons. In addition, Prof. Peng has a good textbook related to the field and course, though it's not necessarily needed for the entire course.
The material is designed around the types of analysis and questions you can answer with data science. Afterwards, tasks like data viz, data wrangling are also covered (can be somewhat redundant with the data viz course). Workload is reasonable and straightforward, although at least 2 out of 4 projects may take a bit more time.
In addition, there's also pretty up-to-date in terms of the R ecosystem, teaching Quarto and making you use it, instead of just R markdown, for example.
Overall Rating (5 / 5): ★★★★★
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.1 / 5):
Workload: 3 hours/week
Pros:
1. The code is provided in R format. However, you can adjust as needed. I also use Python to double-check at times.
Code is not evaluated; it is used to obtain results.
2. 6 HW throughout the semester + two exams
3. The professor provides interesting anecdotal and empirical examples of the analysis's application and makes an effort to translate statistical methods into meaningful mathematical and practical applications.
I liked the professor's lectures, I enjoyed doing HW in R, it's nothing too crazy, datasets are clean and given.n
Cons:
1. The math part in the beginning was intimidating, I thought I had two probability courses at once :) However, ultimately, for HW, you need all the proofs and calculus. R/Python if you wish
2. The course is both easy and complex at the same time; it is recommended after a probability course, but can be taken separately.
3. Solutions are not published; you need to attend OH. We discussed results after grades are published in a group, and I have adjusted the code if the answer was incorrect.
However, if you need accurate answers, you will either need to attend OH or join a study group and discuss them afterward.
The midterm exam wasn't actually like homework. While homework would take me 1-2 hours, the midterm took me 8 hours, yes I did recheck some parts of it, and had issues, there is no way reverse engeener and check the answers so you have to know what you are doing, my way is to use pythin/collab at times to check if I am getting the same results.
On the good side, they are not time-bound. But exams have only a 48-hour window.
Together with the Data Viz course - my fav elective so far: interesting, practical, time manageable.
Overall Rating (5 / 5): ★★★★★
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (4.3 / 5):
Workload: 6 hours/week
1. First of all, what is your purpose of learning MSDSO? Is it to acquire knowledge, or to get a master's degree, or to get an A? I think many people have the first two goals, but they end up complaining about a little score.
2. This course does have some technical problems. For example, you can only click submit once during the final exam, which makes it impossible to modify the answers. This has caused a lot of pressure for many people. I am one of them. For example, even if the final exam is approaching, there is no way to discuss HW issues in piazza, which makes it impossible for everyone to exchange learning experience. However, note that on the one hand these issues will be resolved in the future, and there is no absolutely perfect course. On the other hand, this does not affect you to learn RL through other methods, and pass the exam to get a master's degree. So, don't feel bad about some minor issues.
3. Give some suggestions on learning:
1) Submit the Reading Response on time, and don't lose points for late submission. By the end of the semester you will find that every point counts.
2) Complete HW and projects ahead of schedule. Don't procrastinate until the last day just because the deadline is at the end of the term, you will definitely miss a lot of marks in a hurry.
3) The final exam is similar to the usual HW, do the HW twice more, especially the calculation questions.
4) After reading the book, it is recommended to watch David Silver's video lessons to help sort out the knowledge points. This is very useful.
Finally, ask yourself again what is the purpose of my coming to MSDSO? Then focus on your original purpose.