YOUR NEXT STEP

Network Programming by Jacob Sorber

Jacob Sorber · 16 lessons · Free on YouTube

LESSON 11 / 16

Highlighting a Student Programming Project (Code Review)

←Next

About this course

Networked applications power everything from web browsing and APIs to streaming and real-time systems. This free online course helps you understand what actually happens when programs talk across a network, and shows you how to build that communication yourself in C. Instead of treating networking as magic, you will learn to design clients and servers that exchange data reliably, diagnose common pitfalls, and write code that behaves well under real workloads.

You will start with the fundamentals of sockets, learning how a web client connects to a server and how a server accepts incoming connections. From there, you will move beyond the simplest examples by handling practical details that matter in production, such as working with client addresses, converting IP formats, and resolving host names into usable network addresses. You will also confront issues that silently break programs, like endianness and the concept of network byte order, so your code stays portable across systems.

Once the basics are clear, the course focuses on scalability. You will explore multiple ways to handle many connections: multithreading, thread pools, and coordination using condition variables. You will also learn event-driven techniques where one thread can monitor multiple sockets using select, a key skill for efficient servers. Along the way, you will see how higher-level libraries such as libcurl can accelerate development when you need networking capabilities without reimplementing low-level details.

To make your programs more robust, you will examine why progress indicators can be misleading in networked software and how to think about progress realistically. You will also learn strategies to detect data corruption using checksums, reinforcing the mindset that correctness and resilience are as important as functionality. Finally, you will expand your toolkit by working with both major socket types, understanding when to choose TCP versus UDP, and implementing datagram-based sending and receiving.

By the end, you will be able to read and write network code with confidence, build your own clients and servers, and choose the right concurrency and protocol approach for a given problem. The exercises reinforce each concept so you finish with practical experience, not just theory, and a clearer path toward roles in systems, backend, and web infrastructure development.

THERE IS ALWAYS MORE

Keep feeding your curiosity.

Explore more courses
From the community, for the community

Found a great course?

Share it. Our team will review it before adding it to the catalog.