Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (1.4 / 5):
Workload: 6 hours/week
Pros:
1. Lectures are easy to follow with engaging Professor
2. Go at your own pace class
3. Fun assignments
Cons:
1. Explanations were too superficial
2. Felt like half a class
3. No math at all
Detailed Review:
I enjoyed the class and thought the programming assignments were fun. All the assignments are released up front, so there is a lot of freedom if you have some busy weeks. Some people front loaded the class and finished in a month or two. The professor is interesting to listen to and his coding examples in the lectures will help in the programming assignments. The homeworks were rewarding to code up and quite fun to do.
My main criticism is that this felt like half a class. I know that in 2024, this class had some content removed when the ADL class was created. However, now the class is just too easy. If you have a CS background, expect about 5 hrs per week on average. I don't have a strong programming background and do not program day to day. There are some recent reviews (from after the class was redesigned in mid 2024) that claim the class was 15 hours a week, and I have to assume those are students coming from a non-cs background --- perhaps in the MSDS program. If you do have a CS undergrad, I would suggest taking this class together with another class, as it was too easy. I think skipping DL and jumping into ADL is also a very viable alternative for many.
I also disliked that the professor didn't really show any math. I am fine with the class being all practical, but I feel like he could have shown eg a small convolution example on a matrix, etc. Honestly, there was more math and detail in Andrew Ng's Coursera DL class than in this graduate level class, which I found disappointing.
I finished the class mid October and kind of felt like I was cheated since I am paying out of pocket. This felt like half a class. If you are looking for a very easy A, this class many be for you. There should be a final project or an additional hw assignment.
I did like the mini quizzes that followed the lectures, as they helped me pay attention during the engaging lectures. All the assignments are autograded which I liked. The threshold to get an A is pretty low, and you don't need to do the extra credit or finish all the assignment tasks to get an A. My 6 hrs per week for this class included doing all the extra credit on the programming assignments, and honestly doing the extra credit was half of the work. If you are aiming for a lower A, the workload would be even less.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 8 hours/week
Pros:
1. Learn a wide array of topics, including containerization, microservices, serverless etc.
2. Can work in teams for labs
3. Fair Exams
Cons:
1. HW seemed too "linear"
2. TA's unresponsive on edstem at times
3.
Detailed Review:
What I liked most about this course is how in the lectures we covered new topics regarding containerization, microservices and serverless, all hot topics in the industry today. The exams were fair, and it seemed they were graded fairly as well.
My main issue with this class was the labs. The setup for the lab itself was a bit convoluted and many people using the local setup had issues and had to request remote access to a UT machine. The labs themselves were fill-in the blanks where it seemed like we used someone else's implementation, and the prof went in and just deleted a few methods that we had to fill back in. While it wasn't hard, it seemed like we didn't learn what each step was doing in depth and why we were doing what we were doing, rather just following the hints provided as sort of a roadmap of what code to write. The TA's were helpful during office hours, however, I felt like on edstem(piazza's replacement) it seemed like there would be 2-3 days before TA's would respond to a question at times. However, a lot of the office hours (especially in the last 2 months of the class) were cancelled/rescheduled.
One good thing about labs is the ability to work on teams, however, since each lab built on each other and every part of the code was interconnected it was a bit inconvenient switching between teammates to split the coding part, and we ended up having one person doing the coding for last 3 labs.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (1.4 / 5): ★☆☆☆☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (4.3 / 5):
Workload: 25 hours/week
Pros:
1. If you're rusty on your C, this course will throw you into the fire and force you to learn it quickly or drown.
2. If you enjoy a course with heavy coding emphasis, and a learn-it-yourself structure, you'll more than likely do fine here.
3. Book is a great read.
Cons:
1. TAs not responsive
2. Lecture material is not sufficient for the new projects.
3. Project team structure is not really beneficial because the workload split is not immediately clear.
Detailed Review:
This class was recently 'restructured' to use Pintos as the class project. Since this is the first semester, I hope this doesn't apply in the future, but that was about all the restructuring done here. The lectures are outdated and still reference the old assignments, providing no guidance on the new assignments. To top it off, I think the project requirements are also just ported over from Stanford, so that is about all the guidance you'll get. Nothing helpful is produced by the TAs on the Ed discussion boards, if they answer at all.
In total, there are 5 projects - the first an introductory shell, and the rest are Pintos projects. Projects MUST be done in groups, with little flexibility to work by yourself. Here's the issue: since the projects are so poorly guided, you'll likely not be able to take advantage of having teammates because you won't even know what work needs to be split. In my case, that meant everyone on my team working on every project by themselves hoping something would work. If you're unlucky, that might mean you implement the working solution every single time and your teammates get to stop suffering before you. On top of the coding portion, assignments also have design documents, which by themselves, are not terribly bad. These are worth 20% of each project. Lastly, the timing of the projects felt slightly off. The introductory project seems to get a lot more time than the last two projects. As is, the last month of class has you churn out a midterm, 2/5 projects, and a final. Not fun.
On top of projects, the course kept its 2 exams - 1 midterm and 1 final. Exams are worth 30% of the grade. Due to how much of the course is devoted to the projects, this part of the class really felt like a separate course. You are allowed a cheat sheet for the exam, and it's wise to spend it on the outdated lectures. However, the exams were not terribly difficult.
Overall, this course does let you learn a lot on your own at the expense of a stressful, high workload. You can expect to spend a good chunk of your weeks working on the Pintos projects, including referencing outside material trying to get some background knowledge. If tweaked, the course could be an enjoyable learning experience for those who are interested in OS. I would not recommend taking this course with another class.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 15 hours/week
Pros:
1. Course material covered up-to-date topics
2. Professor was highly engaged
3. Well-designed assignments
Cons:
1. A lot of scattered topics
2. Not much assignment coverage in the last part of the class
3. Some of the topics could have been explained better
Detailed Review:
I didn't enjoy this course as much as some of the other reviewers. The course covered a wide range of topics in NLP that didn't necessarily follow from each other. This can be good if you want exposure into a lot of different topics in NLP. On the other hand it made the course feel unfocused and it was hard watching through the many hours of lectures.
One great thing about the course was that the professor was very involved on Piazza and was committed to updating the course materials with recent topics in the field.
The assignments in the first half were a good way to revise the materials covered in the lectures but towards the end of the course they became irrelevant to the assignments.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (2.9 / 5):
Workload: 10 hours/week
Liu's lectures were far more straightforward than Klivan's lectures. I found Klivan's teaching style confusing with the lack of concrete examples. Liu's half of the course was much better because the assignments correlated more directly to the lectures, and it was easier to grasp the concepts this way.
Expanded Grading:
Rating: 2 Klivans, 4 Liu
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (3.6 / 5):
Workload: 8 hours/week
Pros:
1. Provides a rigorous overview of data structures and algorithms that prepares for future classes and job interviews
2. Active instructional staff on Piazza and several office hours are available each assignment
Cons:
1. Lectures very high level, typically insufficient for preparing for quizzes or assignments
2. Opaque and slow grading limits learning from mistakes
3. Very run-of-the-mill course, minimal specialization of material for data science
Detailed Review:
Disclaimer: I recently graduated from UTCS taking the undergrad Data Structures and Algorithms courses as well as tutoring various versions of Data Structures, so while I did not particularly have issues with this class I will try to think through the lens of an average student in this program.
This course is essentially something you would find in any computer science degree plan, so those in this program without a background in computer science may struggle more than others. The prerequisite of "one semester of coding" really depends on the quality of that semester and whether the coding was in Python.
I personally did not find the lecture delivery very effective. I'd often lose focus waiting for the professor to write things on the chalkboard. Also, I found the back-and-forth with another student during lecture to add little to the discussion. While I agree with the professors intentions to focus on building a conceptual understanding of the data structures and algorithms first, too much time was spent on this leading the lectures to be mostly insufficient for application later on. Luckily, all of this material can be found across multiple reputable sources on the internet.
The quizzes appear to have been a problem in previous iterations of the course, and they continue to be problematic. Though you can easily learn all the material on your own, it is still crucial to watch the lectures because many quiz answers are derived specifically from what the professor said in lecture. The average quiz scores were quite low, likely due to several questions each quiz that were overly subjective or beyond the scope of the lectures. After mixed results irregardless of my understanding of the material, I stopped caring about the quizzes and focused on the assignments since their weight was much heavier.
Assignments increase in their weight and difficulty as time goes on in this course. Set-up in PyCharm and turn in through GitHub on Gradescope were simple following their provided instructions. The starter code for assignments were well-documented, but I felt that the assignments specs were often lacking in details which made testing the programs difficult. Luckily, the TAs were active on Piazza and would clarify any questions individuals had on the details of the assignments. It was particularly helpful when the TAs made a stickied post on Piazza summarizing all the clarifications per assignment so that no detail would be missed. The tests provided in the starter code were a nice start, though grading on assignments was very opaque. It's unclear how different tasks are weighted until you receive the final grade, and the feedback from the autograder is very limited. Grades would be received roughly a week after the assignment was due, in the middle of the next assignment, so learning from mistakes on the previous assignment was limited to a degree.
Overall, it appears this course has improved logistically, but remains mediocre in its contents and assessments. Luckily, there is a curve promised to balance out the difficult quizzes and assignments, but I feel like that shouldn't be necessary in this type of course. This course is rigorous, but if you put in the time to learn the material it should give you an edge in your data science career and be helpful for the rest of this program.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (1.8 / 5):
Workload: 10 hours/week
Concepts here are more interesting than the actual assignments. The assistant prof does a great job of breaking down the math-heavy sections of the book, but I do think they needed way more example problems than they currently offer. They primarily just need to figure out the platform that they provide assignments on -- weekly homeworks have annoying 'all or nothing' type questions, the programming results are very binary and annoying to debug, and the final was more difficult merely due to the time constraint. It makes learning the material more stressful than it needs to be. I'll also note that the program/conceptual difficulty jumped up quite a bit for me in the back half. I ended up having to take some of the deep learning lectures to learn how to implement the NNs with pytorch. With that being said, it's fairly easy to get a high grade as you can hit a 70% before you even take the final if you spend enough time on the homeworks/programming assignments.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.1 / 5): ★★☆☆☆
Difficulty (2.1 / 5):
Workload: 7 hours/week
Pros:
1. Lots of content is covered
2. No exams
3. Fairly straightforward homework (not too many hours to complete)
Cons:
1. Example code needs to be refactored
2. No reference textbooks on syllabus
3. Some of the math notation on the slides is confusing
Detailed Review:
Overall I really enjoyed all the contents of this course. It did cover material that you would normally find in a regression course like simple / multiple linear regression, regularization, ANOVA testing, F-tests, and logistic regression. However it also went into several other more advanced topics such as Bayesian regression, nonlinear regression / newton raphson, parametric and nonparametric bootstrapping, GLMs, metropolis hasting algorithm, Gibbs sampler, EM algorithm, mixture models, and non-parametric methods such as trees, splines, and kernel smoothing. The only downside is that most of the methods weren't put into context of an example problem / dataset. So you will need to find external texts / references such as Elements of Statistical Learning for that.
The homework for the most parts were fairly straight forward. Most took anywhere from 2 hours for the easiest assignments up to 8 hours for the toughest ones. Around 40% of the assignments are multiple choice and the rest are peer graded. Most assignments were around 60% deriving various mathematical results and 40% programming (most used R, but you are free to use whatever programming language you prefer). All of the datasets are fabricated/simulated data made up from the course staff, so again no "real world" toy datasets to apply the material with. You pretty much have to code up the solution using only basic tools such as matrix operations, functions, and loops to derive the solutions and not use pre-made packages. I thought this was good because it reinforces the mathematical theory even though you would never use these implements in a real world setting.
The example code needs to be refactored. Plenty others have complained already about this so I won't go any further on that. Some of the notation in lectures is ambiguous. For example vector and scalars don't use the typically notation where the vectors are differentiated from scalars using bold font. Also the prime symbol ' can mean a matrix transpose or a derivative. Sometimes a random variable would be written as equal to its pdf function instead of showing that it's distributed according to that distribution. You could usually figure it out most the times by the contexts, but it did make following the slide more difficult than necessary at times.
Overall I enjoyed the course.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (1.8 / 5):
Workload: 8 hours/week
To echo some important points above--if you have a background with math this class should be not too bad. I honestly found it a little bit dissapointing after taking a harder ML class during my undergrad. The first pset is tricky and then they are almost monotonically easier afterwards. The "hands on" assignments are canned, mostly just import sklearn. More algorithm implementations would be edifying. The homeworks are very light on formal math and mostly easy computations.
Overall Rating (2.9 / 5): ★★★☆☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (2.1 / 5):
Workload: 5 hours/week
Pros:
1. Builds a good foundation in many aspects of probability and statistics
2. Simple workflow of weekly homeworks, roughly bi-weekly quizzes, and two exams
3. Quizzes and exams easier relative to homeworks (with 2 homeworks and quizzes dropped)
Cons:
1. In the probability section, the lectures are high-level and hard to follow
2. In the statistics section, the materials are highly disorganized
3. Lack of depth and purpose in some of the material
4. From an editing and delivery standpoint, the lectures across the course are lacking
Detailed Review:
The first half of this course focuses on probability and the second half builds on probability through statistics of many forms (simulation-based, theoretical, mathematical).
The professors claim the textbook for the probability section is required, but the problems from the book on homeworks are given in the homework documentations and on EdX. Sometimes the answers to the homework could be found directly in the book. The probability lectures essentially paraphrase the book, so the book can be helpful if you want more detailed explanations.
The lectures in the probability section are pretty lackluster, comprising of concepts being introduced, proved, and then applied on repeat. The professor paraphrases the material of his slides and goes quite fast making lectures hard to follow. Also, there were very few useful examples in the lectures, leaving many concepts to be solidified in the homework. The homeworks in this section are overall much more difficult than the homeworks in the statistics section. The difficulty level of individual problems in these homeworks is all over the place. Questions about proofs tended to be more difficult, of which there were many.
The lectures in the statistics section were better, though it seemed these lectures were done all at once in a single take (also true for the probabiltiy section). The professor would often fumble over words and ramble which was distracting. However, her perspective on simulation-based statistics was very informative and compelling, making this section of the course more engaging. The homeworks in this section are much easier. Once you learn how to use Statkey, the simulations are all just variations of the same process. The theoretical statistics portion is nicely summarized in a doc with all the formulas and methods for every problem and more. The big issue with this section of the course was how unorganized the materials were. Information was spread across up to 10s of PDFs and multiple paragraphs of text across EdX. However, if you do take the time early on to absorb all of that information, the rest of the course will take minimal effort.
Quizzes and exams in this class were easier than the homeworks. The material on the quizzes were well-defined, and reviews for the exams were given so there were no surprises. In general, everything in this class is machine-graded, but on the higher stakes assessments the questions are often multiple parts building on each other so that you can get some form of partial credit. The expectations on how to answer the various types of questions were exceptionally clear, and I had no issues with the machine-grading in this course.
Piazza in this course was not super helpful. The responsiveness of the instruction staff was mixed, though when it comes to logistics you can expect an answer in reasonable time. Several homeworks in the statistics portion of the course encouraged discussion on Piazza. Unfortunately, the quality of this discussion was low and it just crowded the actual questions out on Piazza.
In conclusion, this course felt like several undergrad introductory probability and statistics courses combined together to make an average class that covered a lot of material, but none of it really in-depth. The expectations of the course are well-defined and assignments are structured in a normal way making succeeding in this class very possible.