course reviews
Here are my opinions of the courses I have taken while I was at George Mason. Might be helpful, might be random. Feel free to take a look!!
Spring 2025
Current Semester! Only one class left!
CS 692: Mobile Immersive Computing
Winter 2025
Amazing!! Read more here
CS 595: CS Origins - Study Abroad
Grade: A
Difficulty: 2/5
Enjoyment: 5/5
Advice: Manage your energy levels carefully, easy to do too much and get tired quickly. Pack appropriately for the cold! Do the assignments before or after the trip, it will be almost impossible to do during the trip simply because it distracts from the fun of it. The essays do take a while to do and the programming assignments, as well. I ended up doing the essay before and the programming assignments after, but high key had no motivation after to do it. I really wish I had done everything beforehand. Anyways, plan accordingly.
Fall 2024
Things were a little rushed and busy at the beginning of the semester as I attended several back-to-back hackathons and it was exhausting managing that with school and research. I was also participating in the Mastermind Entrepreneurship program and was able to get a desk at the Incubator. This really helped give me a consistent space to work from and have some stability at school. Towards the later half of the semester, things begin to cool down and I start to lock in on school and have fun with friends. The panic of job search has to settle in.
SWE 660: Real-Time Embedded Systems
Grade: A
Difficulty: 4/5
Enjoyment: 4/5
Advice: Go to office hours! Most students coming into this class will not have very much experience in electronics or in coding for embedded systems and lack intuition on how to approach some of the assignments. Attempting the class without GTA help only makes things confusing because online resources tend to give mixed results and it will take so much time to figure out one tiny issue. For example, for the assignment which required PRUs had it so that you couldn’t use print statements in your code. I was losing brain cells trying to figure out how to debug anything. The best solution for that was to use shared memory space, which I don’t think I would have ever thought of on my own. So don’t get stuck on issues, it’s okay to ask for help.
SWE 632: UI/UX Design
Grade: A-
Difficulty: 1/5
Enjoyment: 3/5
Advice: Very easy class with one course-long project that you keep iteratively improving on. The assignments were straightforward. The easiest way to pass the exams is by studying day-of and relying on short term memory especially because there are so many keywords to remember. In order to make the most out of this class, if you are interested in building websites or design, just remember the heuristic evaluation. It helps so much in evaluating how good your MVP is, because odds are, it’s not as good as you think it is. I ended up using this strategy for rebuilding my hackathon applications and it has helped so much with building more user-friendly applications.
CS 655: Wireless and Mobile Computing
Grade: A
Difficulty: 3/5
Enjoyment: 5/5
Advice: Very fun class with a course-long project. There are about 15 project ideas to choose from each involving different types of sensors (mmwave, rfid, lora, smartwatch) as well as a project description. You are also allowed to create your own project if you desire as long as it’s doable within a semester. My group worked with mmwave sensors for person vs object classification. We personally had a lot of problems setting up the sensor and figuring the software to record data but it all came together towards the end. If you enjoy tinkering with sensors and want to work on a project without worrying about midterm or final exams, this might be the class.
Summer 2024
Went back to India again, this time for 2 months. I traveled and toured a lot more than other summers and also got to experience a bit of normal life in India too. I took two online classes, which I hated during the trip, but am very glad I took because it reduced my tuition quite a bit.
CS 550: Database Systems
Grade: A
Difficulty: 2/5
Enjoyment: 2/5
Advice: Think carefully about whether you can actually take a class while traveling, because despite getting an A, I was very close to mentally giving up and failing. Also, make sure to set up software stuff for actually doing databases, because it does take a considerable amount of time. The videos posted on blackboard are actually helpful and give hints for the homeworks and projects, so check those out too!
I was traveling while taking this class, so I ended up doing everything last minute. There were only 3 submission deadlines for this class, so it was a little hard to resist the temptation to procrastinate. I had trouble setting up oracle and that led to me submitting ⅓ homeworks late and the project late as well. Somehow, the professor curved and allowed my late submissions and I passed with an A.
SWE 642: Software Engineering for WWW
Grade: A-
Difficulty: 1/5
Enjoyment: 2/5
Advice: Memorize the quizzes for the exams, if you’re trying to take the easy way out. If not, just do a project for each of the modules, and the questions asked on the quiz won’t feel as random anymore – but still glance through the quiz questions just in case.
The professor was very nice. I talked to him for an hour while trying to show my extra credit work. He gave out late extensions if enough people asked for one. The homeworks were graded very lightly. This class felt like a crash course into software engineering, covering topics like kafka, docker, kubernetes, angular, node, and AWS. Helpful course in terms of just understanding what all these technologies are. You will probably need to build a project or do something on your own to actually retain the content for this course.
Spring 2024
I received my bachelor’s degree.
CS 475: Concurrent and Distributed Systems
Grade: C
Difficulty: 5/5
Enjoyment: 2/5
Advice: If you are going to take this class, you have to be patient and put in effort outside of class in order to succeed. You cannot cruise through class! The professor is also very strict!
For this class, I wrote reflections soon after the semester ended, so this is a more detailed review.
Lab 1 – Bridge Crossing: I didn’t have a general understanding of how locks, threads, or synchronization worked. The first time I did lab1, I couldn’t even decipher what the instructions were asking. I tried to google for help, but I didn’t know how to google properly. I was googling a little too specifically to resolve the errors that I was having, copy and pasting the error from the terminal. Or I would google too vaguely. E.g. “my code keeps deadlocking, how to fix it” – which is obviously a very poor way to resolve the problem. I also over complicated the problem by implementing a queue structure although it was not required at all.
Lab 2 - Multithreaded Client-Server Model: I was yet again in the same situation. I still had no idea how locks worked and didn’t understand how to approach the problem. I assumed the handler would have to be passed in for the thread_create function so I kept googling how to call functions in different files and how to reuse(??) threads. I tried to ask the professor for help but I didn’t even know what to ask.
The midterm review was posted, and that’s when I tried to sit down and actually understand threads and locks. I looked up classical synchronization problems and I found some online: h20, nachos, and to my surprise the bridge problem. I read the code and followed along with the logic. I covered up the solution and just rewrote the exact same solution from memory. Somehow, that helped me understand threads. I did a few more problems and realized: I had to change my mindset. For the bridge project, I kept trying to do queues for who should go on the bridge because I was thinking about how the bridge crossing would work as a whole, when I really should have been thinking about how each individual thread would approach crossing the bridge. Shifting my thinking helped a lot and when I redid the first lab, I was actually able to understand the instructions and code it pretty quickly. I now feel like the instructions gave a little bit too much away and basically defined the entire code structure.
Moral of the story: If you are struggling with learning a concept and are repeatedly failing, calm down and take a step back. Try to see if the way your thinking is hindering you from reaching the actual solution.
CS 455: Computer Communications and Networking
Grade: B
Difficulty: 2/5
Enjoyment: 5/5
Advice: If you have Parth Pathak, go to class! The lectures are more than enough for learning the content. If you’re going into SWE or cyber or anything CS-related, this class will be very important for you to understand, so pay close attention. Be patient with the projects as they do take time, and ask the professor for help! This class is highly recommended for all CS students.
Good teachers make good classes. I had this class with Parth Pathak and genuinely enjoyed learning about networking. I’ve never considered myself as someone who would be interested in networking after a poor experience trying to do Cisco networking during Cyber Patriot competitions in 8th grade, but this class was truly amazing. It covers crucial concepts which every CS major should know. The units are split up into different layers of the TCP/IP model (application, transport, network, link, and physical). The projects in this class are difficult but graded lightly (I self calculated a grade of 60 based on his rubric but received an 80). I don’t say this often, but I do wish he graded more harshly, because the projects did appropriately test concepts we covered in class and brought forth a deeper understanding of the material. Once again, this was another pivoting class for me.
CS 571: Operating Systems
Grade: A-
Difficulty: 3/5
Enjoyment: 3/5
Advice: Start the projects early, sometimes the setup itself takes a lot of time. Running and testing it are a hassle as well. Don’t stress too much!! It seems scary but it’s not too bad!! Also make sure you watch the project description videos, sometimes they give hints on how to get started (I missed out on this).
A very fun class, though it did feel redundant with overlapping concepts from systems programming. I did well on the threads and traffic synchronization projects due to the distributed systems class, but many people tend to struggle with this. Grading is done very lightly for this class, but it would still be best to study and prepare. There is a bonus project as well.
CS 580: Intro into Artificial Intelligence
Grade: A-
Difficulty: 3/5
Enjoyment: 4/5
Advice: You can self-learn by watching the videos put out by UC Berkeley and also doing their homework problems to help you solidify the concepts, instead of the professor’s lectures. Out of our class of 70, only 10-15 people attended regularly. You are better off learning from the original UC Berkeley content. So I guess, all my compliments below are referring to UC Berkeley as opposed to this class.
This class did a good job of introducing us to very basic but fundamental concepts which make up AI. The entire curriculum was based very strongly around UC Berkley’s AI class, but the class is good nonetheless. The projects were also very good at teaching us the basic concepts, and implementing what we learned, though the “bonus/challenge” questions were quite difficult. We covered statistics, reinforcement learning, game-based problems (minimax, expectimax), search algorithms, and constraint satisfaction problems.The best way to do well on the midterm/final is by doing all the problems given in class and doing different variations of those. Taking this class allowed me to gain a better appreciation for AI and ML.
CS 583: Algorithms
Grade: A
Difficulty: 3/5
Enjoyment: 2/5
Advice: Work on proofs and do similar problems to practice the concepts learned in class. Start leetcoding now! If you didn’t start before, now is a good time to start.
Before I started I thought this class would focus on problem solving and building our algorithm toolbox, however it was far more focused on proofs and defining the algorithms that we were working with. Doing the proofs was difficult and we weren’t given too much guidance on how to set them up, but the exams were very similar to the homeworks which helped. There was a good amount of focus on search/sort, graph, and dynamic programming algorithms.
Fall 2023
I was staying at home this semester. I learned to balance managing housework and cooking on top of school work, which proved to be a new type of challenge. I took 19 credits this semester (6 classes) but there were more CS classes this time.
CS 321: Software Engineering
Grade: B
Difficulty: 3/5
Enjoyment: 1/5
Advice: Check rate my professor for this class :D Be prepared for a lot of writing.
This class had the potential to be fun/relevant/engaging. However, the professor I had it with made us do everything in Java, use class structures that he defined, and also build a product that he decided. It ended up feeling very restricted and I found it difficult to enjoy the class. The quizzes and tests were irritating, and I often relied on rote memorization to do the quizzes. There was a lot of documentation that we needed to do for SWE: activity/sequence diagrams, project updates, and sprints. The actual content did a decent job at teaching core SWE concepts, but I do wish we had more creative liberty in our project.
CS 367: Computer Systems and Programming
Grade: A
Difficulty: 2/5
Enjoyment: 4/5
Advice: Actually attend lectures and labs, I promise you will not have to study outside of class that much at all. Lots of very good repeated learning built-in to the course structure (lecture, lab, quiz, and final review questions). Use it!!
Good teachers make good classes. I had this class with Andrea and I genuinely loved learning about low level concepts – something I never thought was in me. I had a fixed mindset before this class that I would never be able to enjoy anything even remotely related to the 1’s and 0’s that made up the computer and anyone who did must have been a masochist. But this class was very well taught and projects were well designed. This class acted as a pivoting point for me. I was starting to truly understand and appreciate computer science as a whole starting with this class.
CS 478: Natural Language Processing
Grade: A-
Difficulty: 2/5
Enjoyment: 3/5
Advice: This is a very relevant class especially with the boom of AI and LLMs. NLP lies at the very core of it all. Highly recommended for all CS students.
Fun class with interesting projects. It actually taught some really cool stuff and the professor was super sweet. I thought it was going to be very hard, but the pacing of the coursework was nice and there was a gradual buildup in difficulty.
CS 484: Data Mining
Grade: A-
Difficulty: 4/5
Enjoyment: 2/5
Advice: Don’t get scared by the math. I promise it’s all learnable, just be patient. You will also have to google a lot for this class because you will need to use builtin python functions which are optimized, otherwise your models will just be too slow. I would recommend starting off by building the models on your own to get a good understanding of how the algorithm works in general, and then google optimizations (e.g. matrix multiplication instead of nested for-loops) so you understand why it’s making it faster.
The first lecture I attended, the professor just tossed some really fancy eigenvalues and math equations at us to scare us away. It ended up being not as bad and I learned about some basic machine learning models such as linear regressions, logistic regressions, k-means clustering, k-nearest neighbors, and neural networks.
CS 485: Autonomous Robotics
Grade: B+
Difficulty: 4/5
Enjoyment: 5/5
Advice: If you’re interested in robotics, highly recommend this class! It will be hard, but if you’re okay with going for it anyways, just take it. The professor is very open to advising and helping. One of the groups got funding to do their project too, I think? Very good opportunity.
Loved this class. It was kinda hard in terms of actual concepts. We discussed kinematics, statistics, motion planning, and motion control which are important topics in robotics, however, we were never actually given problems to practice those concepts so it made the exams very difficult. The project, though, was incredibly fun and I loved working with the group to work on the F1TENTH project. Learned how to cad and use gazebo simulations. I still have the failed 3-D prints lying around somewhere. I learned how to set up Linux using WSL, VM, and dual boot. My group was great too and I actually made friends in the class. This robotics class is one of my favorite conversation topics, so I guess if you need more things to talk about, this class might be it for you.
HNRS 360: Ethics in Nuclear Energy
Grade: A
Difficulty: 2/5
Enjoyment: 0/5
Boring class. Required attendance. Annoying final. Had to do a paper/presentation. Did not like it.
Summer 2023
I did BreakThroughTech’s AI summer program which I really enjoyed. Went to India after 5 years. Learned how to cook.
Spring 2023
By now, everything had sort of settled down. This semester marked when I started to get more serious about doing well in classes and schoolwork. Enjoyed my last semester on campus.
CS 262 : Low Level Programming
Grade: A
Difficulty: 2/5
Enjoyment: 3/5
Advice: If you have this class with Hamza or Andrea (not sure who else is teaching now), actually attend classes because I promise you won’t have to self-study outside of class if you just pay attention to their lectures. They both clearly explain all the important concepts and then ask exactly those concepts in the exams. This is the beginning of the C-language chain classes at GMU, so make sure you get comfortable programming in C! The entire low-level chain (CS 262, CS 367, CS 471) at GMU is well defined and concisely planned. Each class builds upon the foundation of the previous and I highly recommend taking the classes back-to-back, with no break semesters in between classes.
Really enjoyed this class on C. I had it with Hamza, who was very chill. The labs were on the concepts we learned during the week, which made it really good for reinforcing our learning. I’m a huge fan of small, weekly assignments as it helps with pacing of the course as opposed to big projects. CS 262 did it well. All exams and assignments were very fair.
CS 310: Data Structures
Grade: A-
Difficulty: 2/5
Enjoyment: 2/5
Advice: While you go through this class, try to implement the data structures. You’ll have to do it anyway for the projects, but for the data structures the project does not cover, take the extra step and do it anyway. Implementing data structures gives you a solid understanding of key concepts, and it lasts longer in your memory. Now would be a good time to start doing some easy leetcode problems!
I don’t remember much of this class, and stopped attending it despite the attendance points. I already knew data structures before this class and the projects were easy for me. I was panicking about the final as my knowledge in trees and graphs was lacking, but it ended up being not too heavily tested.
CS 330: Formal Methods and Models
Grade: A
Difficulty: 3/5
Enjoyment: 3/5
Advice: If you ever want to learn compilers (CS 440), the stuff on automatas comes back. It also comes back a bit for AI, networking, and algos. The topics on proofs become very relevant in algorithms (CS 483), which is a proof heavy class.
I took this class with Ivan and he was a great professor. Lectures well and was responsive to emails and questions. I found myself getting lost a lot in this class, often doing poorly on quizzes. I had to do more practice to understand it and it was worth putting in the time and effort into understanding the concepts because the final ended up being a breeze and I received more than 100. Learned about proofs, predicate logic, automatas, and grammars. Loved the weekly quizzes, it helped with distributing load throughout the semester.
HNRS 130: Memory, Art, and Identity
Grade: A+
Difficulty: 0/5
Enjoyment: 2/5
Not really too memorable, a little bit of forced participation in the full class discussions. We had to watch a movie as an assignment and present a piece of art as our final project.
HNRS 260: What is Democracy?
Grade: A
Difficulty: 2/5
Enjoyment: 4/5
Advice: Actually read the books and discuss your opinions!! Discussions were so much more fun when everyone read the content and presented their opinions (even if the opinions were silly). Reading generally decreased over the course of the semester, as did the energy, so don’t let that happen!!
I like discussion-based honors classes, so I, obviously, liked this one too. We ended up reading four books which I found to be very interesting in shaping the definition of a democracy and a good government. I regret not writing a piece on what I learned in that class, because I forgot a good portion of it. But I do have fond memories of reading, discussing (sometimes arguing), and sharing thoughts with my peers. The grading for the class was weird, but everyone got an A at the end, so it was fine.
OR 442: Stochastic Operations Research
Grade: A+
Difficulty: 1/5
Enjoyment: 2/5
Advice: Take this class when you want a light course load or are interested in going into data science/statistics. Otherwise, you’re probably better off taking a fun CS course as your elective instead.
Very easy class. It’s taken by senior students mostly, so the teacher was very generous in terms of grading. Many recap topics taken from STAT 344, plus some additional topics like monte carlo simulations, markov chains, and inventory models.
CS 306: Synthesis of Ethics and Law for the Computing Professional
Grade: B
Difficulty: 3/5
Enjoyment: 5/5
Advice: Have fun while working on the case, it’s a lot more fun when you assume the role of an attorney instead of just being a student completing an assignment. If you’re interested in starting your own business, pay attention to the notes on patents and ethical software. While you don’t need it to start a business, it might help guide your decisions on getting a patent for your software or ensuring your company is ethical from a general sense. It is a lot of work, so be prepared to allocate enough time for this class, especially since it involves of reading and writing.
This is from the reflection essay they made us write at the end of the course: “For future CS 306 students, I would like to say, “Don’t worry.” Although looking at legal cases might seem intimidating, it is not as difficult as it looks. It is very similar to reading a scientific paper, except instead of reading science, you are reading about the law. The best way to get the most out of the early assignments is to really dive deep into the first case that you read. Read through it thoroughly and take note of where the most important information is located, such as which court it was presented at or who the defendants or plaintiffs are. Because, just as you typically skim through scientific papers to glean the most helpful information, you will have to do the same in court cases. However, in order to be able to effectively extract information, you must know where everything is located first. As for navigating Nexis Uni, I would highly recommend using the filters. For example, if you are looking for a certain type of court case that questions the constitutionality of a case, make sure you use the filters “cases” and “federal court” to ensure that you’re getting only the types of cases that you want. Then, use important keywords such as a certain statute that’s in the case or an issue that it is addressing, such as “segregation.” And lastly, all the sherardization details tend to appear in a text box on the right-hand side of the case report. Use this tool to determine the validity of your case and if it sets a good precedent. I wish you the best of luck in your CS 306 journey!”
Very fun class! As you may have noticed, I am biased in favor of classes with group projects/discussions. I had fun pretending to be a public defendant, reading cases, interviewing clients, and defending my client, who crashed his school server by posting memes about his teachers. During the debate, I threw so many back-to-back objections on the side, and had an immensely good time watching them struggle to find faults in our client. We ended up winning the legal case, but lost the ethical case (it’s bad sport to crash your school’s servers it seems). I became friends with the other girl in my group, and we met up a lot to do the write-ups. The quizzes were annoying. though.
Fall 2022
This was my first semester in college and I think it was the most fun semester I’ve had so far at the time of writing. I stayed on campus this year after convincing my parents that it would be worth it despite living nearby. It was a good decision, and I liked it in terms of my social life and my sense of independence. I started going to the gym. For this one semester, I ate healthy foods in the dining hall (salads, sandwiches, milk, and no dessert :OO). I made a lot of new friends. This was also the first semester I began to slack off and procrastinate, a huge deviation from the way I was during high school. The fall semester passed by wonderfully with lots of school events, random trips, and late night ventures.
CS 110 : Essentials of Computer Science
Grade: A
Difficulty: 1/5
Enjoyment: 2/5
Advice: It was a chill class, just do the assignments and go through the notes before the exams. Very easy class, but I know people that didn’t pass because they slacked off for submitting things on time or not brushing up before the final.
A rather boring class which I attended somewhat intermittently to get the minimum participation points. Looking back, the content of the class was interesting and did sort of give a brief introduction into some major topics like hexadecimal and encryptions. It was hard to see the relevancy of those topics back then, so I ended up brushing through it. Quizzes, tests, assignments. Everything was easy. I had friends in this class, so I enjoyed goofing off.
CS 211 : Object-Oriented programming
Grade: A
Difficulty: 1/5
Enjoyment: 1/5
Advice: Make sure you understand the basic OOPs principles (polymorphism, inheritance, encapsulation) because they will be present throughout the course. Take your time and read the project descriptions, because honestly, reading and understanding it took more time than implementing it in code. Do not cheat!! This should be a default but many, many students get honor coded in this class. Do your own work!
I don’t think I attended this class after the first two weeks of school. I had this class with the infamous Socrates. It was actually not as bad as the rumors said. Socrates, in my opinion, wrote the most clear project descriptions and gave the one difficult project (pixel manipulations) which bumped this class’s enjoyment rating from a 0/5 to 1/5. The other professors gave easy projects which mainly consisted of writing constructors, getter and setter methods, and very simple functions. I think the projects do give a good intro into object-oriented design, if you decide to put effort into it. I took this class with the honors college, which meant I had to do an additional project at the end of the course. I ended up doing Minesweeper using Java Swing and Java FX. Socrates ended up emailing the honors college kids after the course asking them to be TAs.
HNRS 110 : Research and Inquiry
Grade: A
Difficulty: 1/5
Enjoyment: 5/5
Advice: If you are potentially interested in going into research/academia, this class is amazing for you. Put in effort and go all out. Honestly, you might be able to reach out to professors for research roles in their labs based on background work that you will have done in this class.
This was my favorite class this semester. I did have experience in technical writing for research papers from high school, so content-wise, it was not particularly new. I enjoy doing research and reading articles, so I was very comfortable in this class. The main highlights were frequent group discussions, something I miss from high school. (Large lecture classes tend to drain energy, making it very difficult to focus and stay on task.) I was able to find a few friends, making it one of few classes I actually made friends in. I had this class with Dr. Winsler, who teaches psychology. The research topic I picked was “The Effect of Musical Training on Second Language Learning”, so we ended up having many conversations on psychology and behavioral experiments. I was nominated for the first-year research award.
HNRS 122: Metatheatrical Shakespeare
Grade: A
Difficulty: 1/5
Enjoyment: 3/5
Advice: If you’re in a boring honors class, put yourself out there and try to make it fun, especially if you can tell the teacher and the other students want it to be fun too. Take if you like Shakespeare, the professor was very nice – I had a conversation or two with her about Shakespeare and plays in general.
I like reading Shakespeare so I enjoyed the class somewhat (thought it didn’t quite live up to my expectations). I prefer reading Shakespeare individually and then slowly digesting his work, scene by scene, diving deep into the literary nuances with a small group. The class felt a little rushed in that regard, brushing through Midsummer Night’s Dream, Much Ado About Nothing, All’s Well That Ends Well, and Macbeth. Majority of class time was spent reading passages out loud instead of discussions. We did group performances for class, which I was initially excited for. However, it ended up turning into groups reading rather monotonously in front of the class for 20 minutes with small gestures here and there. It had the potential to be a lot more fun and engaging especially since the focus of the class was on the theatrical elements. Despite the professor’s abundant energy, the energy of the class was rather low.
STAT 344: Statistics and Probability for Engineers
Grade: A
Difficulty: 1/5
Enjoyment: 2/5
Advice: Pay attention in this class, especially if you’re interested in AI/ML. Lots of very relevant concepts. You can try building models or simulations to integrate the concepts into your machine learning work to make the topics more engaging.
I did not attend this class after the first week as I didn’t like the lecture style very much. I ended up reading from the textbook and learning the concepts on my own. There were 2 homework assignments which were very easy and the exams were all take-home, open-book, and very similar to the hw/textbook problems. Learned about binomial, hypergeometric, Poisson’s, normal, Gamma, Beta, and multinomial distributions.