Course Review: Computer Networks
Background
In the summer semester of 2025, I took Computer Networks (CN) through the Georgia Tech OMSCS program, and this course was my second one in the program. I took CN because I was eager to gain a better understanding of how the Internet works, since it underpins almost every piece of technology at my job. As a software engineer in the telecommunications industry, my work revolves around software that delivers phone calls, text messages, emails, etc. over the Internet. So, I felt it would be prudent to better understand exactly how each SIP message, HTTP request, RTP packet, etc. gets from one host to another.
In addition to being fundamental knowledge in the software industry, I chose CN because I felt it would be more appropriate for the shortened duration of the summer semester due to its reportedly lighter workload. I also felt that CN would be a great course to take prior to GIOS, which I plan to take in the fall.
Overview
CN covered a broad range of topics, with 12 lessons in total. There was a quiz for each lesson, 4 projects, and 2 exams. The labs utilized Python and the course provided a VM to use for the labs. Although the VM was helpful at first, I eventually ended up using Ubuntu WSL for the projects instead since I had difficulty scaling up the disk size for the VM. There was also an Ed discussion forum which was used heavily by the TAs to provide announcements and answer questions from students.
What I learned
I learned a ton in this course, as someone who lacks a traditional CS undergraduate degree. Through my job, I quickly became familiar with concepts like IP addresses, application-layer protocols like HTTP, DNS, and SIP, sockets, and TCP/UDP. However, I still lacked a deeper understanding of how the Internet is structured and where the various protocols and devices belong in the overall architecture. This course helped me go above and beyond my previous understanding, such that I can now confidently explain what the Internet is and the functions of its individual components.
The first few lessons of CN covered the layered architecture of the Internet and routing. The OSI model was covered in deep detail along with transport layer multiplexing, differences between TCP and UDP, and TCP transmission control methods. The section on TCP/UDP was fascinating to me since it shed light on why UDP is typically favored for VoIP while TCP is almost exclusively used for HTTP requests from the browser. The reliability and transmission control in TCP is very useful for guaranteeing packet delivery to the browser and other applications, but for VoIP phone calls where packet losses aren't the end of the world, it turns out that UDP is favored for its reduced overhead.
The lessons on interdomain and intradomain routing were also very illuminating for me. Before CN, I had almost no clue how an Internet packet gets from one IP address to another. I knew that the packets traversed various routers and switches to travel between end hosts, but it was unclear how each router knows where to send each packet so that it gets to its destination in a reasonable amount of time. Now, after taking this course, I am familiar with how BGP is used to build forwarding tables based on route advertisements, and how various intradomain routing algorithms are used to establish shortest paths between routers within a domain. The first two projects covered various routing algorithms and they did a great job of helping me nail down my understanding of those concepts from a practical perspective.
The rest of the course explored various topics such as software-defined networking, internet security and censorship, and CDNs. There was even a section covering VoIP and video streaming, which was exciting since it connected back to my work in the telecommunications industry. These lessons did a great job of teaching me to think critically about the ways in which the Internet is used (and misused), and how its structure has evolved over the years. For instance, the section on DDoS attacks and BGP blackholing was very interesting to me because the subject of DDoS mitigation has come up several times at work. It turns out that DDoS is a very common Internet attack strategy, but it can be mitigated by having a third-party provider readvertise the attacked prefix such that incoming attack traffic is dropped. Learning about concepts like this helped me gain a thorough understanding of not only how the internet is used, but also why strategies like BGP blackholing, CDN-based content delivery, etc. are used today.
Difficulty
I found CN to be relatively easy in difficulty. Although the lessons covered a lot of content, the necessary takeaways were mostly high-level, and there was plenty of further reading to deepen our understanding. The projects were not trivial but also not super challenging, and the directions were very thorough. A decent amount of Python knowledge was required for the projects, so I did have to spend a bit of time refreshing myself on the syntax and various data structures in Python. In addition, much of the material involved memorization, so it was relatively straightforward to study for the quizzes and exams.
Conclusion
I received an A in this course, and I would rate it at a 5/5. The lesson material was laid out very clearly, and the projects did a great job of anchoring my understanding of the concepts from the lessons. The quizzes and exams were fair and accurate, and the course was very doable in the condensed summer format.