Recent Reviews

A Dynamic List of the 50 Most Recent Reviews

CS-7280

Network Science: Methods and Applications

Taken Spring 2023

Reviewed on 6/1/2023

Verified GT Email

Workload: 10 hr/wk
Difficulty: Neutral
Overall: Strongly Liked

This is my favorite class I've taken so far. The subject was very interesting, the lectures were good, the readings illustrative, the homeworks really have you applying what you've learned, the TA's are helpful, grading is from the TA's and they give good feedback, etc. The only two negatives I encountered were:

  1. The homework questions can be weird sometimes. I remember there was one question that was like, "Plot this graph. What is the p-value of the pearson coefficient?" and like, what pearson coefficient? In relation to what?? The TA's are quick to clear up any confusion in Ed though, so it's not really a solid negative.

  2. Grades can be pretty late. Understandable since the TA's grade it themselves, and I'd rather late grades than peer grades, but it does make it harder to apply what you learned in hw2 to hw3, because you don't know how you did in hw2 by the time hw3 is due.

Besides those 2 (honestly minor compared to the high quality of everything else) points, overall I loved this class and I highly recommend it if you're interested in networks.

CS-7639

Cyber Physical Design and Analysis

Taken Spring 2022

Reviewed on 5/19/2023

Workload: 7 hr/wk
Difficulty: Easy
Overall: Disliked

This was my 2nd course overall. I found that this one wasn't that great. It seemed mostly a waste of time.

The lectures weren't interesting. I found that after the first couple of weeks, I just stopped watching them. They don't relate to the homework or projects at all. It seems to be mostly examples of cyber-physical systems and designs. I would have preferred lectures that talked about the topics in depth, instead of just talking about examples.

The homework assignments were pretty basic. For someone coming from a mechanical engineering background, I am already familiar with matlab, and so the homework assignments at the beginning were pretty easy. They became more difficult at the end, but most of the time is just spent learning about the environment and background, not actually doing much work.

The projects were somewhat interesting. The first one was a bit of a learning curve to learn about the robotarium system, which is pretty cool. And then the second one was a more advanced version of project 1. I thought it was actually a lot of fun.

Project 3 is a different beast. It wasn't that challenging once you learn a little bit of AADL, but learning it was just annoying, because you know that most likely you won't have to use it ever again. I thought you could have learned the material without learning AADL. Overall, it just felt out of place.

Overall, I thought that the course was pretty easy. The projects take some time, but otherwise you don't really have to worry too much about spending time on the homework or course lectures. I would say that this is an easier class that you could pair with something more difficult. To me, this class just wasn't interesting enough to recommend. I don't really feel like I got anything out of it, but maybe your experience will be different.

MGT-6203

Data Analytics in Business

Taken Spring 2023

Reviewed on 5/11/2023

Verified GT Email

Workload: 6 hr/wk
Difficulty: Neutral
Overall: Neutral

Course isn't difficult by any means, most of the homework is in R and doesn't require anything too complex. The self-assessments all come directly from the lectures, with the exam questions coming directly from lectures and homework. For the group project, it's important to find people you feel like you can work with and who will share the load, but the grading on it is pretty lenient so as long as a decent effort is made, should get a decent grade on it. Some of the lecture sections were interesting (stocks, inventory management, advertisement ratings) others were very dull and just read off the slides. My biggest complaint was just the course didn't feel as tight and composed as other introductory courses such as ISYE 6501, quite a few errors on the homework solutions, informational exam posts not posted till day of exam, etc.

CSE-6040

Computing for Data Analysis: Methods and Tools

Taken Spring 2023

Reviewed on 5/11/2023

Verified GT Email

Workload: 8.5 hr/wk
Difficulty: Neutral
Overall: Liked

Overall I really enjoyed this class and thought it did a good job getting me more comfortable with python, and the different python packages associated with analytics as well as how to implement them. The difficulty of this class will depend a lot on prior experience with python and coding in general, if you have no prior coding experience and didn't take CS1301 or another python introduction class, you'll most likely struggle heavily. Otherwise, even though I didn't have much python experience besides CS1301, I was able to understand how to approach problems and just used google search to determine the best python syntax. For the homework, office hours, slack, and piazza are very helpful if you get stuck, and for the exams, studying prior exams is the best way to prepare.

CS-6310

Software Architecture and Design

Taken Spring 2023

Reviewed on 5/11/2023

Workload: 8 hr/wk
Difficulty: Easy
Overall: Disliked

Poorly designed class. TAs and Professor are there for most of it but one major flaw with the class is that the lectures do NOT line up with the assignments. The general ideas of the lectures are apparent in the assignments but the detailed minutiae that the assignments expect is not covered. There is a course textbook but even in there, some of the material is not readily available and you are at the mercy of TA’s releasing information on Ed Discussions. The lectures are connected to the quizzes and cover so much unnecessary information. Quizzes are primarily T/F and have two tries which, if left this way, quizzes will be an easy grade. The last two projects are team based. The requirements are vague and in our case, the assigned TA to help us define our group specific requirements was often not there. The final group project is coding based on a previous solo assignment in Java. It is reasonable but tedious.

Overall, I did not enjoy this course very much. The lectures are irrelevant and the projects are tedious. As for content that is actually learned, UML diagramming is really the only concept that is pushed. Other than that, if you have not used Java before, this course may be helpful if you wanted to learn. 

INTA-6450

Data Analytics and Security

Taken Spring 2023

Reviewed on 5/11/2023

Workload: 5 hr/wk
Difficulty: Easy
Overall: Strongly Disliked

I do not recommend this course. The course has lectures, quizzes, small coding assignments that require handful of line changes at most, and two large essays. The lectures are fine and informative. The quizzes are directly from the lectures and do not require honor lock so you can follow along while completing it. The coding assignments generally take less than 15 minutes for each one as most of them are “make one unique change to the code adding some new functionality”. You are allowed to make any change to it essentially.

There are two essays, one being a solo assignment and the other being a team project. As many of the other reviews state, your grade on any give assignment is completely dependent on the TA that grades you. Some hand out 100s without verifying the quality while some mark off points without specifying where. After the first essay grades were released, the TAs declared no form of regrade request but provided them on an individual basis for students that complained. Both essays are purely tedious the first having a 5-10 page requirement and the team essay have a requirement of 10-30 pages. The assignment requirements are succinct and vague, leading me to believe this is the equivalent of a creative writing course. I spoke with multiple other students who voiced similar concerns that there was not enough to write about since the requirements were so short so they were forced to include unnecessary details to hit the page requirement.

At the end of the course, they give a pretty significant curve to the extent that I believe very few students received a ‘C’ if any at all. I was given an arbitrarily lower grade on my first essay and with no regrade requests, I thought my chance at an ‘A’ was over but the curve pushed me up to one. Perhaps this is the experience that the teaching staff are trying to give to make it seem like a legitimate course - vague requirements, arbitrarily lowered grades, then a curve at the end to reassure students. Absolutely silly course that is simply busywork. Do not take it if you don’t have to. 

CS-6603

AI, Ethics, and Society

Taken Spring 2023

Reviewed on 5/11/2023

Workload: 12 hr/wk
Difficulty: Easy
Overall: Disliked

https://www.reddit.com/r/OMSCS/comments/11frnuo/cs_6603_ai_ethics_society_the_worst_course_ever/ Please read the above reddit post. Loosely, it summarizes my thoughts. The grading is the MOST lenient of any course I have taken in this program and I am 8 courses in. Sometimes I will leave portions of assignments half-finished on purpose if I do not believe I need that portion for my grade. I would often still get marks for it.

The lectures are fine and I enjoyed them quite a bit. The assignments on the other hand are pure tedium - I’ve had less than 200 lines of code be used for a 15+ page reports due to the copy and pasting of the code or plugging in of different values. The assignment instructions are vague, have grammatical errors, and required constant TA adjustment during the semester. The Taste try to be as helpful as possible and are great otherwise but I believe the amount of busywork could be cut down in this course with a higher emphasis on quality, not quantity.

ISYE-6669

Deterministic Optimization

Taken Fall 2021

Reviewed on 5/10/2023

Workload: 7 hr/wk
Difficulty: Hard
Overall: Liked

I believe the professor for this course has changed since I took it so take this with a grain of salt. This course was exam heavy with weekly homework assignments.

The type of questions were quite different with the exam testing concepts and math skills whereas the homework had more practical questions along with programming applications. Overall it is a very useful course that helps introduce concepts that are used in later classes. I certainly think it is more useful than the Simulation class which has limited applicability to discrete event systems

CS-6310

Software Architecture and Design

Taken Spring 2023

Reviewed on 5/9/2023

Workload: 8 hr/wk
Difficulty: Easy
Overall: Strongly Disliked

My background: Chemical engineering undergrad, self-taught/bootcamp, working as a software developer ~3 years experience.

Bluntly: This course was useless and pedantic. The lectures are a waste of time and the head TA is unhelpful. The quizzes are a joke and are free points; high scores can be achieved by not doing the reading or watching the lectures. The majority of the points are in the projects, which have long and hard to read descriptions (poorly written requirements, unclear expectations). The grading is spotty, and group members reported points docked in different areas in their personal assignments where others had not had points docked for similar design decisions. The projects do take a fair amount of work, especially the final project which had me up till 230AM on two occasions as its deadline neared. You learn in the projects in the same way you would learn in making a personal project (as you are writing and designing software), but in my opinion for a course to be considered worthwhile, it needs to go beyond the very baseline of learning. SAD was sad, the only reason the difficulty is not listed as the easiest is because of how cramped the project timelines are.

Expected grade: A (~94% going into final project, grades are not posted)

Would not recommend.

CS-7210

Distributed Computing

Taken Spring 2023

Reviewed on 5/7/2023

Workload: 25 hr/wk
Difficulty: Very Hard
Overall: Strongly Liked

About me: professional full stack developer with 7 YOE., married with a young child. Bachelor's was not in CS. Took DC as my 8th course. Prior relevant courses included GIOS, AOS, and SDCC.

Time Commitment: The course starts off fairly light. The first 2 projects can be knocked out in a weekend. You can easily get by with <10 hours per week until you get to project 3. Around project 4, I was averaging 20-25 hours a week and for project 5 it was closer to 30-35. This was to get all tests to pass for every project. Each project has a few tests that are very difficult to pass. This doesn't mean the tests are unfair. Distributed systems are hard.



I'm not going to go through the specifics of each project there are plenty of reviews that cover this topic well.

Spring 2021 is an outlier The class was radically changed based on the feedback from this first class. The professor and teaching staff are fairly open about how brutal that semester was. There is now more time to work on projects 4 & 5.

Search Tests are your friend This was one the best features of DSLabs. Search tests provide valuable information about what's incorrect about your implementation.

Start projects early Despite the reputation, many students wait too long to start the projects. Those that started late almost always ended up with the low scores.

Don't take this as your first class An alarming number of students were taking this or their first class or had no prior "hard" classes. I recommend taking at least GIOS or AOS prior to taking this class. It doesn't hurt to be over prepared like I was.

TA's were helpful, but don't expect hand holding I found the TAs to be responsive. Slack was fairly active with great discussion, but most students didn't really take advantage of this. There is light "hand holding" in this class. The TA's may suggest a high level strategy, but won't go beyond that.

CS-8803-O13

Quantum Computing

Taken Spring 2023

Reviewed on 5/5/2023

Workload: 10 hr/wk
Difficulty: Hard
Overall: Liked

Overall, this is a good class, but there are some bumps I do hope will be ironed out after it gets another semester or two. In terms of content, this class is a wonderful introduction to Quantum Computing. You learn the background of what exactly a qubit is and why it offers advantages in computing, work on assignments using a popular quantum computing simulation library, build out algorithms which take advantage of the qubit, study ways that errors are mitigated in quantum computing, and read up on important papers in the field. You should end this course with a great breadth of knowledge. Some of the assignments had weird wording or outright mistakes in them, but everything important was quickly corrected.

The difficulty will vary depending on your mathematical background. None of the math is too complicated, but the course's attempt at shoving an entire semester of linear algebra into one week is certainly one of its weaker aspects. For me, as somebody who has not taken a number of the college-level mathematics courses that many CompSci students have, this was a struggle. I was always able to get it in the programming assignments where I had infinite time, but some of the problems on the exams got me a bit thanks to the time limit. Overall, I would definitely say that the overall difficulty is on the harder side of OMSCS classes I have taken, but never unfairly so.

That does bring me to my biggest gripe, though. Ahead of the midterm, there was essentially no information released regarding what it would look like. This was especially unfortunate considering the natural substitute was questions from the textbook (which one TA even said could be a good idea), which ended up not really resembling the format of the exam at all. Not that doing them hurt you or anything, but it would have been helpful to know whether the exam was more math-y, required more recall from the lectures, required us to do the same computations as the programming assignments or different ones, required us to memorize each algorithm's steps or just know how to carry them out when spelled out for you, etc. In my opinion, as the second semester this course was being offered, releasing just a handful of sample questions from last semester would have gone a long way. With that said, I do stress that the midterm itself was ultimately a fair exam.

The TA's in this class were pretty good. They were very responsive on both Ed and Slack, and generally helpful when they could be. It was a bit of an interesting experience being able to scroll up and see what pretty much all of these TA's were saying last semester when they were students versus what they were saying now that they were in charge; definitely some whiplash seeing a TA make a sarcastic remark about students speculating about how a dropout rate could affect a curve, and then seeing that same TA as a student speculating about how the dropout rate affects the CIOS completion rate for extra credit.

I'd recommend the course overall; there are some key points that could be improved, but everything was ultimately fair and I learned a lot, in addition to simply being an interesting topic.

CS-6035

Introduction to Information Security

Taken Fall 2022

Reviewed on 5/5/2023

Workload: 5 hr/wk
Difficulty: Very Easy
Overall: Liked

My review doesn't have much to add - I'll double down on the person in Fall 2022 who reviewed each project. My experience was very similar. The C project took a lot of time but I enjoyed it a lot, I can see how folks get into CTF contests. It was interesting to learn about some of these topics, I don't plan to become a cybersecurity professional but I do feel it's good to have a decent understanding of each of the items covered. Agree my least favorite was the ML on CLaMP and that was the only one I didn't get an A, but I didn't try that hard for it.

I got an A in the course and didn't spend much time. If you want a low effort class and want to get familiar with various cybersecurity topics I enjoyed the course.

CS-7646

Machine Learning for Trading

Taken Spring 2023

Reviewed on 5/4/2023

Workload: 10 hr/wk
Difficulty: Neutral
Overall: Liked

This was my second course after IIS and I enjoyed this course. As someone with no ML background entering the program with the hope of getting a solid ML foundation it was a nice introduction to ML concepts. I have not yet taken the ML courses with tougher reviews (ML / DL / AI etc), but I suspect this was a nice introduction to those concepts. I feel I have a pretty good understanding of decision trees and linear regression, and surface level understanding of supervised learning in general. It was also cool to learn about RL and Q learning.

I will be getting an A and while I was never stressed about my grade, the course was far more time consuming than I anticipated based on the reviews. Coming out of this course I feel I:

  1. Gained a solid foundational understanding of some key ML concepts. I suspect it is not tremendously deep knowledge but I could sound intelligent in a conversation.
  2. Learned about stock indicators which was interesting but I don't feel will ever give me much value. I definitely plan to keep investing in index funds after this course.
  3. Went from medium to expert python ability.

I thought the course was interesting overall, the con I would say is I feel like the ratio of time I put in to the amount I learned is a bit off kilter. I suppose maybe an additional benefit was getting back into the groove of writing reports, it's not my favorite but I feel probably mentally ready to take ML which I know is very report based.

I would recommend this course to anyone who is in another specialization but wants to dabble in some ML knowledge without going for the more difficult ML courses, or anyone pursuing the ML specialty with no ML background. I also thought it was easy to get an A if you put the time in, but I would not recommend it as a "light load" course.

As an aside I thought the teaching staff was exceptional and clearly passionate on the topics and course delivery.

CS-6460

Educational Technology: Conceptual Foundations

Taken Spring 2023

Reviewed on 5/4/2023

Workload: 5 hr/wk
Difficulty: Very Easy
Overall: Strongly Liked

I liked this class a lot. There was a lot of research and a lot of freedom. It was interesting to see everyone's projects and how everything came together. The research component was something I loved. I'd recommend the class. The hardness of the class really depends on how complicated of a project you take on. There *is* a lot of initial writing up front.

The TA you get will make or break your experience.

CS-7637

Knowledge-Based Artificial Intelligence: Cognitive Systems

Taken Spring 2023

Reviewed on 5/4/2023

Workload: 10 hr/wk
Difficulty: Hard
Overall: Strongly Disliked

Bullshit class with subjectivity up the wazoo. TA's on a power trip. The assignments weren't terrible, but the grading rubric for the RPM reports was atrocious and the TA's were out for blood. Too much writing in this damn class. If it were less about the writing and more time coding that'd make for a better course. Why is it useful to sit and restate the shit I did for everyone else to see? What is this, grade school? I do that at work as do most of us working professionals taking the degree.

CS-6675

Advanced Internet Computing Systems and Applications

Taken Fall 2022

Reviewed on 4/16/2023

Workload: 15 hr/wk
Difficulty: Neutral
Overall: Liked

If you enjoy in knowing the theory behind it with absolutely zero coding, this would be the course. Its a lot of writing. You need to write a 8 pager about a topic literally every alternate week. And the week in between, there's a smaller writeup - check other reviews for the formats.

This is my first course in OMSCS, a perfect intro to the course. Me being from a non-CS background, I enjoyed the course very much. Many topics are new to me and I learned a lot. I'm 15 years in my career, and coding is not my day job, so I'm not particular about a coding class. It gives opportunity to learn the topic, and since you are to write a 8 pager, you are bound to read a lot of articles and in the process learn the topic really well. Actual workload just to know the stuff to finish off the paper would take around 10-15 hrs, but I took the opportunity to go through a lot of material, youtube videos (from other universities like stanford, harward, IIT) and it was very interesting to me.

Again, a lot of writing that you'll be tired if you're not interesting in reading/writing. If you're looking to implement somehting via this course, this is not for you. If you're thinking of gaining knowledge on systems design (for a typical interview), this is not the course for you. This is more like an intro to various diff technologies, so if you are curious to know the underlying working of the tech, then this is for you.

CS-6300

Software Development Process

Taken Spring 2023

Reviewed on 4/14/2023

Workload: 10 hr/wk
Difficulty: Neutral
Overall: Strongly Disliked

I do not like this course, Assignment 6 was the absolute worst with, most weightage, lack of material being given to understand and complete the assignment. Saying office hours are there to ask questions is not an acceptable excuse for not giving proper material to understand new concepts. I also have the problem with the grading and the TA especially, this Sinh person.

The course is easy if you know JAVA but it is made intentionally difficult and convoluted to reduce grades, etc.

CS-7637

Knowledge-Based Artificial Intelligence: Cognitive Systems

Taken Spring 2023

Reviewed on 4/12/2023

Verified GT Email

Workload: 15 hr/wk
Difficulty: Easy
Overall: Disliked

I just finished the final exam. It is open book/note/lecture/everything, but I realized how little I learned in this class.

Pros:

Everything is released right away. All assignments are online, so you can get started whenever you want (barring those assignments change for the next semester).

Professor is active in the forums but that should be the norm, not a pro.

Lots of graded assignments to cushion the blow if you do poorly on something.

Cons:

Lectures are just high level and hand wavy. Examples that are abstract to the point of being absurd. "Suppose a robot wants to buy a cup of coffee". This content has nothing to do with the mini-projects or RPM. MPs can almost be solved with a search algorithm (BFS), other MPs you can just hack something together.

You can get 70% performance on RPM with affine model, DPR/IPR hacks and a look up table. No reason to go beyond that since you'll lose only a couple points on your final grade.

80% is the average success rate for students on RPM performance, rarely anyone gets 100%. So your grade is penalized by virtue of tackling the problem. 80% performance should be 100% of that part of the grade.

Some of the homework questions were tangential and not with-in the scope of the class. But it is easy busy work to pad your grade, so maybe a pro.

Cognitive Science is just pseudo-philosophy. Unfortunately, this class is just that with a sprinkling of AI and not the other way around. KBAI feels like the underwater basket weaving of AI. Maybe interesting to think about (if that is your thing) but completely useless in the real world.

My $0.02:

This class failed since it didn't teach me anything. That is what I learned on the final exam. Just topics that you watch a video for, take some notes and you'll probably forget a week or two after the semester is done. I wish this class showed some actual application to the real world. How does KBAI tie into Chat GPT? Does Boston Dynamics implement KBAI into their robots? Those kinds of things.

I recommend checking out the course page and see if this is something of interest before you register. It is an easy class to get a B and fulfill the Interactive Intelligence specialization requirement, but kind of a waste of time when you could be learning something useful or that would apply to your future career.

I finished AI feeling like I had gained a bunch of new skills. KBAI has left me feeling like I should have taken ML instead.

CS-6035

Introduction to Information Security

Taken Spring 2023

Reviewed on 4/10/2023

Workload: 6 hr/wk
Difficulty: Neutral
Overall: Strongly Disliked

Wow. What a class. Took this alongside GIOS for my first semester in OMSCS and the quality of the courses couldn't be more different. This class has been a massive source of frustration and a waste of time, and I have not gained any meaningful knowledge out of it.

My main griefs with the courses:

1. Two weeks per project, no information released beforehand.

  • For some reason the TAs don't want to release information about projects ahead of time, even if students want to prepare (rightfully so) and gain background knowledge on the subject matter if they're missing it. This leads to possibly learning entire new skills and technologies all while trying to solve the projects. We all know cramming does not lead to any meaningful knowledge retention, and by the time the next project has released I've already forgetting everything I did. (TAs even threw out quotes like "this is basic ML this should be easy" when students were asked to fit and score models despite this being a cybersecurity course)

2. Extremely questionable quality of most of the projects.

  • This has been the most disappointing for me. This is a top institution that is supposed to have rigorous courses, yet I have been served content of similar quality at online community colleges such as Oakton. This is not a compliment.
  • Many projects had "resources" that consisted of a schizophrenic list of web page links (think medium blog posts) that were vaguely related to the subject but very rarely of any direct help. It truly feels like the TAs who make these projects rely on what they already know (usually being subject matter experts or people passionate about the subject), and then as an afterthought look for "acceptable" resources.

3. Threats of plagiarism and difficulty by obscurity

  • TAs throughout the course loved reminding students that all code should be their own, one project even going so far as to forcing you to write your own code and only reference pseudo-code (even for basic algorithms like square-root or next prime number). It's obvious why this is the case, when most of the projects were solved by using boilerplate code with very little room for personal code style.
  • While most of the TAs were very active, they were NOT very helpful. Since the projects are so surface level, the slightest bit of help could lead a student to an answer and this is apparently not wanted so all answers were given in the form of obscure riddles. A frequent occurrence in these projects was being mislead by vague instructions and being sent down a rabbit hole.

CS-7637

Knowledge-Based Artificial Intelligence: Cognitive Systems

Taken Spring 2023

Reviewed on 3/29/2023

Workload: 17 hr/wk
Difficulty: Easy
Overall: Strongly Disliked

I have to rant about KBAI to someone or I will lose my mind

I had to write a paper about what a sandwich is. How to play UNO using if-then statements. What free will is. What a joke is.

This class is a joke. Every homework is just busy work. Here's a great line from the prompt for home work 3:

As we all know, our appreciation for literature is only increased when we painstakingly tear it apart and analyze it like a chemical compound, so let’s do that here—and save pondering how to design an AI agent that can understand the sarcasm of that sentence for another day.

No! Professor, are you serious? No! I am in a Comp Sci program. I am a professional with a life. This isn't funny. This is you looking your student in the face and saying "im making you do unrelated busy work instead of what you came here for, and I'm going to laugh at you about it." This is every homework.

I hate this class. It makes the whole OMSCS program feel like a bad joke of an online school. I literally lost points today because a TA didn't like how I defined what a hotdog is. Are you kidding me? In a masters level grad program about computer science?

The first thing I ever programmed on my own was an if-then stupid little program to play blackjack. Turns out that was actually masters level work because Joyner was happy to assign an UNO if-then stupid little program as homework (and then call it an "AI agent" lol). This class is a literal insult to the intelligence of its students.

But at least we get cool AI based homeworks right?

NO. NO, YOU REALLY DONT.

For every assignment, you can just brute force your way to a perfect score, and what's more, that's usually the best way to do it. The lectures are full of stuff about AI that only gets applied when students drop buzzwords from lectures to try to satisfy TAs who want to see us "apply what we learned". In other words, replacing the word "class" with "frame" and "variable" with "slot". Boom, you can do AI now.

The TAs for this class have no business deciding if I defined free will sufficiently at a masters level. I have no business trying to do so at a masters level. I'm not here for philosophy, I super don't care what Joyner or his TAs feel about free will. Like, at all. And if they care what I think then they're even more bonkers than I thought. What even is this class?

I don't know. I'm never taking another Joyner class again.

CS-6200

Graduate Introduction to Operating Systems

Taken Fall 2022

Reviewed on 1/11/2023

Workload: 17 hr/wk
Difficulty: Very Hard
Overall: Strongly Liked

Background I am a fresh graduate coming into GIOS with little to no C or C++ experience. It was my first semester and I paired it up with IIS.

Review GIOS consist of 3 projects (named Projects 1, 3 and 4 for some reason). Project 1 was on client/server interaction with multithreading support, Project 3 built upon the content of project 1 with IPC mechanisms (shared memory, message queues). Project 4 was on gRPC.

In order of difficulty, I felt that project 4 was the easiest, followed by project 3, and the hardest is project 2. My advice is to read up and discuss on Slack and Piazza and to start the projects early. Working on the README alongside implementing the code helped to be clear.

The remainder of the module consists of a midterm and a final for the first half and the second half of the content. The final was non-cumulative. I found the tests to be fair although I was quite confused and tricked by the "select the wrong line of code" type of questions.

GIOS is a great module to start of OMSCS with, and I learnt a lot. It gave me a taste of how rigorous a module can be despite it being taught asynchronously.

Grade I ended the semester with a ~85% and got an A. I did not do as well for my midterms and finals (quite below average for my midterms and slightly above average for my finals). Being consistent with the projects helped to secure the A.

CS-6035

Introduction to Information Security

Taken Fall 2022

Reviewed on 1/11/2023

Workload: 5 hr/wk
Difficulty: Very Easy
Overall: Strongly Liked

Background I am a fresh graduate coming into IIS with no C experience (some Python, Java, JS which was helpful for some projects). It was my first semester and I paired it up with GIOS.

Review It was the first semester when IIS transitioned to purely projects based, with 7 projects across different security topics. The first project had extra credit and it was the only project which I found to be challenging. The other projects were not straightforward, but were relatively easier and still felt rewarding when completed.

IIS is a great survey module, and the responsive TAs helped with any queries on Slack and Ed. The content was interesting and informative about how some of the vulnerabilities work.

Grade I ended the semester with a 99% and got an A. The extra credit helped, as I dropped some marks on the quizzes and submissions that were manually graded. Most of the submissions were sent to an auto-grader which lets you know your score and you can keep retrying if your answer is wrong.

CS-6310

Software Architecture and Design

Taken Fall 2022

Reviewed on 1/10/2023

Workload: 2 hr/wk
Difficulty: Very Easy
Overall: Disliked

Completely useless if you are looking to learn anything. It's a fine class if you want an easy A you can coast through. The TAs are unresponsive at best and dismissive at worst. Unfortunately, it is in your best interest to argue for every point you can since the rubric is so wishy washy. The TAs grade differently than the rubric and every TA grades differently. Your grade in this class is partially determined by which TAs you get for assignments. The quizzes are a waste of time and most of your grade will be based on assignments that barely test your knowledge of design patterns. The bulk of the points come from Assignment 3 which is Java and barely has anything to do with design patterns, all other assignments relate to this one so make sure your solution is good. The course is also pitifully outdated (you will never create a UML sequence diagram again in your life). I didn't read a single lecture and (with a BS in CS) got a high A with minimal effort. Also, from personal experience - you can brute force the quizzes for the entire class in an afternoon or two.

CS-6750

Human-Computer Interaction

Taken Fall 2022

Reviewed on 1/10/2023

Workload: 8 hr/wk
Difficulty: Neutral
Overall: Strongly Liked

Great class, not too easy not too hard. This was my first OMSCS course and I was really impressed with the quality of the lecture videos. The TAs are also actually responsive as well which is nice. The open note exams aren't too bad but it depends on how good you are at control+f finding things in a ton of PDFs. Be prepared to write - a lot.

ISYE-6501

Introduction to Analytics Modeling

Taken Fall 2022

Reviewed on 1/9/2023

Verified GT Email

Workload: 11 hr/wk
Difficulty: Neutral
Overall: Liked

Pretty enjoyable course that offers a good introduction to analytics modeling and has engaging lectures and homework.

Since the exams are the biggest part of the grade, and the exams all come from lectures, taking your time viewing the lectures and taking good notes is probably my biggest recommendation to getting a good grade. I'd always take notes during the lectures and pause or replay more difficult sections of the lectures. Most likely those sections that seem the most difficult will be on the test. I was somewhat disappointed how little homework counted toward the grade since the homework can take awhile depending on your comfort with R, however all the homework tie back to the lectures so they do reinforce the concepts learned in the lectures.

Not a huge fan of the peer grading of the homework but all in all, graders were pretty lenient and felt on average it was pretty fair. If you ever find yourself struggling with the homework, Piazza and office hours are a must. The office hours before the homework is due will get you at least 50% of the way through the homework and cover all the important functions related to the homework.

CS-7641

Machine Learning

Taken Fall 2022

Reviewed on 1/8/2023

Workload: 22 hr/wk
Difficulty: Hard
Overall: Liked

I thought this was a great class and it doesn't deserve the criticism it often gets.

Lectures

I would rate the lectures as good but not amazing. I personally liked the back and forth between the Prof Isbell and Prof Littman. They try and introduce the concepts from the ground up and provide the intuition behind different algorithms. However sometimes this is a little hard to follow and feels quite non-linear. I did find the Mitchell textbook fairly useful though so would recommend that to get a more straightforward introduction of the topics.

Assignments

The coursework is 4 written assignments describing the outcomes of some experiments you ran (typically applying some algorithms to some data). They are open ended which I personally liked, and really force you to use your brain and think about what you are doing, and why you get the results you do. The assignments directly follow from the lectures, so you are made to really understand the material, which also translates nicely to the exams.

The assignments are a lot of work and probably why this class is considered one of the toughest in the program. They take a lot of time because you have to run lots of experiments. I did pretty well in them (96, 85, 94, 90). The key is pretty much exactly what the assignment descriptions say - look closely at your results and try and explain why they are happening. The 'why' is the crucial part. In many ways I see this as a class in data science. It is about creating hypotheses, running experiments and analysing results. I think lots of OMSCS students come from engineering backgrounds are used to building things (as opposed to analysing) and having their code auto-graded. This class is nothing like that and one reason I think some people tend to struggle.

Another common complaint is about the 'hidden rubric'. I partially agree with this. The open-endedness of the assignments does generate a lot of Qs, which leads to a lot of discussion and clarifications from the Head TA on Ed about approaches. This can be useful to monitor, however doing so takes a lot of time. If you're working full time and don't have hours to dedicate to scanning the OH threads on Ed, this may get frustrating.

However all that is actually required is i) read the assignment description and ii) watch the 15 mins overview at the beginning of the OH where all the requirements are outlined (take detailed notes!). If you only do these two things only, you should be okay and can probably block out the rest of the noise. For the most part I don't think the rubric is hidden and this is evidenced by students who do consistently well across all assignments. The key is to read the assignment description and listen to the OH carefully and do exactly what is described.

Something I really liked is that the assignments are marked by TAs. In other 'analysis' type classes this is often done through peer review which often ends up being a bit meaningless. You get detailed feedback and can use this to improve over time.

Exams

While the assignments test your empirical skills, the exams test your understanding of the theory. I did a lot worse on these (52, 53.5) though these were still around average for the class. I think the key thing here is to make sure you understand the lectures and the answers to all the quizzes. I sometimes see people recommend that you brush up on maths (stats, linear algebra etc) before this class but the maths is fairly minimal. Sure there are some equations, but neither the exams or the assignments require you to remember or really understand these.

Summary

Overall in terms of learning this is easily the best course I've taken in OMSCS so far, and the course design I think is excellent. I would absolutely recommend it to anyone who wants to work in ML.

Having said that, it is also a lot of work and quite stressful. If you're a computing systems person who just wants a peek into ML it's probably more stress than necessary and I would recommend ML4T or IAM instead.

If you do take the class my advice would be to start the assignments early and engage on Ed / Slack. If you do this and follow the instructions from the professor and Head TA you should be fine (the curve is real after all!).

CS-6750

Human-Computer Interaction

Taken Fall 2022

Reviewed on 1/7/2023

Workload: 7 hr/wk
Difficulty: Easy
Overall: Liked

CS-6795

Introduction to Cognitive Science

Taken Fall 2022

Reviewed on 1/5/2023

Workload: 6 hr/wk
Difficulty: Very Easy
Overall: Neutral

This is a philosophy meet neuro-biology meet cognitive science history class. I enjoyed learning about the debates between the empiricist and symbolists. How David Marr's tri-level hypothesis in his 1982 seminal book Vision paved the ground work for Computer Vision. I had no idea that neural network came from connectionism school back in the 70s. Additionally, Alan Newell and Simon Herbert's work on means-end analysis and physical symbol systems hypothesis were crucial for the early research work in AI. What should be the new Turning test be?

Overall, this is a fun class where you get to read old and new papers, how old school AI was, how brain works (mirror neuron anyone?), and exploration of theories by the well known Cognitive Scientists.

The workload is super chilled. I usually spent Sundays doing the homework during the weeks they were due. The weekly quiizzes are open book, multiple tries so easy to get full marks. The assignments are graded very leniently. The final project is open ended research exploration. Just an overall fun and easy class where you get to learn a lot of interesting things. The teaching staff is great and Irene does an awesome job running the ship as always!

Like most OMSCS classes, the instructor on record was completely MIA. Professor Goel did not teach this semester which is unfortunate because I really enjoyed taking KBAI with him.

CS-6035

Introduction to Information Security

Taken Fall 2022

Reviewed on 1/4/2023

Verified GT Email

Workload: 10 hr/wk
Difficulty: Easy
Overall: Liked

Background

As of course start, I had around 1.5-going-on-2 years of experience working as a professional software engineer, specifically doing web applications (full-stack React + .NET & Node.js). My previous degree was in Engineering (non-CE/non-EE) from early 2010s.

Prior to this course, I took CS 6200 (GIOS) in Fall 2021. I am in the computing systems track of OMSCS.

Logistics

As of Fall 2022, the course format was changed, such that 100% of the grade is comprised of 7 projects, with no formal quizzes or exams involved. Accordingly, there was no assigned course textbook, and the lectures were not required watching (i.e., de facto "deprecated," though still available for reference).

Each project is completed in a two-week window, and are not released in advance. Regarding the subject matter and technologies involved, the projects can be summarized as follows:

ProjectDirectly used in assignmentInteracted with via provided app, backend, etc.SubmissionUses VM?*
CTFPython via pwntools libraryC, x86 (disassembled compiled C programs)JSON file containing student-unique generated hashesY
log4shellJava, cURL (or equivalent, e.g., Postman)REST API endpointsJSON file containing student-unique generated hashesY
malware analysis(part 1) reading Joe Sandbox logs; (part 2) config file for malheur (Python-based malware library, but no Python programming involved here)training & testing sets, and corresponding malheur command-line interface(part 1) quiz questions; (part 2) config fileY
ML on CLAMPPython via numpy and scikit-learn (Jupyter notebook provided as Google colab, or alternatively can download and use locally)training & testing sets(part 1) Jupyter notebook; (part 2) quiz questions on scikit-learn and ML conceptsN
RSAPython (boilerplate/starter files and local unit tests provided)N/AJSON file containing student-unique generated hashesN
main-in-the-middleWireshark for packets analysisstatic PCAP file provided for analysisN/AN
Web securityHTML & JSPHP (generates sites, and examined/analyzed for vulnerabilities)HTML source filesY

*Note: If VM is required/Y, you must have an x86 machine available. The underlying VM technology generally does not support Apple Silicon (M1) / ARM chips currently as of this writing.

Slack and Ed are helpful for discussing and getting unblocked, and will likely be your main resources for this purpose.

My final grade was around 94% (A). The course uses a 10-point scale / no curving (i.e., 90-100% A, 80-89.9999% B, etc.).

Overall

Pretty solid course overall. It's a useful introduction to a broad array of tools and skills which will be handy in other courses.

Workload-wise, there was considerable variation in the requirements across the projects, which is heavily dependent on your particular background going into the course. In my case, I was relatively lacking in the ML area, so malware analysis part 2 (dealing with malheur) and ML on CLAMP were particularly uninspiring to me, but I do still see the relevance here, in terms of using ML techniques to detect malware, so objectively speaking it is sensible to include these in the course (at least in my own opinion), despite both being relatively "critically panned" based on discussions, comments, and such.

Workload-wise, I didn't track hours exactly, so an average of 10 hr/wk is a rough estimate for me. For an "average" student like me, most likely some projects will be easy, some will be medium, and some will be challenging. Accordingly, for a few I was done within the first few days of release and essentially "free" for the remaining 1-1.5 weeks, but for others it took me nearly the full 2 weeks to complete. I generally recommend to start early and often either way (i.e., better to finish early than late).

With the caveat that my particular background is in web apps and also having familiarity with C and assembly from prior coursework, on a per-project basis, for me personally these worked out roughly as follows:

  • CTF (hard) - this one took me the full two weeks, mostly from the various sub-parts involved, and getting familiar with using pwntools, but very interesting/rewarding project to complete
  • log4shell (easy) - there were a few tricky parts, but since I was familiar with REST APIs going in, I finished this one relatively quickly within the first week
  • malware analysis (med) - the reports analysis was a bit tedious, and the malheur config took some trial and error, but otherwise this one was more "busy" than "hard" per se, and took me about 1 week to wrap up
  • ML on CLAMP (med/hard) - this one was my least favorite (but I'm biased here, being least familiar with ML of all of the prereq/background knowledge), and felt a bit tedious, especially the part 2 quiz component regarding scikit-learn & ML, but otherwise the boilerplate is set up pretty straightforwardly, and the project TA gave enough starting instructions to get up to at least 60% on the Jupyter notebook reasonably simply; I spent about 1.5 weeks on this, but ended up quitting after a certain point of progress, and this was my lowest project grade accordingly (the only one I scored below 80% on)
  • RSA (med) - this one was fun for me, it was nice to get better acquainted with RSA and cryptography concepts, as well as doing implementations; this one took me about 1.5 weeks, as the later parts had some "trickiness" to figure out properly
  • MITM (easy) - this one was very easy for me, I was able to finish it the same day as release; I had no prior experience with Wireshark but was familiar with the subject matter from my web background, so this mainly just involved filtering the packets to drill down to the specific answers buried in the PCAP file
  • Web security (easy/med) - this one was pretty much my wheelhouse being a web app developer myself, so I was able to finish this one relatively quickly within the first 3-4 days of release, but the last couple of exploits/attacks were fairly tricky, and I can definitely see how someone who is less familiar with this subject matter could struggle with this project (as was evident in Slack and Ed accordingly)

For reference, I generally worked around 2-3 hrs/day in the evenings on workdays, and around 5-10 hrs per weekend, for rough benchmarking relatively to the "full 2 weeks" completion period. Of all the projects, for me, CTF was the only one that required consistent work through the full two weeks and both weekends, otherwise for the others I averaged somewhere around 4-6 days worth of work at this pace.

My main critique of the course is that I wish the lectures were still incorporated somehow. I watched a few of the first ones in the beginning, but stopped since they were not directly relevant to the projects. But the subject matter of the videos is still useful, and I even earmarked a few to review later when I have the time to go back and watch. I think adding a 5-10% grade component (e.g., mini-quizzes, or equivalent) to incentivize covering the lectures would still be sensible here from a pedagogical standpoint, in terms of learning the core subject matter of information security (i.e., terminology, concepts, etc.).

MGT-6311

Digital Marketing

Taken Fall 2021

Reviewed on 1/2/2023

Workload: 4 hr/wk
Difficulty: Easy
Overall: Strongly Liked

Excellent coursework and learnt digital marketing strategy. Professor Michael Buchanan is very engaging in weekly Wednesday meetings. I will highly recommend this course.

CS-6603

AI, Ethics, and Society

Taken Fall 2022

Reviewed on 12/28/2022

Workload: 7 hr/wk
Difficulty: Easy
Overall: Liked

CS-7638

Artificial Intelligence Techniques for Robotics

Taken Fall 2022

Reviewed on 12/22/2022

Workload: 12 hr/wk
Difficulty: Hard
Overall: Strongly Liked

This was honestly my favorite class, it is so cool and you get to actually see your "robots" at work Check out what it's like from a student perspective here, in this 5 min review https://youtu.be/2dzL429aiT0

CS-6200

Graduate Introduction to Operating Systems

Taken Fall 2022

Reviewed on 12/22/2022

Workload: 20 hr/wk
Difficulty: Very Hard
Overall: Liked

I learned a lot in this class but found it very difficult. I am self-taught in Python and have a math background so learning C (and even more so the infrastructure surrounding C, like how do I run two processes at the same time) was a huge time burden. I ended up with an A but worked very hard for it. Would recommend a strong foundation in C before taking this course. Project descriptions / starter code are not well thought out. Midterm and Final were fair given the provided review materials and the grading scale is a bit lenient (I got an A with an 87%).

ISYE-6740

Computational Data Analysis: Learning, Mining, and Computation

Taken Fall 2022

Reviewed on 12/22/2022

Verified GT Email

Workload: 12 hr/wk
Difficulty: Hard
Overall: Strongly Liked

This has definitely been one of the best courses I have taken in OMSA. Prof X does a fantastic job of teaching and bringing about engagement. For people that are rusty on their calculus, this class could be difficult. There are quite a few calculations of taking partial derivatives and using the chain rule. The project at the end had no real comments to help you learn from which was disappointing. Each homework was very engaging and made you think. I also liked the structure of not having exams.

CSE-6242

Data and Visual Analytics

Taken Fall 2022

Reviewed on 12/22/2022

Workload: 15 hr/wk
Difficulty: Very Hard
Overall: Liked

I only have 2 complaints about the course. First is the focus on D3 instead of using more libraries and visualization tools. The second is that there are no functioning examples provided after homework has been complete. This makes it hard for students to see places to improve or correct mistakes if they failed to complete an assignment fully.

Overall I liked this course and feel like it was helpful to help with learning enough about tools quickly, dealing with some ambiguity in assignments, and dealing with balancing trying to do something "right" versus just getting it done. I do not have a strong coding/CS background and that was evident when working on this class. It highlights the need to learn to properly debug and structure code to be more easily updated. Also, I like the project and homework approach instead of having exams.

ISYE-6740

Computational Data Analysis: Learning, Mining, and Computation

Taken Fall 2022

Reviewed on 12/22/2022

Verified GT Email

Workload: 15 hr/wk
Difficulty: Very Hard
Overall: Liked

I learned more analytical techniques than I expected, and I became familiar with employing them in Python. I expect that I'll return to the lessons - whether via notes or in my mind - over and over in my career. A minority opinion: I think that I would retain the material better if there were an exam or two. My main criticism is that there's no way to learn from mistakes on the final project since no comments are given. Overall, though, this class was well worth the effort.

ISYE-6644

Simulation and Modeling for Engineering and Science

Taken Fall 2022

Reviewed on 12/21/2022

Workload: 8 hr/wk
Difficulty: Neutral
Overall: Strongly Liked

In short, the course is just amazing. Dr. Goldsman is great. TA's are supportive and responsive. You will even see Dr. Goldsman answers some of the questions on Piazza by himself.

Pros:

  • The course is self-contained. Most -if not all- of the needed calculus and probability material are included in course material in an organized manner.
  • The course is well organized.
  • Course projects are a unique opportunity to learn a lot more if utilized properly and if you have a good team.

Cons:

  • I think the course should have more Arena. Arena is the simulation software used in the course.
  • The last two modules are -in my opinion- pretty compressed.

My Recommendations:

  • Start early. There is lots of work. The more early you start the more time you have to digest material. You will need that.
  • Choose your project team carefully and early. Personally, I learned a lot from my teammate. We were of different backgrounds and we exchanged a lot of ideas.
  • Participate in class forum (Piazza). You will learn a lot from your class mates.

ISYE-6501

Introduction to Analytics Modeling

Taken Fall 2022

Reviewed on 12/21/2022

Workload: 10 hr/wk
Difficulty: Neutral
Overall: Liked

This course provides a great overview of many different analytical concepts. Joel Sokol's lectures are bite-sized and easy to follow & understand.

All the homeworks except the last 3 were pretty much guided by the TAs office hours, so you don't need much grasp of R, although it'd be better in the long run to research concepts on your own outside of what the TAs give you for future courses. As mentioned, the last 3 homeworks weren't guided by TAs and they were a different style from the rest. These homeworks really test your knowledge and I think give you the most value out of them all.

There are a couple issues/thoughts I had on the course:

  1. The exams can be hard to understand. English is my native language and I had to spend a few extra minutes on some questions each exam to understand what they were asking. It doesn't break the class but you just have to be more careful on exams.
  2. There's only 1 project. I think projects are a great way to expand and apply your knowledge and could probably be more of them instead of some of the homeworks.

Overall the course was a great experience and I learned tons of concepts. It's enough content to start applying to jobs if you really wanted to. Also, take advantage of Piazza discussion and the Slack, because that's where you'll meet all the students and learn a lot from each other.

CSE-6242

Data and Visual Analytics

Taken Fall 2022

Reviewed on 12/21/2022

Workload: 20 hr/wk
Difficulty: Very Hard
Overall: Disliked

ISYE-6501

Introduction to Analytics Modeling

Taken Fall 2022

Reviewed on 12/21/2022

Workload: 11 hr/wk
Difficulty: Neutral
Overall: Liked

This course is set up pretty well. The course makes logical sense in terms of when and where you are exposed to material. The homeworks and regular and consistent but the grading is done by your peers and its only like playing Russian roulette if you want to go for that 100. My advice, do not put in that 3 hours of effort just for that extra 10 points... Most of your grade comes from the Test. Speaking of which, the test are worded in the most absolutely dog shit, maybe as much as humanely possible. The questions are so poorly worded that if someone asked a question like that at your work you'd fire them on the spot. Like ask anyone in the slack channel, the wording on the questions are awful. It honestly feels like if they asked concise and easy to understand questions everyone would do to well since the course is not difficult so they have to intentionally come up with hard questions to ask and they have to use awkward phrasing in order to make these hard questions "work". I do not think they are trying to trick you on purpose just that they want to differentiate between those who put in 3 hours of study time to get a sub 88 and those who put in 9+ to get 90+ and the only way to do that is too ask really ambiguous and loaded questions with lots of moving parts. Overall, the content of the course is great. It's a required course but I would still recommend to all.

MGT-6203

Data Analytics in Business

Taken Fall 2022

Reviewed on 12/21/2022

Workload: 4 hr/wk
Difficulty: Easy
Overall: Disliked

Ngl, the course kinda sucks. Like its basic and does not feel worthwhile learning. I would never take this course if I was not required to, let's put it that way. It's not hard to make an A in the class. However, I found myself not wanting to do any of the homework and or watch the lectures just out of complete and utter lack of interest in the material. It's something that you be aware of if you have a more analytical background. Its not a lot of work, but just be careful to let your apathy get you in trouble and fall behind on the course.

ISYE-6644

Simulation and Modeling for Engineering and Science

Taken Fall 2022

Reviewed on 12/21/2022

Workload: 10 hr/wk
Difficulty: Neutral
Overall: Strongly Liked

This class is the best class ever. Not for the content perse but because Dr. Goldsman is amazing. You can tell he really cares about his class, he tells tons of jokes, and he takes care of ya. If you show up, do the bare minimum like the homework and study you will most likely walk away with at least B since he knows the material can be difficult. I highly recommend the course to anyone. A protip, spend a lot of time with the homework and get started on the lectures nice and early. Rewatch the lectures that correspond to the homework to really make sure that information is absorbed and committed to memory .

CS-6457

Video Game Design and Programming

Taken Fall 2022

Reviewed on 12/19/2022

Workload: 10 hr/wk
Difficulty: Neutral
Overall: Neutral

Honestly, I thought this class would be better than what it was, but I still learned a lot.

Make sure your nitpick your individual milestones because it is impossible to argue for a regrade when it comes to your assignments even if your have a TA that doesn't know their ass from their elbow.

You can also get majorly fucked over by the person overseeing your team project grade because they're overly harsh with their grading and they put your grades for your project below the median of everyone else's consistently, even though you're trying your ass off and putting in 20s hours of work at times into your video game. It is truly mindboggling how your grade is down to the subjectivity of the person who is supposed to be guiding your game in a good direction. We received like zero help from this guy.

Your teammates can really make or break your experience. My teammates were decent, but they were disappointing in a lot of ways - not really as software engineers but as human beings who you would expect to act with a certain level of maturity and professionalism. It is mindboggling the level of micromanaging that can come through at points and the hypocrisy after alpha submission.

I learned a lot about making a video game and about Unity overall. The quizzes were a pointless exercise and penalized you severely for not picking up some random mention in the video material of x or y. I had to scrub the videos to find the places where it would be mentioned in voice because the slides they posted were not helpful in answering the questions.

Feel like it's utter BS that I'm walking away with a B in this class (close to an A). At this point, trying my ass off for the final project only resulted in an increase of 2 points above our alpha score (which our alpha grade was terrible). I regret putting in hundreds of hours of work to make our final project as best as possible, even up until the very end. I also regret actually going through the material for the quizzes and trying hard because if I had done shit on either of these to begin with I still would've walked away with a B still. I shouldn't feel like I should regret putting in effort. That's kind of a crappy lesson to take away from a class.

CS-7641

Machine Learning

Taken Fall 2022

Reviewed on 12/19/2022

Workload: 30 hr/wk
Difficulty: Very Hard
Overall: Strongly Liked

This is a great course that focuses on both the theory and practical aspects of ML. Littman and Isbell do a great job covering the various topics in the lectures while clearly presenting the intuition behind algorithms. For assignments, you must at least watch the overview of each assignment presented in office hours even if you do not have time to watch all of it - it is hardly 15 minutes per assignment but will be make a big difference in the score you get for each assignment. I was able to get 100/100 on all four assignments and would suggest to structure your analysis as per what Dan (the TA) suggests in the OH - you will get high marks if you try to be inquisitive with the results and try to intuitively justify the observed behavior of algorithms, while also trying to compare and contrast the behavior of various algorithms across various problems (for example, for A1, why does K-NN have a low bias but high variance, but SVM has both low bias and low variance; why does NN perform best on 2nd dataset but all algorithms do well on 1st dataset for A1; etc.).

A1 and A3 use sklearn; A2 uses mlrose-hiive and you will need to look at the source code on GitHub since it is not well documented and you will likely have to modify it to suit your plotting/graphing requirements; A4 uses mdptoolbox-hiive and will need to be looked at on GitHub because of similar reasons.

I would suggest to definitely use Breast Cancer Wisconsin dataset as one of your datasets since it is very simple but provides great room for meaningful analysis across first three assignments; For second dataset, I chose Steel-Plates-Fault dataset since it has more than 2 classes and is slightly larger than 1st dataset; Be very careful and make sure what you will get yourself into if you choose a dataset with categorical attributes or some unstructured data like text or image - my advice would be to only choose tabular data with all continuous attributes. For MDP, you should likely choose Frozen-Lake - other choices are BlackJack, Forest Management, RiverSwim, etc.

Kaggle is great for running assignments since it automatically allows to backup the code, create versions, not much installation issues, and also run the entire notebook in the background without keeping your laptop screen on - this is simply awesome and I would urge to definitely use Kaggle to sidestep a lot of issues that hamper productivity.

I would suggest to use Latex IEEE template for reports since it allows to easily fit a lot into 10/12 page limit and looks very systematic, especially considering that you will have at least around 15-20 figures/tables per report.

For the exams, I found lectures to be sufficient (i.e., readings and textbook were not very useful) - make good notes from the beginning, and you will feel easier during exam preparation since there are a lot of concepts involved for both exams. Mid-term is like a sprint and will require you to have the concepts on your fingertips to even stand a chance of doing some justice to all questions. Finals are like a marathon and have much more time, although the level of difficulty does not change at all.

In all, do not fret too much about scores in this course since it is heavily curved at the end but instead focus on the learning outcomes and try to gather all you can from this excellent course (since you will probably not find another such course that is so much into "analysis" in your entire lifetime, let alone in OMSCS).

CS-6601

Artificial Intelligence

Taken Fall 2022

Reviewed on 12/17/2022

Workload: 20 hr/wk
Difficulty: Hard
Overall: Strongly Liked

Overall

This course is a survey of AI topics including search, game playing, Bayesian networks, machine learning, planning and optimization, hidden markov models, and others. It is interesting and also pretty challenging. The organization of the course could use some improvement. Lecture quality is ok, the book is good but dense and difficult to understand all the math if you don't have a strong math background, and the projects are pretty good.

My background is I'm a recent career switcher to data engineering (1 year of experience) and come from an analytics background. I hadn't taken a math class for 15+ years prior to getting ready for OMSCS. Preparing for OMSCS, I took Discrete Math at community college, and self-studied calculus 1 and linear algebra. The more math background you have the better your learning will be.

Projects

You can drop your lowest score out of 6 projects. There are times when you can pass all tests locally but will not pass all of Gradescope. This is not unique to AI, and other courses have this characteristic.

  • Search (difficulty 9/10, my score 85): You use uniform cost search (Djikstra's) and A* to find the shortest path between points on a map. The difficulty increases with doing this in a bidirectional and then tridirectional way. This is the first project in OMSCS where despite putting in many additional hours, I could not push my score up.
  • Game Playing (difficulty 8/10, my score 95): Use minimax and alphabeta pruning techniques on a game called isolation. I was not able to beat Peter's agent for the last 5 points.
  • Bayes Nets (difficulty 5/10, my score 100): Create a Bayesian network using conditional probabilities provided in a table. Calculate conditional probabilities for various scenarios. Use Gibbs sampling and Metropolis Hastings sampling algorithms. You get a maximum of 5 submission attempts.
  • Decision Trees (difficulty 6/10, my score 100): Use decision trees and random forests to find convergence on classification problem. This topic was interesting and fun to me. However, the Gradescope implementation is testing you on something hidden without telling you. I spent some hours on figuring out what this was, and in the end, it wasn't some major change to my code. If the instructions simply laid out certain kinds of cases to think about, it would have saved me several hours of tweaking where I learned nothing additional.
  • Expectation Maximization (difficulty 8/10, my score 100): This project is heavy on linear algebra. You need to know dot products, inverses, determinants, and other matrix knowledge. You also need to use vectorized numpy functions. I found this project to be the most conceptually difficult.
  • Hidden Markov Models (difficulty 5/10, my score 100): Create HMM's and use the Viterbi algorithm to determine the most likely outcome given some evidence. There is a limit of 10 submission attempts.

Each of my above scores was the median during my semester. One of the issues with the projects is on some of them I scored well, but I still didn't fully understand how or why it worked. You are provided some formulas or algorithms sometimes and you just need to implement them.

Lectures

The production quality isn't at the top level of the best OMSCS courses. However, I like that Peter Norvig and Sebastian Thrun did a good portion of the lectures in addition to Thad Starner. The main gripe with the lectures is they oftentimes aren't enough to get you through a project or test. You need to supplement with outside resources.

Tests

The midterm is worth 15% and the final is worth 20%. Each is a week-long take home test with open book, lectures, and other class materials. These tests are unique in that they force the student to review all the material which helps to reinforce the concepts. I liked that I did gain more knowledge from this, but I didn't like the process. The midterm was 45 pages and the final was 60 pages. It's just a long slog to get through them, and I took days off work to do them.

CSE-6242

Data and Visual Analytics

Taken Fall 2022

Reviewed on 12/16/2022

Workload: 12 hr/wk
Difficulty: Easy
Overall: Strongly Disliked

Easily the worst course I have taken in OMSA. There is not teaching and no learning involved in this, you have to self-learn enough D3/python to pass the autograde and then hope you are in a decent enough group to get points for the project. Lessons are useless, and they DO NOT release solutions to the homework, because that would be a useful learning opportunity and we don't want to risk that in this course. So you go to stack overflow, try to game the autograder to give you enough points, but there is no way to learn the things you missed, or what other approach you would have taken, or anything like that. It's "here's a bunch of stuff you've never seen, google enough to get some points and then move on to the next bunch of untaught stuff". Just a joke.

If you soldier through the first two homework you will very likely get an A, grading is generous and there are enough bonus points here and there to really make it easy. Workload is very uneven, the first two homework can easily take you 30+ hours, and then you will have a week where you don't have to do almost anything. Workload in the project is really dependent on you, not much is required to get through, but of course you can put as many hours as you like if you find something interesting and enjoyable. Finding a good group is quite important, I am happy to have found one that made this mess of a course more palatable.

CS-7637

Knowledge-Based Artificial Intelligence: Cognitive Systems

Taken Fall 2022

Reviewed on 12/16/2022

Workload: 15 hr/wk
Difficulty: Hard
Overall: Strongly Liked

KBAI was one of the best courses I've ever taken, and I highly recommend it for anyone who REALLY wants to learn how to think differently about complex problems (both in AI but also in a general technical atmosphere). Let me list the pros and cons below.


# Pros:

• You learn a LOT. From the moment you enter the class to the day you leave, you are constantly learning about the parallels in how humans think and how we can mimic AI machines to think like us! Very fascinating stuff.

• The course project is for sure a shiny badge for your resume. The semester-long Raven's Progressive Matrices Agent that you build will definitely teach you a lot about the course subjects, but it'll also look really good on your professional profiles or resume! Even if your Agent isn't in the top percentile, the learning you do and all the code you write for it over the semester is for sure an achievement regardless.

• The Mini-Projects allow you to improve your coding. I knew programming decently well coming into this class, but after completing the coding projects needed, my python programming skills have improved drastically!

• The sense of community on Ed is like nothing else. Seriously, the Ed forum was a lifesaver for this class. The professor and TA pretty much always foster a community of learning and making mistakes and helping eachother out. I can't recall a single time where they took down a post where students were helping eachother think about problem solving techniques and offering advice. You could tell that most of the teaching staff wanted students to succeed and help one another.

 • In my personal opinion, I think it's extremely important to have good written communication skills as a developer, and with all the reports you write in this course it definitely gives you the opportunity to work on and hone those skills. Writing reports for every single project can seem annoying at times, but I assure you'll come out a better writer!


• You can tell the Professor loves this course and is dedicated to student success. Dr. Joyner is amazing at what he does, and it's clear throughout every point in this class. From the weekly assignment reminders, to the fun engaging lectures, and the occasional responses on Ed posts, I liked knowing I was in a class where I felt appreciated and valued as a student.

• You WILL get out from this course what you put IN. If you make a decent effort to learn the concepts, complete the course project, and all the other assignments, you will come out of this class feeling like a different person. You will be equipped with a huge toolbelt of knowledge to go and tackle problems you never thought you could before. I came in knowing nothing about computer vision, and now I'm able to do technical analysis on images and process pixel counts and use those to make assumptions about what an image is showing me... very cool stuff!

• You have the ability to work ahead! The thing I loved the most about this course was having the entire class given to you day one. You have a syllabus and deadlines for assignments, but you as a Student are able to pick how far ahead you want to work. This saved me so many times while working fulltime, because there were weeks where work or sickness caught hold of me but I had worked 2-3 weeks ahead and so I was seldom worried about my assignments. If you can, I HIGHLY implore you to get ahead wherever you can in this class. Some students worked so far ahead they got the entire month of December off and to themselves. So keep that in mind when taking this class.

Cons:

• Lecture Exercises are somewhat outdated (it can get kind of annoying because by the end of the semester I wasn't even actively doing them as I knew most of the results would be wrong anyways). Just focus on the lectures themselves.

• Not necessarily a con, but rather a warning. You REALLY need to be a competent programmer. I don't recommend this class for anyone just learning how to code. A lot of the projects in this class require intensive programming.

• Grading isn't very standardized. I only encountered this issue towards the very end of the course, but despite my reports being extremely similar in structure and format from week-to-week, some TA's may take that as a 100, and other TA's may take that as a 75.

• Exams are fair, but my only hesitance with them is the way the questions are worded. I don't know how non-native english speakers even take them, as being one myself made it extremely difficult to understand the question wording a lot of the time. Hopefully they improve that in the future but for now, question wording can get really convoluted and you'll spend 2-3 minutes just deciphering what the question is asking. (Exam times are also on the shorter side so beware of that).

• Peer Reviews did not help. In this class you're required to submit peer reviews for others' reports as part of participation. For one, most of the peer reviews I got didn't help me at all, but also in my cohort it actually caused issues in regards to retaliation. Students who took critical feedback would then go and "reputation strike" other students, which I think at the end caused a lot of issues that could be avoided outright if reviews are abolished or at least give reviewers option to remain anonymous.

CS-8803-O12

Systems Issues in Cloud Computing

Taken Fall 2022

Reviewed on 12/15/2022

Workload: 25 hr/wk
Difficulty: Very Hard
Overall: Liked

Difficulty breakdown: 6/5 for programming, 3/5 for conceptual. Project difficulties: Apps < Network Function Virtualization < Software Defined Networks << MapReduce

TLDR: The concepts in this class are pretty simple. The difficulty is in learning a bunch of new libraries and implementing things nearly from scratch. It's more of a SWE class than CS.

The concepts are pretty simple, so this class is more about burning fundamentals into your brain than anything else. The last two projects are very practical, with the last one being entirely a SWE project with basically nothing conceptual. I learned either directly or incidentally about a lot of tools I didn't know of before like Wireshark, Jmeter, Kuberneted-in-Docker (KIND), and Apache Kafka.

The mandatory class meetings have no business being mandatory, and should instead be recorded office hours. The TA leading the current module goes through the upcoming week's assignment, and then you have the option to meet with your partner synchronously knowing all the TAs are available at that time too. I never once used a TA at those times. IMO it's better to ask clarifying questions on Ed so they're written and searchable for others.

A special note about the MapReduce project since it's by far the hardest. In hindsight, handling dependencies with C++ is a shitshow and it would've been easier to learn GO from scratch. Heck, even writing Map Reduce in entirely Python is probably more viable than C++ even though the starter code offers only C++ or GO and it lacks true multithreading. I recommend sticking to a language with real package management unless you're a pro at using `cmake`. C++ development experience doesn't count if all you did was code in it, and no you will not be the genius exception who learns it easily without wasting days on troubleshooting.

If you still don't believe me and do try to use C++, don't use the starter code. Just make a list of dependencies and install them yourself.


CS-6340

Advanced Topics in Software Analysis and Testing

Taken Fall 2022

Reviewed on 12/14/2022

Workload: 10 hr/wk
Difficulty: Easy
Overall: Strongly Liked

For perspective, this was my final class in the program. I do not write C/C++ regularly, but I did take CS6200: GIOS already.

No, this class is not about writing unit tests. This class is focused on static/dynamic code analysis. That said, I believe this is one of the most industry-relevant classes in the program and sorely underrated. Once you get past the LLVM learning curve, the class is very smooth sailing.

In general, the pace of the class is slow. In combination with the predictable grading, this would be a good class for a Summer semester or a double-up.

Grading

60% Labs, 20% Quizzes/Surveys, 20% Midterm Exam. Final grades were distributed on a standard 10-point grading scale. The class also offers 5% extra credit for participation. If you take the quizzes & exam seriously, it's quite easy to achieve the A grade.

Underrated feature of the class: almost all grades were published within 48 hours of the close of the assignment, including the exam grade.

Labs

We had 2 weeks to complete most labs with exceptions of Lab 0 (1 week), Lab 4 (1 week), and Lab 7 (3 weeks including Thanksgiving). This was way more than enough time. I achieved 100% on all labs without substantial effort: invest the necessary time to get the desired result and avoid obviously incorrect workarounds.

The class has a convenient Docker image for completing the labs. It's worth spending the time to get a good setup with automatic code completion. I used Docker + VSCode + Remote Containers + C/C++ extension.

The best resource was the LLVM_Primer.pdf document provided by the class. This contains the majority of the LLVM API needed to complete the labs.

The challenge is mostly connecting the lecture concept to the specific tools & implementation. All labs require <200 lines of code and some (Labs 4 & 7) require adding just a few lines.

All labs were weighted 8% with the exception of Lab 0 at 4%. All labs were opened during the 2nd week of classes, so students can (and will) work far ahead on the labs.

Lab 0: Intro to LLVM

This was a very gentle introduction to LLVM. The only goal is to loop through the hierarchy of LLVM functions/code blocks/instructions. You can effectively find the answer verbatim from the primer document.

Lab 1: Fuzzing (LLVM)

This was the first "real" lab and generally pretty tough while students are still acclimating to LLVM. Due to the random nature of fuzzing, I had to spend a decent amount of time tuning the randomness of my strategies. It's easy to underestimate the amount of changes expected between iterations.

Lab 2: Dataflow (LLVM)

I really enjoyed this lab. I had to spend some time to understand how the algorithm from the lectures mapped to the data structures provided in the lab. After figuring that out, this was quite easy & interesting.

Some students lost points from hardcoding a number of iterations for chaotic iteration. Don't do that.

Lab 3: Datalog (LLVM + Z3)

This was effectively Lab 2 but using the Z3 solver by adding constraints. Conceptually, this lab required a lot of time & experimentation to figure out. I somewhat brute-forced the solution by experimenting until the output worked.

Lab 4: Type Systems (TypeScript)

This was a pretty interesting lab: given some JavaScript code & failing unit tests, add type info & fix the bugs for 3 different programs. I use TypeScript professionally on a daily basis, so this lab was quite easy. The only challenge is fixing the issue in a correct way: there are many ways to pass the unit tests without using the intended values.

There was also some gray grading where the staff manually inspects the code for a sufficient amount of typing. In other words, you must have type annotations added to the functions or data structures relevant to the issues.

Lab 5: Cooperative Bug Isolation (LLVM)

In my opinion, this is the most conceptually & technically challenging lab of the class. Some of the LLVM instrumentation can be borrowed from Lab 1 but using additional API such as IRBuilder. The challenge increases in Part 2 with the implementation of the pseudocode algorithm from the lectures. The solution requires reading log files generated for each iteration, creating an algorithm with a feedback loop.

The lab is testing against randomized programs which makes solution verification much more difficult. I had to rely on Gradescope for most of the solution validation.

Lab 6: Delta Debugging (Java)

This lab was conceptually quite easy. Similar to Lab 2, most of the work was implementing an algorithm from pseudocode. This was a relatively rote lab after figuring out the stopping conditions & potential off-by-one issues. The only real Java knowledge required was a small amount of string manipulation.

Lab 7: KLEE (C + KLEE)

Similar to Lab 3, this involved using the KLEE tool to add constraints (klee_assume()) & assertions (klee_assert(0)) for the desired result.

I found this lab to be the most tedious. KLEE is not included in the base Docker image, so this lab required more setup. As a result, I had to work around path issues. I also wasted time before realizing that the "error case" produces the expected file at the absolute Linux path /tmp/, not within the project directory itself. It's also hard to iterate quickly with KLEE because the output is a tool-specific format.

Students needed to constrain inputs to keep the runtime under 1 minute, but you could be penalized for excluding potential failure inputs. Apparently you're supposed to find the pattern of failing inputs through trial-and-error, but there's no good assurance to avoid over-constraining or under-constraining and there's no pre-deadline test cases on Gradescope to validate constraints. The staff acknowledged the blind grading situation but I doubt this can be easily addressed.

The staff discouraged this approach, but I ended up reverse-engineering obfuscated C code using ASCII codes & C standard library functions. This gave me way more confidence in my constraints. The "intended" approach seemed risk-prone for missing an edge-case.

Quizzes

30 minutes, unproctored, open-everything (sans peers). 1 quiz per lesson and you can complete the quizzes any time before the end of the course.

These can be somewhat tricky because there isn't much opportunity to practice for the questions. The teaching staff provided additional preparation questions & answers, but I found that the questions embedded in the lectures were often more relevant to the quizzes.

I lost trivial points on some quizzes because some questions ask for specific answer formatting. Take your time & reread the instructions before submitting.

Exam

3 hours, proctored, 24 questions. You could bring a page of notes, but you needed to fill your notes in a very specific Word document template & upload to Canvas so you could access the document without getting blocked by the proctoring software. Inconvenient, but the process of distilling notes to the specified format helped reinforce many concepts.

I felt the exam was tough but fair and only covers 4 lessons of material. Class average was somewhat low at 78%. You should expect to make up for this grade with high lab grades & extra credit participation.

My only advice is to carefully review all quizzes, lecture questions, & exam preparation questions. Copy useful diagrams (e.g. soundness vs. completeness) to your notes. You do need to know the details of all the specific tools mentioned in the lectures: Monkey, Korat, Cuzz, Randoop.

CS-6200

Graduate Introduction to Operating Systems

Taken Fall 2022

Reviewed on 12/14/2022

Verified GT Email

Workload: 20 hr/wk
Difficulty: Neutral
Overall: Liked

Tl;dr read "Operating Systems: Three Easy Pieces" if you haven't taken an os class before (or if the OS class wasn't very good). Know C and gdb

Background: Currently a Jr SWE at big co. Just got my bachelor's in CS this past spring from a flagship state school. Took an intro to OS class there, it wasn't very good. So I'm taking this class to prepare for AOS and supplement the class from undergrad. I also took a distributed systems class in undergrad. The reason why I mention that is this class is like 60% distributed systems, 40% operating systems

Prep strategy: I read Operating Systems: Three Easy Pieces (OSTEP) before taking this class. I also was comfortable with C and gdb from undergrad

Lecture content: pretty much what's in the OSTEP book, but also virtual machines, shared memory, shared memory multiprocessors, distributed system consistencies (strict, sequential, causal), distributed file systems

Projects: All some sort of client server thing (nothing actually OS related, just writing 2 client server programs in C and one in C++). Hardest part is reading the instructions and figuring out what they want you to do. In all the projects, they give you a starter program with parts missing, you have to fill in the missing parts. Hardest part is figuring out what stuff they want you to fill in. Actual logic you have to write is very basic. When in doubt, reread the instructions

Thoughts: Much, much better than the OS class I took in undergrad. Very similar to topics covered in OSTEP with some additions. Wasn't personally a fan of the way distributed consistencies are taught in this class, seemed like they were sort of thrown in near the end with too few examples. For those, I'd recommend just reading definitions on Wikipedia

Final note for anyone on the fence: if you don't know C or if you don't know how pointers work, learn before taking this class. If you don't know cpp, don't worry because the feature set you use in this class is small enough to learn on the fly