Free Course Image Network Programming

Free online courseNetwork Programming

Duration of the online course: 3 hours and 26 minutes

New

Build real-world networking skills: learn sockets, multithreaded servers, UDP, DNS and select in a free online course with hands-on C practice and exercises.

In this free course, learn about

  • Build a socket-based web client and understand what enables long-distance interprocess communication
  • Implement a basic web server in C with sockets; role of accept() for new incoming connections
  • Retrieve client IP/port info and convert addresses to text using inet_ntop()
  • Handle endianness and use standard Internet network byte order (big-endian) with conversions
  • Design multithreaded C servers to handle many connections concurrently for better performance
  • Use thread pools to reduce thread creation overhead and improve scalability under load
  • Coordinate worker threads with condition variables for efficient waiting and signaling
  • Use select() for I/O multiplexing: one thread monitoring many sockets for readiness
  • Add networking quickly with libcurl rather than writing low-level socket code
  • Understand why progress bars are often misleading due to unknown/variable work and throughput
  • Use checksums to detect corruption or tampering of data in transit
  • Treat sockets, pipes, and files uniformly via Unix file descriptors; use fdopen() when useful
  • Resolve hostnames to IP addresses in C using getaddrinfo() and iterate candidate addresses
  • Choose between TCP vs UDP; send UDP datagrams with sendto() without establishing a connection

Course Description

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.

Course content

  • Video class: How to build a web client? (sockets) 07m
  • Exercise: What key feature of sockets allows programs to communicate over long distances?
  • Video class: Program your own web server in C. (sockets) 12m
  • Exercise: When creating a basic web server using sockets, what is the main purpose of the 'accept' function?
  • Video class: Socket servers can get client addresses. (accept, inet_ntop) 02m
  • Exercise: What is the purpose of the inet_ntop function in this context?
  • Video class: Dealing with Endianness Issues in your Programs 06m
  • Exercise: In network communication, which byte order is considered the standard for network byte order on the Internet?
  • Video class: How to write a multithreaded server in C (threads, sockets) 14m
  • Exercise: Which of the following techniques is primarily used to enhance server performance by enabling it to handle multiple connections simultaneously?
  • Video class: Multithreaded Server Part 2: Thread Pools 08m
  • Exercise: What is the primary advantage of using a thread pool in a multi-threaded server?
  • Video class: How to write a multithreaded webserver using condition variables (Part 3) 07m
  • Exercise: What is the primary function of a condition variable in a multi-threaded server?
  • Video class: How one thread listens to many sockets with select in C. 12m
  • Exercise: Which of the following best describes the use of the 'select' function in network programming?
  • Video class: Easy Networking in C (libcurl) 14m
  • Exercise: What advantage does using a library like lib curl provide when adding networking capabilities to a program?
  • Video class: Why are Progress Bars Always Wrong? Progress Bar Example in C. 35m
  • Exercise: Why are progress bars often considered inaccurate or misleading in software applications?
  • Video class: Highlighting a Student Programming Project (Code Review) 12m
  • Exercise: What is a key benefit of engaging in personal coding projects when learning programming?
  • Video class: Detect Corruption with a Checksum 13m
  • Exercise: What is a primary purpose of using checksums in network communication?
  • Video class: Sockets and Pipes Look Like Files (Unix/fdopen) 12m
  • Exercise: In Unix-style operating systems, why do different components such as pipes, sockets, and files often appear similar to programmers?
  • Video class: How to get an IP address from a host name? (Example in C) 18m
  • Exercise: In network programming, if you want to convert a domain name into its respective IP address within your C program, which function is utilized to perform this conversion automatically, returning a linked list of possible addresses?
  • Video class: The two main types of network socket 06m
  • Exercise: In network programming, which type of socket is most appropriate for applications where data reliability is not critical, such as in live video streaming?
  • Video class: How to Send and Receive UDP packets (in C) 23m
  • Exercise: In network programming with C, when dealing with datagram sockets, which function is specifically used to send UDP packets to a specified address without establishing a connection?

This free course includes:

3 hours and 26 minutes of online video course

Digital certificate of course completion (Free)

Exercises to train your knowledge

100% free, from content to certificate

Ready to get started?Download the app and get started today.

Install the app now

to access the course
Icon representing technology and business courses

Over 5,000 free courses

Programming, English, Digital Marketing and much more! Learn whatever you want, for free.

Calendar icon with target representing study planning

Study plan with AI

Our app's Artificial Intelligence can create a study schedule for the course you choose.

Professional icon representing career and business

From zero to professional success

Improve your resume with our free Certificate and then use our Artificial Intelligence to find your dream job.

You can also use the QR Code or the links below.

QR Code - Download Cursa - Online Courses

More free courses at Web Development

Free Ebook + Audiobooks! Learn by listening or reading!

Download the App now to have access to + 5000 free courses, exercises, certificates and lots of content without paying anything!

  • 100% free online courses from start to finish

    Thousands of online courses in video, ebooks and audiobooks.

  • More than 60 thousand free exercises

    To test your knowledge during online courses

  • Valid free Digital Certificate with QR Code

    Generated directly from your cell phone's photo gallery and sent to your email

Cursa app on the ebook screen, the video course screen and the course exercises screen, plus the course completion certificate