Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 20 hours/week
A brief bit about my background for context: I do not have any formal CS training. I had limited Python scripting experience prior to this class, but little to no OOP experience.
Pros:
1. My programming skills increased by at least an order of magnitude by completing this course.
2. Dr. Lin is passionate about the subject matter and genuinely seems to care about teaching the 'why' behind the course concepts.
3. The TA's were top notch, overall.
Cons:
1. There are no sample solutions provided for the projects, so it can be difficult to learn where to improve.
2. Similar to item #1, the grading is quite opaque. You can see the names of the tests you failed in Gradescope (after the grades are posted); however, in many cases the names don't give much information regarding what the test actually evaluated. Again, this makes it rather difficult to interpret how you went wrong.
3. The quizzes are deceptively difficult, relative to the content presented in the lectures.
Detailed Review:
First, I want to say that, overall, I absolutely loved this class. It challenged me it a good way and I can already tell that my programming skills have improved dramatically. Furthermore, I have already applied many of the concepts presented in the course in my professional life and have seen dividends. Dr. Lin has structured the course such that it teaches how to approach algorithm analysis and programming in general from a strategic perspective, rather than a vocational, tactical perspective. Both have their merits, but I definitely think that the approach Dr. Lin takes provides more value for this degree.
If you don't have a CS background: be prepared to struggle. I would strongly recommend getting up to speed on object oriented programming principles & recursion prior to taking this course. Be comfortable with classes & inheritance. If possible, get used to debugging using PyCharm or another IDE, instead of using print statements. Some will say to focus a lot on Python prior to taking the class. Personally, I think that the required level of explicit Python knowledge is relatively low. If you know OOP from Java, Swift, C++, or some other language, you will pick up the Python syntax relatively quickly. But if you are new to programming in general, then learning OOP & Python simultaneously (prior to this class) is the way to go, if you can.
If you are new to object oriented programming, DO NOT procrastinate on the projects. Start on them as soon as they are released. The projects took me anywhere from 10 to 60 hours. You will need to develop your own unit tests to make sure that your code is functioning appropriately, which is a skill all on its own.
My only real complaints are that the quizzes tended to cover a lot of information not really addressed in the lectures and that the grading is exceptionally opaque. That being said, I still learned a ton and am glad that this course is part of the program.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (4.3 / 5):
Workload: 15 hours/week
Pros:
1. Prof. Lin is an engaging and thoughtful lecturer
2. Will improve your programming (and testing/debugging) skills
3.
Cons:
1. Class schedule was a little uneven in terms of time between project and quiz due dates
2.
3.
Detailed Review:
Although it was a lot of work, I really enjoyed this course. Prof. Lin is an engaging lecturer who’s clearly put a lot of thought into how he presents the material, and I learned a lot from the lectures and projects.
I thought having a student as an interlocutor was particularly effective for the online format. Lin’s teaching style (describing things in more plain terms, working through proofs and algorithms step by step on the chalkboard, and having a dialogue with the student) was a lot more helpful than reading off powerpoint slides.
In terms of my background, I took a couple of introductory computer science courses in undergrad and did a lot of R and Python programming for a job in academic research. I still wasn’t sure how I would fare in this class, given previous reviews. Overall, I thought the course was time consuming but manageable, with the caveat that the learning curve is steep for those who aren’t familiar with object-oriented programming. I felt the projects were manageable and fun, and my programming skills improved immensely, especially when it comes to debugging and designing test cases.
The quizzes were tough and required a lot of out of the box thinking, but I felt they were mostly fair (I’m sure many will disagree). I thought watching the lectures a couple of times and referencing the textbook (mostly for big picture information because it's written in Java) was sufficient enough to do well on the quizzes. The test cases for projects aren’t always the most descriptive, so you’ll have to go to office hours to get details. It’s not a good setup for learning from your mistakes, but I also get that the staff doesn’t want the test cases to be public information.
The syllabus mentioned that there would be a generous curve, but I wasn’t sure how generous because the class averages were fairly high after the first few assignments. However, the course ramps up in difficulty fairly quickly. I put in a lot more time thinking the cutoffs would be higher this semester, but the curve ended up being similar to past semesters.
Logistically, I think the class was mostly managed and organized well. The TA’s were somewhat active on the Ed discussion board and held regular office hours, making extra time before project deadlines. They could be cagey answering some questions, but were otherwise usually pretty responsive when it came to more urgent matters like grading. There were a couple of students in particular who were also really active and helpful. The only thing that threw me off a bit was that the staff didn’t seem to observe the spring break (mid-March), as they released lecture videos that week and had a quiz due the Sunday immediately after.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.1 / 5):
Workload: 5 hours/week
Pros:
1. Great TAs who are very responsive
2. Projects are interesting
3. The materials are high quality
Cons:
1. Wish there were more videos as some things seemed a little rushed
Detailed Review:
Honesty, this will probably be the best class in the masters program. Dr. Durrett is a great professor who enjoys teaching this material. All of the videos and projects were carefully planned and thought out. Tons of office hours and the TAs are very responsive and helpful. Overall, really enjoyed this class. The midterm was a bit stressful for me but they provide previous years' exams to help you study. The final project was done either alone or with a partner but if you do choose to work with someone, know you have to do more all together. The material itself was very interesting to me and relevant.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (4.3 / 5):
Workload: 10 hours/week
Pros:
1. Very interesting content that is explained well in lectures.
2. Highly active and helpful TAs.
3. After the maths foundations are set, the course is much more about developing algorithms to solve problems than doing maths.
Cons:
1. Peer grading is an extra time cost and can be hit-and-miss, but you can get regrades from the TAs if needed.
2.
3.
Detailed Review:
The course was surprisingly not too maths heavy imo (but I have a maths background, so...). The first few weeks focus on concepts like complex numbers and unitary matrices because you need them to understand quantum states, but at the halfway mark you should have all the maths needed to understand quantum states/calculations in general. You do end up needing some number theory for Shor's algorithm, but they walk through the relevant stuff and I don't think it's a focus (just needed to understand that understand/appreciate the algorithm).
It sounds like the course is relatively unchanged from the first run.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (2.1 / 5):
Workload: 15 hours/week
Pros:
1. Great Prof with engaging lectures
2. Content is very relevant and bang up to date
3. Very fair exams - Open book, take home - if you are paying attention at all you should not fear them
Cons:
1. Group based projects drive half of the grade
2. Some material only delivered for the onsite class - not clear why
3. Not enough time spend covering the code framework you have to use for the projects
Detailed Review:
Prof examines the world of Virtualization, starting with some good history on how we got here and covering off the latest problem space and a glimpse of the future. Very good course, well delivered. There are some guest lectures and a second, individual project that are only for the in class version and as we share the same content it is sometime confusing which applies to us (and a little disappointing that we don't get it all), but on the whole still very worthwhile. The workload is medium at the start, lots of setup work, but drops to literally nothing by the end (good if you need to study hard for a very theory based exam in a different subject).
The exams cover the subject matter and are open book so are really nothing to fear. The project is hard in so much as you are not writing your own Virtualization engine (that would be waaaay too much work for a semester) but gluing code into someone else's that has had key bit ripped out. The one thing the course could do with is a lecture aimed and briefing you on how the example is actually structured - you have to spend a good while analyzing some code that isn't as logically put together as you might hope to understand what it's trying to do - then writing the missing code is almost trivial.
To answer the question of should I do Advanced OS first (which everyone asks), yes, it's a good idea - they fit together nicely, no you don't need to, yes you can easily get an A in this if you haven't. Unless you are very familiar with C, you will have to spool up fast to manage the projects (we are not talking about being a C expert here, but you want to be comfortable) and the AdvanceOS course had a much gentler ramp up for the C component IMHO. You also get a very good grounding in many of the concepts that are relevant to Virtualization (after all, you are writing an OS for OSes in effect). Prof will cover what you need to know if this course, it's just that much easier if this is revision rather than the first time you've seen it. If you've taken a good undergrad OS course recently though, you will be just fine.
Definitely recommended.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (3.6 / 5):
Workload: 15 hours/week
Pros:
1. The course material was amazing--the professor's lectures to go over background, theory, applications, and practical considerations and cover a broad range of topics. For those who wanted to dive into the research further, references to papers and additional materials were plentiful.
2. The professor and TAs are incredible human beings. The responses on Piazza were extremely detailed and provided great guidance on implementing and debugging the assignments. It felt like the professor and TAs were genuinely passionate about the material and excited to help students learn and engage with it.
3. The material is approachable, even for people without DL/NLP experience.
Cons:
1. This might just be for this semester since they were still figuring out some of the logistics, but 2 of the assignments couldn't be graded via the automated grader (since the grading process includes running your training code to produce a trained model). There were early intakes for these assignments so that you could test out your code and its performance, but if you missed those, it could be a gamble as to whether your code fails due to environment differences on the final grader.
2. The final project is partially peer-graded (although TAs do review them as well), so grading could be inconsistent.
3. Solutions for assignments were not posted, so even if you are able to do well on assignments, you don't have anything to compare your implementation to in order to figure out if you actually implemented things correctly.
Overall Rating (5 / 5): ★★★★★
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 12 hours/week
Pros:
1. Fantastic area of study
2. Extremely applicable
3. Very responsive TA's. High engagement in office hours meant there was a lot to be learned there.
Cons:
1. Assignments could have done with some quality control. Answers were often corrected after student challenges.
2. This course could incorporate an analysis project but doesn't.
3.
Detailed Review:
First off, I loved this class. In my career, I've done a lot of statistics and prediction based on association (as I recognize now), and looking back now I can see I missed some opportunities for projects that would have had seriously interesting outcomes.
For the benefit of future students, I was in a few different groups and saw that some people struggled with a couple of things in this course. First, most of the math was very simple, but you do need to know how to do regression. I saw a small few people struggle with that, and getting frustrated because they spent more time trying to learn how to do a regression than they did learning the actual material. Second, I saw a small few people with basic Python skills refuse to try R until late in the course, attempting instead to learn Python by doing the assignments with it. I would have preferred to use Python myself, and it's arguably more valuable in the workplace, but it's not a good idea to try and learn it in a course where you're trying to learn the things that are explained with R code. Trying to persevere in Python (unless you're already very comfortable with it), you'll be on the back foot all semester, and in the end the scripting in the class is fairly basic so I don't think it really matters. Finally, I think a small few people didn't spend enough time on the readings. They can be a bit much but they are foundational and once you read them a lot of things in the course start to become obvious.
Not everything in data science revolves around creating more cutting-edge machine learning algorithms - to a large extent anyone can plug numbers into models. To do well in any technical career you need to be more than a technician, and this course provides some excellent strategies and approaches to help you move beyond that.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (2.1 / 5):
Workload: 5 hours/week
Pros:
1. Super interesting material
2. Entertaining lectures
3. Information communicated versus effort is off the charts.
Cons:
1.
2.
3.
Detailed Review:
I don't know how he did it, but he's managed to communicate an awful lot of information in such a way that it doesn't feel like I'm working. There isn't a word wasted in lectures, even his throwaway remarks are all helpful tips, like what he's found useful when evaluating regressions. We have lots of projects with interesting datasets, we're touching on all sorts of analysis like basic regression, PCA etc. He's covered report writing, how to use R, how to pick good visualizations, how to make color palettes and more.
This is a class on communication delivered by master of the art.
Overall Rating (5 / 5): ★★★★★
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (5 / 5): ★★★★★
Difficulty (3.6 / 5):
Workload: 20 hours/week
Here's a revised and grammatically corrected version of your review:
**Pros:**
1. Intense focus on PyTorch allows you to implement deep learning models from scratch without needing examples.
2. Challenges in optimizing model performance help you understand what a typical Fully Connected Network (FCN) looks like by the course's end.
3. The lecture slides are excellent and provide a solid understanding of Deep Learning in general.
**Cons:**
1. Quizzes seem trivial but aid in retaining deep learning knowledge.
2. The course exclusively focuses on Deep Learning for Computer Vision; incorporating Natural Language Processing (NLP) would be beneficial.
3. Homeworks 1 and 2 seem unnecessary; starting directly with Homework 3 would be more effective, providing more opportunities to implement various types of deep learning models.
4. The final project is unrelated to Deep Learning, assuming your model performed well after Homework 4.
**Detailed Review:**
Overall, this course is quite practical (aside from the quizzes) and teaches you how to implement your deep learning model in PyTorch from scratch. The final project can be completed in groups, but don't expect higher grades simply by increasing group size. I completed Homeworks 1 and 2 before the course began. Homework 3 was particularly challenging as I struggled to understand why my model was performing poorly. Homework 4 was even more challenging as it focused on tuning rather than model development. Homework 5 and Final project are irrelevant to deep learning implementation as you are using your previously implemented model from HW3/4.
Overall Rating (5 / 5): ★★★★★
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (5 / 5):
Workload: 30 hours/week
Amazing course. One of the best courses I took at Austin. It was a crazy insane amount of work but so worth it, I learned so much about high performance computing that I see very directly applicable to my job. The professors are excellent teachers and would 100% recommend this course despite how much workload it was.