Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.1 / 5):
Workload: 12 hours/week
Pros:
1. Assignment is to build a Java-like language's compiler, very cool
2. Covered some useful topics that will help you become a better programmer (GC, memory allocation, x86 assembler, ...)
3. Midterm and Exam are easy
Cons:
1. The first assignments are quite time consuming (3 in total)
2. Assignments are all autograded, but the test cases are full of mistakes and got fixed few days before the deadline
3. Not all topics have problem sets to help you consolidate the learning
Detailed Review:
Be careful if you are not fluent in Java and its build tools (maven / gradle), the first assignment may take you more than 60+ hours as reported by other students in piazza. And I , as a Java developer with 2 YOE, spent ~24 hours for the first assignment. But the second and third one are much easier, only took me around 8 hours each.
The content of the course are very useful, I got a brand new understanding about programming language like C/C++ and Java, definitely recommended.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (2.1 / 5): ★★☆☆☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 20 hours/week
Pros:
1. Real university class vs other Internet courses
2. Very good lectures
3. Final project mimics real life small research. You can learn a lot if you really apply yourself.
Cons:
1. Homeworks 3-4 are harder than they look. You may want to ask for help.
2. Head TAs behavior is unpredictable. She can help but she can also dump.
3. EDX quizzed can be pretty hard. I mean the ones where you need to calculate gradients, especially in recurrent networks.
4. Lectures are getting outdated. Only one video lecture is about Transformers and Attention, though Transformers are the only thing everyone talks about in 2023.
Detailed Review:
This course is one of my absolute favorites. I knew nothing about neural networks before taking it, but I ended up learning a lot after finishing the course. How do I know that I learned a lot? In conversations with my experienced engineer friends, I realized that even though they work with AI infrastructure, they know almost nothing about neural networks and speak about transformers as if they were magic. On the other hand, I clearly understand the relationship between dense networks, CNNs, RNNs, temporal convolutions, attention, and deep reinforcement learning, and I can explain the basic ideas of this magic to other software engineers.
About the course: I struggled with the first two homeworks because I was overthinking. Don't make the same mistake I did. The coding part of the first two homeworks is very straightforward because you just need to understand the practice part of the first two lessons and almost copy necessary pieces of code from those lectures into the homeworks. The hardest part about the very first homework is getting comfortable with the local setup, Google Colab setup, and autograder. Once you try those and everything clicks together in your head, the rest of the homeworks will be about learning.
Some people complain that we kind of reuse the same network in most of the homeworks, but in my opinion, that is a strength of this class. We build a simple network in one homework, and then for the next homework, we reuse the core of the network by adjusting it to a more complicated scenario. That way, you can see how the same theoretical basis can be used to solve more complex problems and why certain neural network basic components (convolution, attention) are so important.
It is highly likely that you will not be able to make your final project code work. However, you must obtain results. The most important thing about the final project is to try really hard by experimenting and doing your absolute best to capture the results of your experiments in the report.
Don't be late and submit your homeworks by Monday at 7 PM CT. If you are even one minute late, those missing points will accumulate very quickly. Then, you will have to do the extra bonus homework, which will cost you a very precious week that you could have used for the final project. And that extra bonus homework is pretty hard too. The key is to do the first two homeworks quickly, because those are pure implementation, almost copy-paste, but you need to know what to copy-paste. ;)
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (2.9 / 5): ★★★☆☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (3.9 / 5):
Workload: 10 hours/week
Pros:
1. Lowest HW grade dropped
2. Engaging TAs
3. Straightforward programming assignments
Cons:
1. Not much/any professor involvement in the course
2. The theory HWs are often quite hard
3. The exams are a mixed bag
Detailed Review:
Caveat -- I took this class in the condensed summer semester. I think it was a really good course, I learned a lot, but I definitely had to work my rear off every week to stay on top of things. The first two homeworks were really tough and will weed out a lot of people, but if you stick through those, you'll be fine.
Be sure to take any and all questions that you have to the TA office hours, where you can have them offer hints or do a similar example. The lectures are pretty clear but it's really tough to know what to pay attention to since they do tend to go down rabbit holes with proving certain theorems etc. I think it was really useful to actually annotate the slides, so I was able to pay attention to what they were saying. Highly recommended over taking notes from scratch. The textbook/lecture notes from the second half of the course are also really useful for being able to reinforce the cascade of info from the videos.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (1.4 / 5):
Workload: 2 hours/week
Pros:
1. Labs were beneficial to walking through the implementation of ML techniques
2. Good use cases for current ML methodologies
3. Group project. There was a 10-page final paper that needed to be related to ML in some fashion. They provide some Kaggle examples, or you can pursue your own topic.
Cons:
1. Very minimal mandatory programming homework. I would have liked to see coding assignments with peer review. I didn't even look at the labs until I started working on the final project and realized the labs were pretty good.
2. No clear rubric for the final paper, but the professor stated it was more about creating a portfolio for ourselves. This could also be a pro because, given that, we decided just to explore and try things out instead of trying to meet certain checkpoints on a rubric.
3. Multiple choice quizzes were the only other portion of our grade. They were just word traps where D is not the answer because it had a + instead of a -. To do well, you just have to read and follow the lectures/slides verbatim.
Detailed Review:
Overall, I think this is a great course with high-level overviews. We covered everything from Logistict Regression, to Nueral Networks, to Natural Language Processing. We were not expected to be experts in any of these topics, but it was just exposure to the topics and how we can implement some packages and libraries to utilize these methods easily.
I would have preferred actual programming assignments in implementing some trivial ML cases. I thought the final project was fun. We were allowed to be in groups of up to 3 or as individuals. I would recommend keeping the groups and collaborating on a problem.
There was no real math or programming background required. It started with an introduction to numpy, but progressed quickly. But with the lack of real programming assignments or homework, there is plenty of time to play catch-up if needed.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (5 / 5):
Workload: 12 hours/week
Pros:
1. Applicable
2. Fair Grading
3.
Cons:
1. Final Project
2. Lectures Not Aligned with Projects
3.
Detailed Review:
As a professional data scientist, this might be the most practical course I've ever taken. It was exceptionally well taught, complete with the most recent research into deep learning subjects. The projects weren't easy, but they were very fair; there was always partial credit that could pad your grade in case your actual deep network didn't perform very well. There was also ample extra credit. The final project was hugely stressful for the last few weeks (my coworker, who has a PhD, said it's the hardest project he's ever seen in all of his academic career, as student or teacher), and I don't believe we ever even saw a proper implementation, which is frustrating because I feel like I didn't learn anything. However, I think even this was fairly graded. My other complaint is that I ended up ignoring some of the lectures (which were very well done) in favor of giving more time to the final project, which I don't think was the best use of my time, so I wish the lectures weren't so easily-ignorable and the final project was a bit more realistic.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 25 hours/week
Pros:
1. Forces you to wrangle with C++, rust, go at a low level
2. Makes you feel like a serious programmer
3. All the assignments are available online and can be started at your own pace even before the class starts
Cons:
1. The lectures are almost irrelevant to the material as the course moves on
2. Lots of documentation to read
3. Solutions are non-trivial and usually require a hint from the TA
Detailed Review:
As the reviews indicated, this course is one of the highest rated courses in the whole program. I came with high expectations and was really happy to see them being met by the challenge here. The course could be improved by making the assignments a little bit less repetitive since there are so many test cases and including individualized project work.
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. Up to date material
2. Good professor
3. Interesting assignments
Cons:
1. Final is a bit meh
2.
3.
Detailed Review:
This is my 8th course in the program and I think it's safe to say my favorite. The material is new, the professor is good, and the TA support in Ed was attentive. I'd recommend the course. The only thing I didn't love was the final - it was very open ended, which made it kind of confusing. I spent a week just trying to interpret the prompt.
A few things to note:
1) The course assumes knowledge of PyTorch. I'd either take DL beforehand or do a crash course in PyTorch so the learning curve isn't so steep.
2) The workload is moderate, but ramps up towards the end with the final. There was definitely a lull between assignment 4 and the final. I paired this class with CSML and it was doable. I'd say I averaged ~10 hours a week, maybe less.
3) The autograder makes getting a high score on the assignments pretty easy. I got 100% on all the assignments except for one without much trouble.
4) The midterm is fair, but requires a good amount of preparation. I probably studied for 10 hours or so.
So in summary, good course, would recommend.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 12 hours/week
Pros:
1. Fun and practical way to learn DL with pytorch
2. Informative of different ML methods
3. No exams
Cons:
1. Lots of coding and debugging
2. Need time to tune models on colab
3. Final project is labor intensive
Detailed Review:
I really enjoyed this course. I found the professor really knowledgable and generally a pleasure to listen to. The homeworks typically followed the techniques learned in the lecture.
Contrary to other reviews, I found Piazza to be a goldmine of information and the TAs to be very helpful with homeworks.
Like others mention, expect to spend a decent chunk of time coding and debugging your projects, since they are worth most of your grade. If you have familiarity with pytorch you may find this part alot easier.
Lastly, the final project was a bit of a curveball since most of my team's time was spent tuning code line by line to try to programmatically improve our project. This took a huge chunk of time. My best advice is to start early and prepare to take a slight hit on your grade unless you are really good at programming video games! Best of luck and enjoy this fun course!
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (3.6 / 5):
Workload: 6 hours/week
Pros:
1. Deeply interesting subject matter
2. Professor's and TAs seem very engaged and responsive
3. UT's MSCSO community is very collaborative and open to helping one another
Cons:
1. There is significant "infrastructure" work that doesn't contribute to learning. I.e. you may spend more time than you want setting up your workspace
2. Much of deep learning is sitting and waiting for your model to train: For many learning cycles it can be VERY time consuming
3. Projects and HWs are open ended and DIFFICULT
Detailed Review:
I really enjoyed this class, and I feel I learned more from this class than I have in other more theory-oriented classes. The professor is absolutely brilliant in what he is able to code up in real time, and how easily he is able to explain difficult concepts.
75% of your time may be spent on the HWs and Project, with about 25% on lectures and quizzes. PROTIP: Fail the quiz the first time and it lets you watch the solution video, then use your 2nd attempt to get 100%.
If you go into it knowing that the workload is gonna be tough, and you can get a headstart on it, it's totally do-able. Don't take during a busy period in your life, especially if that's over the summer. If you don't get a headstart and you're busy over the summer semester, you're gonna have a bad time.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (2.9 / 5): ★★★☆☆
Difficulty (2.1 / 5):
Workload: 10 hours/week
Pros:
1. Projects are straightforward, well defined, and not particularly challenging (if you have worked as an SWE)
2. Course material is very relevant to mobile application development
3. Excellent Piazza support
Cons:
1. Lectures aren't structured to follow the course progression, they're only really useful as a spot check for particular features you're working on at any given time.
2. If you don't have much practice self-debugging and revising software you've written, you're in for a rough time
3. High volume of assignments. 9 Flipped classrooms, 5 homeworks, and a final project
Detailed Review:
I really enjoyed this course. The assignments build off of each other well, the homework is not too difficult, and there are no "Gotcha" assignments. Everything is straight forward and well defined. You are told exactly what the assignments need to do, what functionality the app should have, and potential edge cases you may need to consider. Plus there is the bonus of the final project being fairly open-ended, so you are able to tackle any android application that you are passionate about building within a set of pretty loose requirements. The assignments are also all laid out in the MVVM framework which is helpful for learning about the structures of on-device applications.
As others have said, out of all the classes in the program, this is probably the closest you will get to software engineering as a job rather than computer science as a field of study. The assignments are not focused around learning theory laden concepts and are instead focused around continuously writing close to production level code. Similar to an entry-level software engineering role, instead of building a small assignment from scratch (with the exception of the final project) most of the homeworks and flipped classrooms are "go build this module" or "implement and integrate this UI component" of a larger project. For those who have worked as a full stack or mobile software developer, this course may seem trivial at times. For example, some of the flipped classrooms took me ~30-45 minutes. Even if you have 0 professional development experience, the course is still very doable, just might be a bit of a learning curve to the change in structure. You'll quickly figure out whether you like the difference or not.
The caveat to all of this is this course basically assumes that you can effectively read, write, and debug code. I reviewed my git history for this review and my commits for the course totaled ~8000 lines of code across all the projects.
The course also covers numerous different external APIs, outside libraries and resources, and concepts like asynchronous programming, atomic data, events, lifecycles, REST APIs, databases, authentication etc. Interfacing with all these components is fairly standard, but you're given the links to the read the docs and resources and expected to run them down. Some people really don't like this style and prefer the content to be in the lectures, but I felt that it is more of a preference thing than a good vs bad.
The last thing about this course that was great this semester was the course staff and Professor Witchel are very helpful. The TAs and professor would respond to discussion posts all the time and there was generally very good communication. Also, Professor Witchel's teaching style is just fun. It's never dry, always very relaxed and easy going.