wild-viper-3283
Lectures are relevant to assignments
Assignments are interesting (mostly C++, one Typescript, one Java)
There is an exam for the lessons not covered in assignments
5% extra credit from participation
Edited
• 3 Credit Hours
Key adjectives used by students — color intensity reflects sentiment
wild-viper-3283
Lectures are relevant to assignments
Assignments are interesting (mostly C++, one Typescript, one Java)
There is an exam for the lessons not covered in assignments
5% extra credit from participation
Edited
warm-panda-4734
Edited
warm-lynx-1466
I am not sure why the rating for this course is so low.
This course is super well organized -- the communication with the teaching staff is outstanding, and expectations are super clear.
The topic (optimization / programming with llvm) is sort of niche but very interesting. The lectures are good and tied directly to the course material. The labs are fun, but maybe not extremely applicable in the day-to-day -- nevertheless still useful knowledge to have.
Edited
witty-falcon-6970
The course is well-run and was a fantastic first course for me. The topics did not all feel very practical; some were clearly purely academic. However, the assignments were stimulating and I enjoyed them. I especially enjoyed getting a look under the hood at the kinds of static analysis your IDE does for you. The course is largely auto-graded on Gradescope with an Honorlock final.
Edited
eager-koala-7763
Edited
smart-ferret-1075
Edited
tranquil-jaguar-9768
Edited
cool-comet-5390
I really enjoyed this course. It was pretty low stakes as a first course. If you are looking to ease back into things if you haven't been a student in a bit, this might not be a bad option. It has some interesting/stimulating concepts and only requires a bit of coding.
Edited
warm-tiger-2479
I have written a separate post to review this course. Please feel free to view it here.
https://the11d.wordpress.com/2024/07/27/my-thoughts-on-sat-omscs-course-review-4/
TLDR - This is a great course. Not that challenging but not that easy either. This is between the light-medium range with a skew towards medium about. Knowing C++ and debugging is a must. LLVM knowledge can be learned throughout the course but prepare to spend more time on it.
Edited
honest-nebula-3649
Edited
I originally decided to take this course as an introduction to LLVM, as I'm planning to take the Compilers class in the future. The workload of the course is very manageable. Even if you don't have good time management skills, you should still be able to go through the lessons and do all the course assignments in a given weekend and still have some time left. You should expect to do around of ~7-12 hours of work per week.
I tracked how much time I spent in this class and the number ended up being close to the ~80 hour mark. This time was spent between lessons, quizzes, labs and the exam combined for the full course length. Now, I didn't track absolutely everything (some posts and contributions made on Ed for example) and I surely may have forgotten a time or two to start the timer, so take this number with a grain of salt.
As for the material itself, it was enjoyable. You get to learn on some of the static/dynamic analysis techniques that you see floating around on modern IDEs such as VSC, are incorporated into the languages themselves, are the backbone of industry-standard tools, etc. That being said, I feel like they are not going to be useful to you in the real world if you perform more "general" software engineering tasks.
If you are seeking a good C/C++ refresher, have interest in learning a little bit of LLVM or Software Analysis as a topic, go ahead. Some of the presented material is still very interesting and worth knowing, it's just that you may not actually have the opportunity to use it, at least not most of it.
Lots of the other reviews seem to complain about LLVM and C/C++... I don't think you're gonna make it in this program if you can't handle learning the very basic LLVM stuff you have to figure out to do well in this course.
This course was interesting - covered some good concepts on LLVM and testing. A good amount of it was more academic than practical, but it's interesting anyway. This is a good generalist systems course set at an easy-to-medium difficulty that will eat up about 1-2 days every other weekend.
Never take this course. Even if you consider it, absolutely avoid taking it within your first year at Georgia Tech OMSCS. This course will force you to work with a legacy version of LLVM Pass — specifically version 8 — for which documentation is sparse, and most of the books and materials available use much later versions, rendering them incompatible and largely useless for this course. You just have to rely on the sources that the instructor has given in the lab instructions to acquire LLVM Pass. There are no good tutorials provided within the course. It would be far better if the instructor included dedicated tutorial videos on Ed to help students learn LLVM Pass more effectively for the assignments.
The expectations for the labs are too high. Almost every lab leans too heavily on LLVM Pass with C++, making the assignments unnecessarily difficult and frustrating due to the lack of resources to self-teach LLVM Pass. Moreover, I wish the course could diversify the tools used across the labs. For example, in Lab 1, which focuses on fuzzing, it may be much better to use AFL++ with Java instead of forcing LLVM Pass with C++. Likewise, for Lab 2, it may be better to teach EvoSuite with Java so that students can learn deeply about automatic test suite generation. I think using LLVM Pass with C++ is still good for the other labs in which it has been used.
While it is good that there is no final exam, having only one midterm exam feels insufficient. A two-midterm structure would spread the pressure more evenly and offer better progress checkpoints throughout the course.
What is more, students may not be able to complete the assignments on time, especially in an online environment, because they have so many other things to do. While I agree that the students should get zero in these cases if they did not submit anything, the course instructor should change the grading policy so that the lowest two assignment scores are dropped for final grading. This would alleviate some of the stress and allow students to recover from occasional setbacks.
Overall, the course is somewhat well-designed, and the fundamentals you learn are indeed valuable. However, some of the content feels outdated, and the time investment required for each lab is disproportionately high compared to the actual learning outcome, and the grading policy is not flexible. Frankly, that time could be spent more productively elsewhere in the program (e.g. HPCA, AOS, SDCC).
I really enjoyed this course! The lessons and labs are interesting, and the teaching team/other students are really vocal on the Ed forum with questions and suggestions. I generally found the course flow very accommodating. I travel frequently for work, work full time, and had weekend plans often and didnt have to sacrifice much normal-life for this course. It was a great way to start school back up after undergrad.
There were definitely some frustrating moments and tricky concepts, but to me this course is certainly more good than bad!
Pros:
Cons:
This has to be the best-run/organized course in the program. Instructor and TAs are extremely helpful and available. Lab instructions and videos are clear. Lesson videos are a little dated, but still easy to understand and a good foundation for quizzes, midterm, and labs. The labs are, in my opinion, the best part of the course. They really build on the concepts taught and help give you a good feel for how the concepts may be used in real life - though, of course, in a simpler manner than most widescale implementations of testing/analysis techniques.
All labs and quizzes are after the drop deadline. The only true restriction on working ahead is the midterm, which was really closer to 35/40% of the way through the course. Great class to work ahead, whether in summer or a semester where you have other commitments/travel.
Great class, highly recommend. Especially if you want a course that both feels like you're learning something new and isn't too challenging. If you haven't used any C/C++, you could spend closer to 15-20 hours per week.