Sorry that it’s been some time since my last blog post. I’ve been a bit… busy with school and work stuff. I’m back to talk about the classes I took last semester.

Overall, I felt the semester was pretty busy. I took 3 CS classes and a writing class for my writing requirement. Overall, I felt many of the classes were moderately interesting but was not feeling particularly inspired from each of the classes. I was initially planning on taking Operating Systems, Security, and writing for the professions. However, my partner was waitlisted for OS, and most of the students taking it that semester were Graduate students, so I felt a little bit unprepared/worried for taking the class. I’m glad I ended up dropping the class because Computer Security ended up being more work than I initially anticipated.

15451 Design and Analysis of Algorithms ⭐⭐⭐

This is the final cs core class at CMU. It really feels like a child of 15-210 and 15-251. I didn’t really feel like I learned anything particularly new, or feel my brain expanding in this class like in 15-251. It can be a bit hard to find motivation for this class. It is nice though to get more algorithm practice and learning various different algorithms and their derivations. The presentations we have to do are somewhat interesting because it gives more practice for cs students to do some public speaking which I definitely want more of. Overall, no strong opinions on the class.

15418 Parallel Computer Architecture and Programming ⭐⭐⭐⭐

I had little experience in writing performant c/c++ code before this class, and this class highlights many different parallel techniques for writing performant code. These techniques/knowledge including cache coherency, false sharing, mutex implementations, and some other cool details. By the middle of the class, we had enough understanding about how memory is fetched from main memory upon a uncached load instruction. I feel this class is really interesting for people that are interested in low latency domains like HPC (high performance computing) or HFT (high frequency trading). My big regrets from this class is that my memory of many of these cool techniques is a bit fuzzy, and I’m really looking to relearn some of these high level ideas again. One of my main complaints on the class is that while learning topics in the second half of the semester, projects are still based on the first half of the class. It would be nice to see more content on seeing different effects of performance with/without different performance techniques e.g. iterating through an array with false sharing and then doing batched iteration.

76270 Writings for the Professions ⭐⭐⭐

This class is a nice class on basic professional writing to expect on entering industry. For most, it’s a nice class for tidying up your LinkedIn page and resume. We had to do some basic public speaking about a CMU public policy issue, and other research elements. A unique thing about my section is that submissions had to made digitally and printed and manually submitted. This was pretty inconvenient for submitting our LinkedIn profiles.

15330 Introduction to Computer Security ⭐⭐⭐⭐

I heard from previous semesters that this class supposed to be a pretty light systems class. But this semester, it turned out to be a pretty difficult semester. This class introduces you to the basic principles of security and hacking through different domains of computer systems. The first half of the class walked through basic assembly hacks like in 15213. These include stack overflows, printf stack overriding, GOT table attacks, and ROP. For some of the later attack patterns like GOT and ROP, a lot of it went over my head after doing them, but they were extremely cool to do. The second half of the class went over cryptology and web-based hacking. In my opinion, the cryptology lecture were a bit hard to follow and too hand wavy to feel concrete understanding. The web based hacking were really interesting, but garnered more time than I expected. We basically were given different web sites with different vulnerabilities and tasked with hacking through them. Some ideas like CORS, stealing cookies, and meet in the middle cryptology were used here. The exams were also pretty hard. The cryptology exam was basically 15-251 level with half the time constraint. I vaguely remember the third half of the class. There were a lot of different security lectures like Secure Booting and other modern hacking techniques like side channel attacks. Overall, this would’ve been a much more interesting class that I could’ve learned a lot from, but my initial expectations of the class left me a bit overwhelmed/reluctant to put full effort here.

Final Thoughts

Overall, there some cool moments, but was not feeling deeply motivated this semester. I do feel the need though to go back and review more of the content for my own personal learnings though. There’s a lot of cool content to take at CMU, but it’s important to make sure I actually have some form of retention of it.

Next semester, I did end up taking OS, which I will more thoroughly talk about it in my next blog post.