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:
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (5 / 5): ★★★★★
Lecture Rating (4.6 / 5): ★★★★★
Difficulty (3.6 / 5):
Workload: 17 hours/week
Pros:
1. Nice book
2. Nice professor
3. You will learn a lot, and develop your solution skills
Cons:
1. Bad TAs
2. Exam gradings poorly weighted
3.
Detailed Review:
I took this class as one of my first classes in the master's, and I loved the content and the challenging way it motivated me to improve my math skills (Informatics Eng. major) and I have already seen part of this.
The only "good" TA solved some doubts and kindly helped us via edstream, but for example, in the first exam, it was not difficult at all. Still, they had the rubric as 6 points (excellent), 1 point (minor mistake), and 0 if the point was entirely wrong, which does not make sense a lot, because I (and some other students) did like 95% of the first and second points good, but only got a 1 instead of a 6 for a "mistake" that did not was a mistake because they "preferred" a way to show the results. Also in the first exam, one point was about a demonstration, but you must use the demonstration that the TA wanted, if you used another one you got 0 even if you ended up with the same solution.
The final exam was "easy", but we all got wrong a point. After discussing with other students we found the answer in a referred book that Professor Robert mentioned in the course. We found that it was the same as many students ended up with, and after showing the evidence to the TA he said that it did not make sense and gave us 2/10 points instead of 0/10.
Overall Rating (4.3 / 5): ★★★★☆
Professor Rating (3.6 / 5): ★★★★☆
Lecture Rating (3.6 / 5): ★★★★☆
Difficulty (2.9 / 5):
Workload: 10 hours/week
Pros:
1. Probability parts well organized and delivered
2. Statistics content is good in that it explains the tradeoffs between theoretical & simulation approaches
3. Teaching staff highly engaged in piazza
4. Student community was great
Cons:
1. Statistics parts could be organized better
2. Some administrative aspects still needed to be ironed out (mainly around grading). Given the responsiveness of the staff, this was not a big issue.
3.
Detailed Review:
Both Mary & Peter seemed quite invested in making the course successful. Peter's delivery was more structured and easy to follow (if you have the mathematical background). Mary's style was harder to follow IMO, but you could still tell that she has good insights that you should pay attention to.