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.
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 (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 (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 (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 (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.