Overall Rating (5 / 5): ★★★★★
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (3.9 / 5):
Workload: 15 hours/week
Great class. The assignments and projects are designed in a fashion that makes sure you end up reading lots of papers and learning a whole lot.
Overall Rating (5 / 5): ★★★★★
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (1.8 / 5):
Workload: 10 hours/week
Fantastic course with a great professor. Good mixture of theory and practical coding assignments that engage you with the material. Really cool final capstone project as well with teammates, and no exams. Workload is much bigger during the final project.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (2.9 / 5):
Workload: 6 hours/week
Pros:
1. Good refresher and general overview of OS principles
2. Projects are not difficult if you're comfortable with C
3. TAs and Professor are responsive and knowledgeable
Cons:
1. More of an undergrad upper division OS course
2. Didn't get into networking, internet protocols, security, etc
Detailed Review:
You need to be fluent in C to do well in this course. The project are very manageable and the deadlines are extremely generous. The professor really knows the topic, and the lectures really helped unravel some rather tricky topics in OS like memory management. During our term, we had three very dedicated TAs who went out of their way to provide clear guidance both during OH and on piazza.
All in all, pretty fun class and you learn how to write kernel code. My only gripe was that we didn't get into networking and security.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (0.7 / 5):
Workload: 5 hours/week
Pros:
1. Great lectures and text book
2. Most applied course in program I've taken yet
3. Peer grading is lenient - makes it easy for a good grade
Cons:
1. Peer grading is lenient - makes it easy to not get most out of the course
2. Mandatory Piazza posts means discussion board is full of non-value added comments
3.
Detailed Review:
Lectures - The first part of every lecture goes over general concepts of what makes up a good visualization. This is material that can be utilized no matter what language or software you are using to generate the graphics. The second part goes over how to generate the graphics in R utilizing the latest in the Tidyverse / Tidymodels framework. The professor also has a shiny webapp at the end of each section which gives you a walkthrough tutorial on applying the code discussed in the lectures. This was extremely helpful and useful.
Textbook - The textbook is free to access and goes over much of the same as the first part of each section. Great reference if you prefer a written text. All of the slides are also available on the course website.
Homework / Projects - The homeworks are pretty simple. You could pretty much copy paste a lot of the code from the lectures and make a few modifications to receive full points. The projects were also pretty simple, although you did have to put in some more thought in than the homeworks. The last two were more open ended (choose your own questions for 4, choose your own dataset and question for 5) which allowed a lot more creativity on what analysis you did. However with the lenient peer grading rubric, a lot of lower quality reports still got an A even though you wouldn't want to share such reports in an actual work environment. If you are just looking for an A, you can likely get it without investing too much time or effort into the projects. If you want to get the most out of the course though you need to be self-motivated as the grading won't push you above and beyond.
Piazza - 14% of the grade comes from participation points on Piazza. The first half of the course was sort of a train wreck. They had it were you needed to make 5 comments or post and get one instructor/TA endorsement to receive full credit. This resulted in students posting insane amounts of comments and posts fishing for an endorsement. In the second half they modified it so you could receive full points for either 6 comments/posts or 5 comments/post and instructor endorsement. This made Piazza much more manageable. Professor Wilke and the TAs were all very active on Piazza and it is clear they are passionate about the content of the course.
Overall - It is clear Professor Wilke put a lot of time and effort preparing the material for this course. It is also one of the most applied course I've taken so far in the program. I am already applying the concepts I've learned in class to my day job. Overall great course. Also the work load is pretty light in this class, so it is very manageable to pair it up with a harder course.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (4.3 / 5):
Workload: 5 hours/week
Pros:
1. Very well presented material. Shorter videos 10-15 minutes split logically. Best virtual presentation of material I have seen so far.
2. Great TAs and course staff, very responsive on Piazza and not overly paranoid on cheating because the course is well structured.
3. Programming assignments only and a final project, no tests!
Cons:
1. Programming assignments take some getting used to, I required office hours and TA help often
Detailed Review:
The course comprises 5 Programming Assignments and a Final Project. No tests outside of some basic questions on Edx following videos which you have infinite retries.
The material is released weekly in sets of short videos, but the previous semester course is also available in a separate website if you want to work ahead, although there can be some small tweaks on the assignments. This semester for example had a very different format for the Final Project, but other programming assignments were mostly the same.
For the programming assignments, you get some scaffolding code which is typically well documented, but there are some tricky areas and functions that you sometimes do not use unless you want to go above and beyond in your experiments. I ended up not working ahead of schedule due to my work schedule. In general, I did not feel very pressed for time except for Assignments 3 and 5 which tend to be the harder projects. These assignments are significantly harder so start early! I attended TA office hours semi-weekly and especially close to the deadline, and very often some pseudo-code discussions would come up that were very helpful. There are a lot of different possible solutions and the TAs tend not to recommend you follow a specific method, which I appreciate because it allows you to learn some trade-offs on implementation of the models. This makes piazza discussions regarding approach interesting:
Can I do this?
- Yes. I think that would also work.
So make sure you ask the right questions like: I went for this approach and I am hitting this problem, what do you suggest?
The assignments use Pytorch and different types of Neural Networks. I did not know Neural Networks outside of the brief introduction we had in ML. I also did not know PyTorch because I did not take Deep Learning prior to this, but managed an a good grade anyway. I am very comfortable programming in general and picking up new frameworks so I relied mostly on this to get through the course. Professor Greg is an outstanding lecturer and very easy to understand, I am happy I got my neural network introduction in this course. However, I do think taking ML before this is a good idea.
TAs are just outstanding, flat out the best I have had in the program. They are helpful even on debugging your code on break-out sessions, which is actually really hard to do for these models. The TAs that have worked on the assignment recently tend to be a lot more specific in their guidance, and that can be a big help. You do get the occasional wrong advice by accident, so follow your instincts and give yourself time to work through this. Programming assignments are tricky to guide people through, there are so many different ways to code a solution.
The Final Project was very interesting, this year they gave us an option to partner up with someone and you have to read papers from recent NLP research, and explore datasets and come up with potential experiments and improvements. You have to write a paper on your approach in a similar format as the research papers. There is plenty of room to innovate and explore new ideas, and not as focused on the results so much as the analysis and the write-up. This is peer-graded but reviewed by the course staff which is again, a much better way to do peer grading. It is almost like the people who designed this course still remember how it is to be a student and truly care.
Bottom line: I wish other courses were structured this well. This is a course designed to teach the concepts in a new and evolving field of research. Great scheduling, pace, format, assignments, and staff. You can easily understand and assess your knowledge and predict your grade as you go.
Overall Rating (5 / 5): ★★★★★
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (5 / 5):
Workload: 25 hours/week
The projects were a ton of work, but they were really interesting and rewarding. Lectures were fun as well, and I really like the material.
Overall Rating (5 / 5): ★★★★★
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 15 hours/week
Pros:
1. Quite broad
2. Great intro to pytorch
3. Really interesting projects
Cons:
1. Will quickly go out of date (professor left)
2.
3.
Detailed Review:
I really loved this class. It was exactly what I needed to get comfortable with pytorch, with some really practical and interesting computer vision projects. The final project was learning to play a computer game, which I had absolutely no idea how to do before this class. In the end it just all fell into place and I made something I'm really proud of.
While the projects were mostly related to computer vision, the lectures went through a lot of detail on different architectures, and how to solve problems like vanishing and exploding gradients etc.
However, the material is likely to quickly go out of date. The lessons were recorded in 2021 I think, and the professor who made them left the program last year. The material for the practical lectures is on the professors own website and isn't maintained anymore. That made for a frustrating time trying to piece together dependencies and data in order to follow along. The graders were obviously made around the time the lectures were set up, so now you have to be careful with your environment setup, as you'll probably run into errors where you've used versions of e.g. pytorch that are too new. This is a rapidly evolving field, 2 year-old lectures are already starting to become dated, another year and they'll start to sound out of touch.
Really good class, but I hope they find a way to keep it up to date for the future.
Overall Rating (5 / 5): ★★★★★
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (5 / 5):
Workload: 25 hours/week
Pros:
1. Course material covers a broad range of topics from the ground up (and also covers practical tips and gotchas for implementing them) and is approachable for people without significant DL experience.
2. Course material is well-organized (videos, assignments, and presentations are available online http://www.philkr.net/dl_class/), and assignments highlight interesting applications of DL (mostly with a focus on CV) and make use of SuperTuxKart (a racing game), which I found to be pretty cool (even as a person who doesn't play video games).
3. Assignment grading is automated via Canvas, so feedback on assignments is essentially immediate. Solutions are released after the assignments close, which is useful for figuring out what you did wrong or could improve for the next assignment.
4. Instructor and TAs were extremely responsive on Piazza and genuinely tried their best to help out.
Cons:
1. Taking this course in the summer semester might not be best if you intended to have plans for the summer since the abbreviated class schedule means that this course will likely take up most of your free time if you are working full time. I was able to tune the hyper parameters for my models and monitor training during the work day due to WFH from COVID, but I don't know that I would have been able to complete the assignments on time if I had to go into the office.
2. Assignments can be challenging if you don't have experience developing and tuning CV models, and the performance benchmarks you have to hit are difficult to achieve for later assignments. As someone without that sort of experience, I got really stressed when doing the assignments since it was difficult to disentangle whether failures were due to bad hyper parameters, under-training, bad model architecture or some combination of those issues.
3. Ideally, you probably need to be 1-2 weeks ahead of schedule in order to build up a buffer. The final project is extremely time-consuming (I was putting in 40 hours+ in the last 3 weeks or so) and may not pan out the way you'd hoped, so it would be best if you could build up enough extra credit to where your final grade is not jeopardized by your performance on the final project.
Overall Rating (5 / 5): ★★★★★
Professor Rating (0 / 5): ☆☆☆☆☆
Lecture Rating (0 / 5): ☆☆☆☆☆
Difficulty (2.9 / 5):
Workload: 10 hours/week
"Review at week 10, after assignments 1~5 were done
The content is 50% from the undergraduate classroom course (CS378) and 50% from the graduate classroom course(CS388), though both classroom courses do have a lot of overlapping. It contains the literature as late as 2020. Lectures are 80% about the theory and 20% about literature survey. Presentation is organized by topics and topics may not necessarily tightly connect to each other. Not all topics are equally important, especially in the aspect of assignments. It is an overall a survey course with some emphases on the most popular methods. Some example codes are provided as jumpstarters though they are not discussed in lectures.
The grade is completely assignment-based and the professor offered 15% extra credit (so 93 out of 115% to get A). With autograding and multiple chances to resubmit, you are quite sure what you can get. 4 (#1/2/4/final) assignments are taken from undegraduate course and 2 (#3/5) are from graduate course. Acutally these assignments were simplified with no write-ups required. Assignments are programmed in Python/Pytorch with some basic OOP skills needed. The implementation of Neural Network takes a significant percentage of the workload.
I took ML but not deeping learning previously. I can generally finish the assignments independently without further TA input. Full credit thresholds are not hard to reach with a few hyperparameter trials. Estimated time for 5 biweekly assignments except the final project is 10/10/20/10/15 hours.
Recommended for moderate difficulty, moderate workload, updated content and highly predictable outcome (Reviewer: SD)"
Overall Rating (5 / 5): ★★★★★
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (4.3 / 5):
Workload: 15 hours/week
Pros:
1.
2.
3.
Cons:
1.
2.
3.
Detailed Review: