Grokking computer networking for software engineers is no small task. And having a firm understanding of how it all goes together is crucial:
- The fundamentals of how the Internet works
- Socket programming in Python
- Client-server architecture
- Command line tools
The list goes on.
As a software engineer, computer networking skills help you in the engineering process.
That’s a lot to take in.
But luckily there’s a course that can help…
This post contains affiliate links. I may receive compensation if you buy something. Read my disclosure for more details.
“So what’s this Grokking Computer Networking for Software Engineers course all about?”
Well, while the course is listed for beginners, don’t expect to kick back and relax.
It’s packed with hours of hands-on learning materials including lessons, quizzes, challenges and playgrounds.
“What will I be able to do by the end of this course?”
Upon completion of this computer networking course, you’ll be able to:
- develop socket programs in Python
- trace network metadata through the command line
- debug network problems with tools
- understand how apps work from the network perspective
- understand browser interactions with websites
And much more.
Now let’s check out this course in closer detail!
Want to know more about the Grokking series on Educative?
Check out our full review list.
Grokking Computer Networking for Software Engineers
⚠️ Level: Beginner
Lessons | Quizzes | Challenges | Playgrounds | Code Snippets |
115 | 83 | 3 | 29 | 43 |
Estimated completion time: 20 hours
Grokking Computer Networking for Software Engineers kicks off with an introduction to the basics.
And then you’ll go through 9 learning modules:
🔷 Getting to Know the Internet
🔷 Access Networks
🔷 Types of Computer Networks
🔷 Network Infrastructure: The OSI Model
🔷 The Application Layer
🔷 The Transport Layer
🔷 Introduction to Socket Programming with Python
🔷 Network Layer
Each module contains a heavy load of information. But they’re broken down into smaller, digestible lessons.
So let’s see what’s inside these modules…
✨ Module 1: Getting to Know the Internet
This module covers the absolute basics of what the Internet actually is. You’ll learn about:
- what a network is
- the purpose of computer networks
- Internet networks
And from there you’ll learn extensively about the history of the Internet.
We’re going all the way back to The Cold War in this history lesson. It covers things like ARPANET and CERN all the way up to the Internet of Things.
Then it addresses Internet Standards Documents and RFCs.
And finally, this computer networking course module covers communication over the Internet:
✅ Packets
✅ Addressing – IP addresses, ports
And then you’ll take one of many quizzes throughout this course.
✨ Module 2: Access Networks
An access network is a user network that connects subscribers to their service providers. So this section goes over:
✅ The Edge of the Internet – end systems, network edge
✅ Access Networks – network interface adapter, transmission rates
✅ Types of Access Networks – DSL, cable Internet, FTTH, etc.
And more.
✨ Module 3: Types of Computer Networks
Next you’ll learn about types of computer networks:
✅ Guided Physical Media – coaxial cable, fiber optics, twisted pair copper wire, etc.
✅ Unguided Physical Media – terrestrial radio channels, free-space optical communication
✅ Topology – bus, ring, star, tree, mesh
✅ Geographical Distance – LAN, MAN, WAN
✨ Module 4: Network Infrastructure – The OSI Model
This module covers 3 key topics.
1. Layered Architecture & Protocol Stacks – Here you’ll learn about vertical and horizontal layers, independent evolution, encapsulation and decapsulation.
2. OSI Model Layers – This covers layers such as application, presentation, session, transport, network, etc.
3. TCP/IP Model – You’ll discover the layers of the TCP/IP stack, end-to-end argument in system design, and more.
✨ Module 5: The Application Layer
Here is where you’ll dig deeper into TCP/IP layers. This is an expansive module that covers:
✅ Network Application Architectures – client-server, peer-to-peer, data centers, hybrid
✅ HTTP basics – anatomy of a URL, objects, lower layer reliability, types of connections, request and response messages
✅ Email – SMTP, POP, IMAP, check domain’s mail server, etc.
✅ DNS – types of servers, local DNS cache, records, messages
✅ BitTorrent – trackers, torrent files, swarming, etc.
Plus you’ll learn about cookies, how processes communicate and much more.
✨ Module 6: The Transport Layer
The transport layer delivers messages from the network to relevant applications.
And in this complex module, there are 25 lessons which cover:
✅ Congestion Control – bandwidth allocation principles, efficiency and power, max-min fairness, convergence
✅ Reliable Data Transfer – checksums, retransmission timers, pipelining, go-back-n protocol, etc.
✅ User Datagram Protocol (UDP) – structure, capturing UDP packets, checksum calculation
✅ Transmission Control Protocol (TCP) – segment header, header flags, 3-way handshake, connection release, data transmission, scaling, AIMD, etc.
In addition, you’ll become familiar with multiplexing & demultiplexing, measuring RTT with ping, and more.
✨ Module 7: Introduction to Socket Programming with Python
Ready get started on socket programming with Python?
This module will teach you the basics like:
- setting up a UDP socket
- writing a UDP server and client program
- improvements to UDP programs
- TCP client-server program
Plus, you’ll work on a project: write a UDP chat app!
Then you can compare your app with the solution files.
✨ Module 8: Network Layer
A network layer allows end systems to exchange information through routers using packets.
This module explains it all in 27 lessons. Topics include:
✅ The Control Plane – static and dynamic routing, distance vector, link state routing, route calculation, and more
✅ The Internet Protocol – IPV4 packets, fragmentation, reassembly, etc.
✅ Internet Control Message Protocol (ICMP) – headers, messages, sending messages with ping and traceroute
✅ Middleboxes – firewalls and NATs
✅ Routing in IP – intradomain and interdomain routing
✅ Border Gateway Protocol – hot potato routing, route selection algorithm
In addition, you’ll become familiar with Address Resolution Protocol (ARP) and Dynamic Host Configuration Protocol (DHCP).
Plus, there are multiple programming challenges that will give you a chance to apply what you’ve learned.
✨ Module 9: Link Layer
Finally, we get to the Link Layer module.
This module explains the data link layer and how it receives packets from the network layer. And from there it provides communication between physically linked entities.
In these 15 lessons you’ll learn:
✅ Principles of the Data Link Layer – framing, error detection
✅ Medium Access Control – static allocation, stochastic methods ALOHA & CSMA
✅ Ethernet – frame format, physical layers, switches
✅ Virtual LANs
Then you’ll work on a programming challenge to implement a simplified version of a spanning tree protocol.
💰 Cost
You can buy this course for $49 per year.
Or you can get these perks with a subscription to the Educative.io platform:
Grokking Computer Networking for Software Engineers | Monthly Subscription | Yearly Subscription | |
Cost | $49 per year | $59 per month | $21 per month |
Access to 170+ courses | ❌ | ✅ | ✅ |
Early access to new courses | ❌ | ❌ | ✅ |
Certificate of Completion (New!) | ✅ | ✅ | ✅ |
You can check out Grokking Computer Networking for Software Engineers here.
Is Grokking Computer Networking for Software Engineers worth it? Conclusion
If you’re looking for a course jam-packed with hours of content, then Grokking Computer Networking for Software Engineers is worth it.
It will teach you much of the foundational knowledge software engineers need to have a firm understanding of client-server architecture and networking.
Up Next: What is a DevOps Engineer? The Comprehensive Introduction for 2020
Is Grokking Networking for Software Engineers worth it?
Grokking Computer Networking for Software Engineers on Educative.io is worth it for anyone interested in learning the fundamentals of computer networking. With about 20 hours of content, this course will keep you busy with much of the foundational knowledge software engineers need to have a firm understanding of client-server architecture and networking.
What are some benefits of studying computer networking?
Studying computer networking will enable software engineers to understand the fundamentals of networks, socket programming in Python, command line tools and main protocols. You can learn about all this and more in the course Grokking Computer Networking for Software Engineers on Educative.io.
Is there a computer science networking course?
Yes. For example, Grokking Computer Networking for Software Engineers is a course on Educative.io. It’s geared towards helping software engineers understand the fundamentals of computer networking. You’ll learn everything from socket programming in Python to client-server architecture, networking, and using command line tools.