Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 12 hours/week
I will try to give as straight a review as I possibly can.
Pros:
1. Good start to the program; lots of detailed information on how to use the edX platform.
2. Lots of very interesting math in the probability section
3. The statistics section teaches some *very* powerful modern techniques right away, such as bootstrapping, which are so powerful they almost make the older theoretical methods seem irrelevant (but it teaches those as well)
4. The statistics section cleverly - maybe inadvertently? - takes you on a tour of just how easy it is to screw up p-value calculations, in subtle ways that you'd never be able to see before taking this course. It is crazy how rounding things to three vs four decimal places can change evaluations of statistical significance
5. The teachers are very knowledgeable on both the history and theory of the topic
Cons:
1. Some of the probability theory proofs weren't that well explained; they often involve just staring at some problem with infinite series until the magic trick to solve it pops into your head
2. I would have preferred the class be built around Python or R rather than the StatKey software, although the latter was a useful pedagogical tool
3. The class focuses exclusively on frequentist statistics. I would have been much happier if some Bayesian stuff had been thrown in there. In general, the statistics professor seems like she is very knowledgeable about some very deep mathematical statistics but was required to keep some of it fairly lightweight for this course.
Detailed review of pros:
I thought this was a good start to the program; it had lots of detailed information on how to use the edX platform, the discussion forums, etc. There are lots of quirks to the edX platform: for instance, if you're in the US, and if a HW is due on some day, it's typically due at 6 AM on that day for the benefit of people in e.g. India, so it's really due the night before. The course explains all of these and other snags in detail. In general it seems built to be the first class you take in the program.
There is lots and lots of very interesting math in the probability section: Markov's inequality, Jensen's inequality, Chernoff bounds, convolutions, etc. Most of this was review for me but I still learned a lot of new and interesting things. Lots of famous problems in standard probability theory are discussed. It was good to patch up my (somewhat non-standard) way of having learned things in the past. People who enjoy math will enjoy this class.
The statistics section deep dives into powerful modern simulation-based techniques such as bootstrapping, and provides a strong foundation on making sure that results are built with proper numerical precision, clearly showing many pitfalls that can happen with rounding errors and etc. The professor has a very good perspective on the central issues with using p-values and etc and how to use them properly (and how they can be often improperly misused). On some level, the central lesson I got from this part of the course is just how easy it is to inadvertently screw up p-value calculations. It is almost incredible, in fact, just how many ways there are to screw this kind of thing up. There were situations where rounding things to three or four decimal places totally changed statistical significance results; situations where adjusting the value of the null hypothesis by 0.001 changed statistical significance results; situations where internal precision errors in the software to *six* decimal places changed statistical significance results. The professor doesn't really hide her distaste for the typical state of just using p < 0.05 as the cutoff for determining if some statistical result is "significant" and after this class it is very clear why.
In general, if you've always been mystified by the talk about p-values and the complexities thereof, this class will clear all of that up for you.
Detailed review of cons:
I thought some of the proofs and derivations in the probability section weren't that well explained. Some of the proofs involve doing long algebraic manipulations with infinite series, some of which seemed difficult to grasp for me. In general, many times these proofs often involve some magic, nonobvious trick that makes it all work out. On the other hand, the problems you are being asked to prove are often very famous, classical probability theory problems, so it is good to get some knowledge of them. You would do well to have some background in real analysis (although if you don't, you'll still probably get by alright).
I would be much happier if the StatKey software that we use were replaced by something standard like, let's say, R, or SciPy in Python, etc. We spent *a ton* of time in the statistics section just learning to use this software. And, worst of all, the software has lots of bizarre "quirks": computing confidence intervals, doing hypothesis tests, etc often involve sequentially clicking several unlabeled buttons such that if you screw one thing up, the entire result is wrong. When doing multiple simulations, some parts of the interface reset, but not others, and you have to remember things like this. This part of the class is basically an exercise in seeing if you can follow directions when using a very poorly-labeled interface and keep all of that stuff in your head correctly and not screw it up - which apparently I can't very well - so the only way I was able to pass this part of class was to end up basically rebuilding all of the functionality myself in Python anyway, just as a way to "sanity-check" my results. However, even this wasn't a perfect solution, as StatKey has some internal precision quirks that often cause things to be rounded incorrectly to three decimal places, and they grade on the StatKey value, not the true value.
However, I would push back on this really being a "con" as it ends up being one of the most important lessons you learn in the entire program. Some of the "problems" are not just problems with the StatKey software, but with the entire p-value procedure. It is *so* easy to get the wrong value for a statistical significance result (!) - making something significant that would be insignificant - because you put "0.33" rather than "0.333333333333..." = 1/3 for the null hypothesis and had a relatively large sample. There were situations where rounding things to three rather than four decimal places changed statistical significance results. The class somewhat-but-not-so-subtly guides you to these realizations by actually walking you through all of the things that can go wrong when you compute stuff. I'm not sure if this was the intended result, but after taking the class I am not surprised at all that there is a "replication crisis" in scientific research publications.
The last criticism I have of this class is that it takes a 100% frequentist-based view of things. They really wanted you to get up to speed on the basics of confidence intervals, hypothesis testing, etc, which are standard in most statistical publications and scientific research, as well as modern simulation-based methods for doing these things. The older frequentist methods took a very narrow view of what is possible at times, whereas the modern Bayesian methods are much more powerful and standard in machine learning. The teacher is clearly quite knowledgeable about all forms of mathematical and Bayesian statistics and left a few clues for us who are interested, but mostly stuck to frequentist methods.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (2.9 / 5):
Workload: 16 hours/week
Pros:
1. Engaging homework.
2. Well-presented material.
3. Good support through Piazza.
Cons:
1. Time-consuming final project.
2. Shortened deadlines for summer semester.
3. Randomness of homework grading.
Detailed Review:
From other reviews, going in, I knew that the summer schedule was going to be tight. After the first assignment, every subsequent homework only had a single week to be worked on. I finished my first two assignments early, but even with that I was still having a difficult time keeping up after the third assignment. That's not to say that the homework wasn't interesting; each one had me implementing a deep learning model to solve a particular task; like object detection or image classification.
I felt that the grading was somewhat random; since it was mostly based on how your deep learning model performed on the grader's dataset. There were a wide variety of factors that could determine whether your model performed well or not, all of which are gone into in the course's material. But I feel like luck partially can influence on whether these factors are set to create a good model or not. It's a lot of trial and error, which can be time-consuming. If you did get a good performing model on your local grader, then you would usually expect between 95 to 100% on the homework's online grader, depending on chance. These issue probably reflect the real world applications of deep learning though, so it's more something to look out for than an actual negative for the course itself.
These issues also affect the final project, which consists of a large portion of your grade. For the final project, your model is put up in a competition against a videogame AI. If your model doesn't do well, then you can still get some credit by competing against other students. Again, there was some randomness in this since you didn't know how the game's AI would react and you didn't know how well other students did on their final project.
During the semester I took this course, the final project's grader had issues due to the amount of students. When tweaking the grader, some practice competitions were messed up causing the student models to perform better against the game's AI than it was meant to. This was resolved by having the grade be based on the model's best performance over all of the practice competitions against the AI. The way that the instructors and TAs handled this issue was satisfactory and hopefully are applied in future semesters, since it greatly reduced the effect of randomness on the final grade.
Speaking of the instructors and TAs, they were quite active on Piazza. For most issues, they would be answered within a day of posting and would usually give good advice. Office hours were also held, but I never needed to attend them.
The actual course material was also good, with the instructor going in-depth into deep learning topics. There were also quizzes that would test your understanding throughout. Knowledge of linear algebra and probability theory would be useful. Code examples would also be given in some lectures, showing how to actually implement the class material. These code examples were super helpful for the first few homework assignments.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (5 / 5):
Workload: 20 hours/week
Pros:
1. Really get your hands dirty with implementing algorithms in python
2. Assignments are quite interesting.
3. TAs are quite helpful
Cons:
1. Takes a lot of time
2. Homeworks are unequally graded. Know this. Not all HWs carry equal weight.
3. Collaboration is not allowed in the later part of the course.
Detailed Review:
Overall quite stressful but important course. Gets you prepared for python programming and hels you understand important algorithms used in practice. Necessary to do an algorithms course at least once in your life.
I was taking ML and DSA at the same time with a full-time job so I lost some hair in Fall 2023. Jokes aside, this ended taking about 20 hours per week on average for me and I do a programming job which involves me spending about 40% time writing code although C/C++. Find good homework partners for at least the first few homeworks where collaboration is allowed, this will help your understanding and also make you feel less alone as you go through the ordeal.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (4.3 / 5):
Workload: 15 hours/week
Pros:
1. Rigorous intro to underlying concepts of quantum information, learning from one of the leading figures in the field
2. TAs are highly responsive and good at breaking down lecture concepts
3. I feel I know enough to begin understanding recent literature in the QIS space
Cons:
1. [Arguable] Homeworks are proof-heavy and can consume quite a few hours; they tend to be extensions of the lecture material as opposed to repetitions of what we covered in class
2. Grading can be stingy. Borderline scores weren't bumped up to the next grade
3. Midterm and final exams are long: 3-4 hours of multiple choice and short-answer questions
Detailed Review:
Overall, I think this is one of the best electives in the MSCSO program despite being a new course offering (Spring 2022). Prof. Aaronson was not active in day-to-day course management during the semester, but his lecture videos and notes were concise and easy to follow.
The homeworks (30% of grade) were challenging. From a learning perspective, I found this to be a good thing because the proof and algorithm questions helped reinforce what we covered in class; I have a better grasp of the "edges and borders" of the problems and theorems we went through because of these assignments. Prepare to spend up to 10-12 hours per week on them though, while also attending office hours / sleuthing on Piazza.
The greatest point of contention in this class was the grade distribution. Our midterm average and median were squarely in the 'C' range, and a vocal portion of students (I assume to be a minority) insisted on having the class curved -- this was not guaranteed in the originally syllabus FWIW. It's true that the grade outcomes were lower than for a typical MSCSO course, but the course itself had already been adapted from the undergraduate version (and with more lecture chapters omitted). Although I would've benefited from even a 0.5% bump, I could respect the prof's decision on a no-curve because one would expect graduate students to be held to a higher bar.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (5 / 5): ★★★★★
Difficulty (4.3 / 5):
Workload: 20 hours/week
Pros:
1. Lectures are really interesting
2. Piazza is extremely active
3. Quizzes and projects are very hard, but in a way that teaches you a lot
Cons:
1. Quizzes were short, and sometimes worded strangely, so one bad question can throw you off
2. There was a lack of transparency on the grading curve (like most classes to be fair)
3. Projects took a long time to get graded
Detailed Review:
This class is going to get revamped after this semester, so this review won't be too helpful, but I did want to say Professor Lin taught me a ton of information in a short amount of time. The class was very hard, and the ambiguity of my grade was sometimes frustrating, but I learned a LOT in this class.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 12.5 hours/week
Pros:
1. Learn a good variety of fundamental data structures
2. Generous grading curve
3. Plenty of hands-on practical coding experience in Python
Cons:
1. Assignments ramp up in difficulty considerably for the last 3 of 6 assignments
2. Quizzes can be tricky and have very vague questions/obscure wording
3.
Detailed Review:
Disclaimer: I come from a bioinformatics background with about 3 years of proper programming experience in Python, mostly self-taught with one semester of bioinformatics-based coursework in Python.
This class was my favorite of the program so far, having also taken Probability, Regression, and Design Principles. The content is very engaging and I think that the topics covered are directly applicable to data scientists.
Assignments: There are 6 assignments. The first 3 are quite straightforward with the last 3 being worth the most and more challenging. There is a large emphasis on efficient code which is made evident with one project where your code will not submit if it doesn't meet a certain efficiency/time requirement. While this can be frustrating, it is quite useful to actually teach how to write effective code and review different design decisions i.e. amount of recursive function calls, etc.
Assignments are graded with an auto-grader and some starter test cases are provided. These are useful as a starting point, but students should be sure to exhaust their own test cases to make sure that code runs properly. A big emphasis in the class is learning how to test code creatively and independently.
Quizzes: These were frustrating as they were all theoretical from the lectures. Grades varied widely on these with some quizzes being very tricky and the class average just barely above 50%. Luckily for me, I did much better on the assignments than the quizzes, and with quizzes being worth only 30% of the total, you can still do quite well even if you mess up some of the quizzes.
Piazza & Professor: The lectures were done very well with a mock student-prof interaction on the blackboard. I was a big fan of this approach. Additionally, the level of TA support in this class was the best so far.
Other thoughts:
You will definitely need some real practical programming experience in Python to find this class manageable. I would suggest at least 1 year of informal Python programming, and familiarity with Python functions & classes. If you have never programmed in Python before, you will likely find this class VERY challenging.
Great course, but you have to work ahead and spend a lot of time to get value from it
Fall 2021CS 394D · Deep Learning
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 25 hours/week
General advice first:
- Buy Colab Pro, it's $10/month and eliminates a lot of frustration -- unless you have a CUDA-capable GPU, in which case you're already set.
- Start early and submit HW1 & HW2 early. You need to be ahead of schedule if you want to have enough time for the much more difficult HW3 and HW4.
- Do quizzes in-order; it's tempting to leave some for later, but you'll learn more if you get them done as scheduled.
Pros:
1. The lectures are not only interesting and well-taught, they are very up-to-date, which is critical for a field that seemingly exploded in popularity around 2011 and really hasn't found the limits of what is possible yet.
2. Bias/ethics lectures: I'm really glad the professor included lectures in the end about bias and ethics of this field; it's important for students to understand that with impactful work comes the risk of impacting humanity in a negative way. We should all understand our responsibility to society and not just build whatever makes the most money for our employers. And maybe we should also consider our potential employers' track record before signing the offer in the first place. Are they really making the world a better place?
3. The homeworks are well-structured, but they escalate in difficulty rapidly. Don't assume that because you did well on HW1 and HW2 that you're going to need the same time for HW3-4; they're brutal.
Cons:
1. Final project: The time allowed in the official schedule for the final project is nowhere near enough. You need to start on this about a month before the deadline in order to try out enough ideas to put something together that works well. We had 3 weeks, and the best state agent wasn't released until maybe a week before the deadline.
2. Pacing: DO NOT FOLLOW THE OFFICIAL SCHEDULE. You have to work ahead in this class; one of the TAs even said so near the end of the course. You get about 3 weeks for the first 2 homeworks -- you shouldn't need that much time. You get only 2 weeks for the last 3 -- you will need more. The only solution is to START EARLY and FINISH EARLY, at least until you've finished HW4. HW5 is a little bit easier, although getting great performance out of it nets you extra credit in a tournament, so it doesn't hurt to polish it with a little extra training.
3. Cheating policy: No, I don't think other students cheated. Instead, I'm unhappy that the policy was so strict about not communicating with other students. I have always learned best by asking questions and answering those of other students, in an open way. I tried to set up a monthly in-person get-together in Austin for students, where we could discuss and whiteboard general ideas about homeworks and the project. However, I was told that no communication between students on the homeworks is allowed, per the cheating policy. I can somewhat understand why, but I really wish there was a way for them to design the work in such a way that, as long as no code is shared, students could freely discuss what worked for them, to reduce the amount of trial and error required. This trial and error is especially frustrating when training has to be done on Colab, which can time users out, and requires re-installing PySuperTuxKart each time you reset the runtime.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (3.9 / 5):
Workload: 15 hours/week
Pros:
1. well organized lectures and materials
2. active support from TA's
3. interesting assignments
Cons:
1. Difficult at times
2.
3.
Detailed Review:
I took NLP in my first semester of starting the program. I have a background in engineering, not CS, but did a fair amount of preparation beforehand. Even then, I experienced a steep learning curve at the beginning of the course. If you are in a similar situation be prepared to catch up on: numerical methods, statistics and coding in python.
Initially, I was unfamiliar with the code framework and had a mini freak-out and thought I would have to drop the course. But, put in the time and you will eventually get through :). I found the Piazza support to be active and helpful, as well as TA office hours (if you came prepared).
The best part of this course was the organization of lectures and assignments. With course material, you truly get exposed to state-of-the-art concepts and the lectures even include references to a bunch of recent papers if you enjoy exploring academically.
The 5 assignments are well thought out and will challenge you. I recommend starting them earlier than later to leave ample time for de-bugging and hyperparameter tuning. Grading is done online instantly, so that's nice.
Assignment (Hours Required for a non-CS background person)
1 (15) - (had to learn Python)
2 (10)
3 (20) -- difficult
4 (15)
5 (25) -- difficult
If I had to improve the course, I would have liked additional assignments that were more "fun" and less theory heavy. Like, just show me some cool stuff.
Overall - great course but be prepared to work if its your 1st semester
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 10 hours/week
Pros:
1. Develops a "scientific literacy" needed to interpret causal results in the real world.
2. Covers a variety of foundational and modern writings on causal inference.
3. Solid textbook, pretty good lectures.
Cons:
1. Assessments
2. Peer grading
3.
Detailed Review:
This course was probably the most divisive in the program, but personally I loved it. Experimental design and proper interpretation of regression results is hardly ever given the attention it deserves, so I appreciate that this course is in our program. The course is more conceptual than technical, and as a practicing data scientist I've probably gained more from this class than the others I've taken so far. This class alone convinced me that I made the right decision to choose UT Austin over Georgia Tech's OMSCS. Lectures are mostly clear, and I especially appreciated the ones where Prof. Zigler walked us through some difficult to navigate papers. TAs were exceptional, and overall I thought communication between course staff and students was solid. Workload was just right imo, and I found the optional extra readings rewarding.
The biggest gripe with this class is the assessments. They definitely forced me to engage closely with the material, but the score I received for some assignments/quizzes didn't reflect the effort I put in. I got an A in the class, so I'm not too salty about it, but the course would be greatly improved if assessments could move beyond multiple choice/ choose all that apply. Peer grading for the quizzes was kind of a mess, as many students were just not equipped to assign a grade to open ended free response questions. Unfortunately, these issues are hard to fix given the large course size. Ideally a class like this would be best suited as a small-sized course with plenty of discussion/free response.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (1.4 / 5):
Workload: 7 hours/week
Pros:
1. Programming assignments are fun, plus there is an autograder for immediate feedback
2. Lectures are straightforward
3. The course staff engagement was excellent
Cons:
1. The format of 4 quizzes for 50% of your grade is objectively bad
2. Final 3oo15 modules of lectures represent ~50% of the course info
Detailed Review:
This class was a blast and very easy to do. Basically just watching 4-5 hours worth of lectures a week and doing a 4-5 hour assignment every two. The assignments are also very fun.
The assignments are basically just different versions of creating an automated board game engine. Also, they are just not very difficult, which is a plus if you're looking for something to pair with another course.
The ED engagement in this course was excellent. Questions were answered super quickly and because everything was automatically graded, the TAs were focused on supporting the students.
Only two real downsides to this class are that the quizzes represent a huge portion of your grade and the last quiz is basically how much information can you regurgitate in a single sitting. Other than that would highly recommend.