A review of Computer Science courses at UMBC
A look at what classes I enjoyed, and what classes I didn't really care for.
It’s always fun to look back on your favorite classes and think about what your favorite parts have been, so that’s exactly what I’ll be doing. For context, I’m currently going into the second semester of my junior year at UMBC, and have been taking one or two computer science classes per semester. Might throw in math courses and other favorites, we’ll see.
CMSC 202 - Computer Science II
This is where I started off my major - since I took AP CS A in high school. Overall, this class was pretty inoffensive - not my favorite, since it was very much the basics, but the projects were interesting enough that I didn’t mind it. This one is probably a 6/10.
CMSC 203 - Discrete Math
Another first semester course I took. This one was a lot more interesting - my interest in math coming together with my interest in computer science was great, and proofs were like individual puzzles. It took me a while to get used to solving them, but once I got the hang of it they were really interesting. Definitely an 8/10.
MATH 152 - Calculus II
The last first semester class to review. This was quite difficult, since calculus tends to be heavy on both memorization and creativity, but the workload was reasonable and there was plenty of homework material to study with. I tend to work better self-teaching math, though, so the class itself wasn’t all that interesting. The material was interesting, and it was fascinating to see how integrals went from simple solutions to puzzles, with just a few changes. A 7/10 for me.
CMSC 341 - Data Structures
It was fascinating to see how certain algorithms could be implemented and going through the thought and debugging process, implementing them myself. Definitely up there, although I tend to prefer when the fruits of my labor are more visibly available - which we’ll be getting to later on CMSC 435 and 438. This one is a light 8/10.
CMSC 313 - Assembly Language and Computer Organization
One of my favorite classes. The material covered in class was relatively tame, and not nearly as interesting as the homeworks: Logisim circuit design and working with small assembly projects were both new to me, and working within new constraints is always a welcome exercise. Easy 9/10.
CMSC 304 - Social and Ethical Issues in Information Technology
Not necessarily as much of a computer science or information technology course as it is an “Ethics in Technology” course, with a focus on terminology and philosophy. Dr. Birrane was a wonderful professor for this course, however, and every lecture wound up very interesting (despite starting at 7:10 PM). For our semester, the final project was a group paper, which was fun, and difficult enough to be engaging, but not so difficult as to make it a drag. Always a fan of some philosophy - 8/10.
MATH 221 - Linear Algebra
This was a weird class, because it marked the beginning of more quirky mathematics. I found working with matrices and vectors to be very interesting, but a lot less intuitive than a lot of past disciplines (namely, calculus and algebra). It’s one of my favorite math courses because of that novelty, so it gets an 8/10. Quite difficult, though.
CMSC 331 - Principles of Programming Languages
I was a little bit hesitant going into this class, not at all knowing what to expect. From what I recall, the name was accurate - it delved into the principles at work behind programming languages, what makes them tick, and how they’re designed. This class had some of my favorite projects, being partially in Scheme (a dialect of Lisp), another set of constraints that made solving problems that much more enticing. Seeing how text is parsed and tokenized was also interesting. 8.5/10.
CMSC 421 - Operating Systems
One of my all-time favorite classes. Writing software in C was already an interesting exercise, since I’m more familiar with C++, and writing Linux kernel drivers on top of that was an even more interesting exercise. Writing in C is a constraint in its own right, and having been interested in Linux for the last several years of my life, it was great to delve into that area. This is an easy 10/10.
CMSC 411 - Computer Architecture
This one is another favorite, which makes sense since this is more or less a continuation of CMSC 313. A good portion of the class was working in MATLAB and creating circuitry to design a basic processor, and that was incredible (being that I spent so much time when I was younger experimenting with redstone in creative-mode Minecraft). I definitely have an interest in lower-level design, and this class made me think about a Computer Engineering degree. A 9/10.
CMSC 426 - Principles of Computer Security
This was a great class, and had a few great assignments - creating rainbow tables and experimenting with overflow attacks tickled the part of my brain interested in computer security, and was a lot of fun. This also ties back to the interest in lower-level design. My only gripe with this class is that some of the software side was a bit too templated, if I remember correctly. Another 9/10.
CMSC 435 - Computer Graphics
My all-time favorite class, period. Ray-tracing, rendering, and graphics in general have always been fields that I’ve had a deep interest in exploring, and this class fulfilled that dream incredibly well. Each project had ample extra credit that provided more to explore and experiment with, and even just the optimization of the algorithms involved was interesting. Loved Dr. Bargteil as a professor, as well. 11/10.
CMSC 438 - Graphics for Games
Another all-time favorite of mine. Rather than the more base-level graphics techniques that 435 covered, this class covered how to use and work with the Unreal Engine’s source code, and how to complete certain tasks in it - from creating custom material nodes to implementing maze algorithms. This was new to me, and it was interesting to see what working in such a large codebase was like. I had Dr. Olano, and he was a great professor for this course. An easy 10/10, just wish I did more of the extra credits.
MATH 225 - Introduction to Differential Equations
A very interesting math course, being that it was more unfamiliar territory. It was quite difficult, with a lot of that difficulty coming from the amount of memorization throughout the course - we weren’t given certain formulas that you might expect, so that was an exercise in its own right. I believe Calculus 2 was similar in that way. Studying was a mental workout, which, although tiring, was quite enjoyable. My biggest gripe with this class was just the lack of graded homework, which I would’ve appreciated. 8/10.
The End
Thank you for taking a look at these reviews! This is the first blog post that I’ve written, so I appreciate it. Looking forward to the next ones (and maybe some tweaks to this one!) As a side note, I’m thinking about changing the name of the site - it feels a little… normal? Too typical? Not sure. See you next post!