Modern society is built upon computer networks, which have become the backbone of commerce, entertainment, education, and more. Despite having a decade of experience building applications that leverage this technology, I've never really taken the time to understand how the internet itself works. Sure, I knew the practical applications of HTTP, what DNS is, and the advantages of using a CDN, but I didn't understand how all of these pieces actually worked together to move bits from one computer to another across a network of routers. And to be honest, I still don't really know the details. Georgia Tech's CS 6250: Computer Networks course taught me what I don't know and where to start looking if I want to learn more.
CS 6250 takes a broad look at the fundamentals of computer networks from the perspective of the architecture of the internet. It starts with the basics of each layer of the OSI model of computer networking, then dives into a little more detail for each layer, and finally concludes with some practical applications of these concepts. Along the way, students will wade through an ocean of acronyms for protocols, software systems, and more. Most of the coverage of these concepts is pretty surface level, and all that I could really take away from much of the course is being able to define some of this terminology.
This course includes multiple projects, which seem more akin to leetcode challenges than the course material. Oftentimes, the trick for success on a project is understanding the proper data structures that need to be used for the solution, rather than mastery of the underlying networking concepts. The exception to this was the firewall project, which I thought tied in pretty well with the topics covered in the lessons.
Despite the lack of depth and acronym overload of the material, the course itself was pretty enjoyable over the summer term. The exams were challenging but fair, and the aforementioned projects weren't insanely time consuming if you have programming experience. While I wouldn't describe this class as easy since it does require effort to succeed, it did not feel overwhelming at any point during the shortened summer semester.
Most importantly, after taking this class I now know where to start looking if I need to deep-dive on any of the topics for work or personal projects. Quite a bit of the material in this course provides practical benefits for software engineers, if only to introduce some of the acronyms you might come across while working with web applications. Overall, CS 6250 is a solid introduction to a very broad area within computing, and a great fit for anyone looking to take on a relatively lighter workload for a semester.
~ MAD