Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (3.6 / 5):
Workload: 16 hours/week
Pros:
1. Exposure to a broad range of topics in ML
2. A few theoretical ML topics are covered (PAC-Learning)
3. Exams that challenge your understanding of the material
Cons:
1. Unevenness of homework difficulty/effort
2. Overly simple assignments in the 2nd half of the course
3. The course does not dive as deeply into the material as compared to other ML courses from top programs
Detailed Review:
This course will take you from a beginner-intermediate level of understanding in ML to an intermediate-advanced level. I would say a prerequisite is to already have an understanding of basic concepts in machine learning in order to get the most out of this course. In other words, I don't think it would serve as the best intro course into ML since a level of mathematical maturity is assumed and are very much required for the first few homeworks. The first two homeworks serve as weed-out assignments and are much, much more time consuming than the rest of the assignments in the course. Programming assignments are generally easier and help you develop a better understanding through implementations, however they do not ask you to go very deep in the material.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (4.3 / 5):
Workload: 20 hours/week
Pros:
1. Very interesting class - you'll learn a lot
2. Fun (but challenging) assignments
3. Good instructors and TAs
4. Local grader!
Cons:
1. Frustrating problems setting up PyTuxKart racing game
2. Handling of final project left much to be desired
3. Sometimes poor instructions for HW assignments
Detailed Review:
I really enjoyed this class. I liked the way it was structured and built on each homework assignment. That being said, the first 2 HW assignments were quite straightforward and then HW3 just about killed everyone. Then the next 2 built so heavily on HW3 they were a cakewalk.
The TAs were very helpful on Piazza, but I feel like office hours were not utilized enough. It's called an office HOUR and each session only lasted 30 minutes, so not everyone was able to get their questions answered each time. Piazza was swamped with students asking the same thing in different ways 20x for each assignment. I also think some of this could have been mitigated by clearer instructions for each homework.
The local grader was probably the best thing about this class and saved me a lot of time trying to figure out how the starter code worked. Discrepancies between the local grader and the Canvas grader were annoying, but not a deal breaker or grade destroyer.
The final project was the weakest part of the class. I thought the idea of it was really great, really fun, but the grader was obviously not designed to handle 70+ final projects from 200+ students. That created a lot of frustration when trying to submit our work early for results and feedback. The final project was also WAY more time consuming than originally advertised. It was supposed to be twice as long as the hardest assignment. The teams were also "strongly suggested" but should really have been required. I can't imaging completing that project on my own or even with a pair. I was in a group of 4 and we worked around the clock for about 2 weeks to finish the project. I lost a lot of sleep. We got it to work at the last mock tournament by some stroke of luck.
Last thing - don't take this over the summer if you value your sanity.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 10 hours/week
Pros:
1. Assignments are related to lectures to bolster concept understanding
2. Quizzes have pre-defined breadth and depth topics
3. Professor holds his own office hours
Cons:
1. Lectures can be very long at times
2. Output logs are not shown in Gradescope for last two assignments
Detailed Review:
PSRUU was a well put together class with an overview of planning AI and it's modern applications.
The teaching staff is very helpful for assignments and professor holds his own office hours as well.
The lectures can be long at times and be proof-heavy.
Assignments and quizzes are a breeze. Overall, a good class!
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (1.4 / 5):
Workload: 4.5 hours/week
Pros:
1. Lectures are easy to follow
2. Plenty of time for projects
3. Professor offers "grace days," which can be used to extend deadlines
Cons:
1. Lectures seem to drag on; could be shorter
2. Midterm had a few tricky/esoteric questions that didn't seem well covered in the material
3. Lectures cover too much material that isn't relevant to the projects; so the course is disconnected in that sense (similar to DL)
Detailed Review:
I only spent 4.5 hours / wk on average, so this is a great course to pair with another course if you have some prior experience with operating systems or the C programming language.
If you're wondering how to budget time, this was my breakdown per week:
- W0: 2.5 hours [Project1: reverse]
- W1: 1.75 hours [lectures]
- W2: 1.25 hours [Project1: wcat, wgrep, wzip, wunzip]
- W3: 1.5 hours [1 hour (Project2: setup, shell); 0.5 hour (Project1: cleanup and submission)]
- W4: 5.25 hours [3 hours (lectures); 0.25 (Project2: shell); 2 hours (Project2: syscall)]
- W5: 0 hours
- W6: 4.75 hours [Project2: shell)
- W7: 6 hours [5 hour (Project2: shell); 1 hour (Project2: syscall + submission)]
- W8: 8.25 hours [4.75 hours (lectures); 0.5 hour (quizzes); 1.75 hour (readings); 1.25 hours (midterm)]
- Spring Break: 11 hours [7.25 hours (Project3: null-pages); 2.75 hours (lectures); 1 hour (readings)]
- W9: 7.25 hours [7 hours (Project3: threads); 0.25 hour (Project3: submission)]
- W10: 0 hours
- W11: 1.5 hours (Project4: mmap part 4a)
- W12: 2 hours (Project4: report, misc., submission)
- W13: 0 hours
- W14: 9.5 hours [6.25 hours (lectures); 1.25 hours (readings); 1.5 hours (quizzes; final prep); 0.5 hour (final)]
- W15: 8.25 hours [7.75 hours (Project5); 0.5 hour (Project5: submission)
- W16: 0 hours
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (2.9 / 5):
Workload: 16 hours/week
Pros:
1. General knowledge about visualization, applicable to any graph in the future
2. Professor and TAs were very approachable
3. You learn by doing, while getting an A if you completed all assignments.
Cons:
1. Only one program: R, using ggplot
2. Some classmates had particular expectations about homework and projects, and could grade you based on them.
3. As discussions were mandatory to get a grade, some of them were not helpful or interesting at all.
Detailed Review:
Professor is really good explaining the topics. I even enjoyed some of the classes. He knows a lot about R and ggplot, and you can find information in internet as well.
To get good grades, need to follow instructions exactly. We did not have any midterm or final test.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 10 hours/week
Pros:
1. Approachable professor and TAs
2. Learned new things
3. Could drop the worst grades
4. Books were helpful
Cons:
1. Sometimes, a lot of workload
2.
3.
Detailed Review:
I enjoyed the class.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 8 hours/week
Pros:
1. Solid introduction if you haven’t had an undergrad PLs/compilers course
2. Projects build on each other and give you a working mental model of a simple compiler
3. Exams are fair and do a good job covering lecture material not touched by the projects
4. Prof. active in Ed discussions.
Cons:
1. Overall feels more like an advanced undergraduate course than a graduate class
2. Project 2 is disproportionately large compared to Projects 1 and 3
3. Advanced topics (GC, closures, richer scoping/inheritance) are mostly absent from hands-on assignments
Detailed Review:
This is a worthwhile course if you’ve never taken a compilers or programming languages class before, but it doesn’t really get into graduate-level PL or compiler topics.
The structure is simple: three programming assignments worth 60% of your grade, plus a midterm and final at 20% each.
The first programming assignment is a low-level string library for the SaM machine. It’s a nice, well-scoped warmup that introduces the target architecture and forces you to think carefully about stack discipline and calling conventions. The third assignment is also reasonable in size: you refactor and extend your compiler to add basic object-oriented support.
The second assignment, though, is the main event. You essentially build the core compiler for the course’s toy language, using your string library. It’s about twice as much work as the other two assignments combined and you’re largely on your own to design and plan the whole thing: AST structure, passes, overall architecture, etc. That level of autonomy is appropriate for a graduate course, but given the online format it might have been nicer if they split it into two graded pieces (for example: one focused on parsing and type checking, the other on code generation), with separate test harnesses. As it stands, you have a lot of time for each assignment, but the difficulty curve jumps sharply at Project 2.
On the theory side, the course covers the standard basics you’d expect: regular languages, context-free grammars, parsing, type systems, some runtime organization, etc. However, it doesn’t really dive into the hard or more modern issues you might hope for in a grad PL/compilers course—no in depth treatment of automatic memory management, lexical scoping or closures. The projects stop short of those topics as well.
The exams were fine: reasonable format, generous policies on when and how you can take them, and they did a good job testing lecture content that wasn’t directly exercised by the projects. If you follow the lectures and work through the provided practice material, you should be in good shape.
Overall, I’m glad I took the course. I came in without an undergraduate compilers/programming languages class, and this filled that gap nicely. If that’s your situation, this is a solid way to get hands-on experience writing a compiler and understanding the basics. If you already have that background and are looking for a deeper or more modern graduate treatment of PL or compilers, you may find yourself wishing the course went further into advanced topics.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (3.6 / 5):
Workload: 15 hours/week
Pros:
1. TAs are really helpful
2. Learning material is detailed and video are very well made
3. Professors are super nice and quick response for your questions/concerns
Cons:
1. Three tests in total
2. Matlab error sometimes confusing
3.
Detailed Review
If you've had some LA background this class will be easier for you, otherwise it would take you some time to catch up on those LAFF material background knowledge.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (4.3 / 5): ★★★★☆
Lecture Rating (4.3 / 5): ★★★★☆
Difficulty (1.4 / 5):
Workload: 7 hours/week
Pros:
1. Plenty of drop homeworks and quizzes
2. Very manageable workload, particularly during simulation
3.
Cons:
1. Math can be tricky if out of school for awhile
2.
3.
Detailed Review:
This was my first formal course work since completely undergrad nearly 9 years ago. I came from a chemical engineering background with no formal coursework in probability and only an applied stats course in undergrad. Overall I thought it was a great course. The probability section could be pretty tough at times though. However I felt like I am now much more comfortable with that subject matter now and feel more confident when seeing it in other courses or in textbooks/literature.
You need to be pretty comfortable with calculus (up to multivariable level) to complete the homework, quizzes, and exams. Definitely worth brushing up on that if it's been awhile since taking it. It also worth brushing up on some math notation like sets, logic, and proofs prior to taking this course, otherwise it will be difficult following the lectures in the probability sections. I recommend Book of Proof by Richard Hammack, which is freely available online. If you have both of these covered, you will likely be able to follow along the lectures and complete the homework without too many issues.
The homework, particularly the probability portions, can be challenging and take up a good deal of time. The work load does seem to ramp down as the semester progresses though. Some of the quizzes were pretty tough as well. I felt the two exams weren't too bad, but I know it did give some people some issues.
The simulation/stats sections were much easier than the probability sections. However the material present in these sections was still great and useful. The way the professor explains doing statistical test makes it much easier to understand what is really going on when generating things like confidence intervals, t-test, and p-values. That all seemed like blackboxes when learning it in undergrad.
Like someone else mentioned, don't let the reviews on this site mislead you too much. Nearly one-quarter of my class either dropped or got less than a B- (meaning they will have to retake the course and are likely on academic probation). But if you invest some time brushing up on calculus and mathematical notation ahead of time you'll likely do well in this course.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (5 / 5): ★★★★★
Difficulty (2.1 / 5):
Workload: 4 hours/week
Pros:
1.
2.
3.
Cons:
1.
2.
3.
Detailed Review: