AI-powered learning
Save this course
Grokking Computer Networking for Software Engineers
Learn networking essentials for software engineers: client-server models, Python sockets, CLI tools, key protocols, and hands-on distributed processing.
4.7
115 Lessons
20h
Updated 3 months ago
Join 2.9 million developers at
Join 2.9 million developers at
Learning Roadmap
1.
Getting Started
Getting Started
Get familiar with computer networking fundamentals, practical skills, and essential Python tools.
2.
Getting to Know the Internet
Getting to Know the Internet
Look at the Internet's structure, history, standards, and communication protocols.
3.
Access Networks
Access Networks
4 Lessons
4 Lessons
Examine access networks, end systems, and various connection types, including DSL and fiber.
4.
Types of Computer Networks
Types of Computer Networks
4 Lessons
4 Lessons
Find out about various computer network types by medium, distance, and topology.
5.
Network Infrastructure: The OSI Model
Network Infrastructure: The OSI Model
3 Lessons
3 Lessons
Take a closer look at the OSI and TCP/IP models, layering and modularity in network infrastructures.
6.
The Application Layer
The Application Layer
20 Lessons
20 Lessons
Focus on the application layer's role, network architectures, HTTP dynamics, email protocols, DNS operations, and BitTorrent functionality.
7.
The Transport Layer
The Transport Layer
25 Lessons
25 Lessons
Master the transport layer's protocols, reliable data transfer, congestion control, and efficient packet handling.
8.
An Introduction to Socket Programming with Python
An Introduction to Socket Programming with Python
9 Lessons
9 Lessons
Step through Python socket programming, from creating UDP and TCP sockets to building chat applications.
9.
Network Layer
Network Layer
27 Lessons
27 Lessons
Unpack the core of network layer functionality, IP protocols, and routing methodologies.
10.
Link Layer
Link Layer
15 Lessons
15 Lessons
Explore key aspects of the data link layer, including framing, error detection, MAC, and Ethernet.
11.
Conclusion
Conclusion
2 Lessons
2 Lessons
Grasp the fundamentals of networking careers, roles, certifications, and course conclusion insights.
Certificate of Completion
Showcase your accomplishment by sharing your certificate of completion.
Complete more lessons to unlock your certificate
Show License and Attributions
Developed by MAANG Engineers
ABOUT THIS COURSE
The way applications are developed today requires software engineers to have a firm understanding of client-server architecture and networking. If you’re planning to write web applications, or apps that communicate with a remote server, then networking is an essential skill. With this in mind, it’s clear that what you do as a software engineer will be deeply rooted in networking.
This course will teach you the fundamentals of networks, socket programming in Python, command-line tools and the main protocols of each layer. Additionally, you will get hands-on experience with not only socket programming, but with implementing network protocols that require distributed processing. Join us in a deep dive on everything network-related.
Trusted by 2.9 million developers working at companies
A
Anthony Walker
@_webarchitect_
E
Evan Dunbar
ML Engineer
S
Software Developer
Carlos Matias La Borde
S
Souvik Kundu
Front-end Developer
V
Vinay Krishnaiah
Software Developer
Built for 10x Developers
No Passive Learning
Learn by building with project-based lessons and in-browser code editor


Personalized Roadmaps
The platform adapts to your strengths & skills gaps as you go


Future-proof Your Career
Get hands-on with in-demand skills


AI Code Mentor
Write better code with AI feedback, smart debugging, and "Ask AI"




MAANG+ Interview Prep
AI Mock Interviews simulate every technical loop at top companies


Free Resources