Master the foundational principles and advanced techniques of network programming and client-server architectures with this comprehensive, hands-on course designed for aspiring systems programmers and backend developers. You'll learn to build robust networked applications using socket programming with UDP, TCP, and SCTP protocols, while exploring inter-process communication mechanisms including signals, pipes, message queues, and shared memory. The course progresses from fundamental network concepts and layered architectures to advanced topics in distributed systems, remote procedure calls (RPC), and scalable server design patterns. Through practical implementation exercises, you'll develop real-world client-server applications including Telnet, FTP, and HTTP servers, while mastering performance optimization techniques for concurrent and preforked server architectures. You'll gain expertise in I/O models, asynchronous programming, network debugging tools like tcpdump and Wireshark, and distributed application frameworks. Whether you're preparing for roles in backend development, cloud computing, microservices architecture, or systems engineering, this course equips you with essential skills to design, implement, and optimize networked applications that power modern distributed systems and enterprise infrastructure.

Saving 40% on access to 10,000+ programs is a holiday treat. Save now.


Network Programming and Client-Server Programming

Instructor: BITS Pilani Instructors Group
Included with 
Recommended experience
What you'll learn
Write advanced C programs for OS and network-level tasks, including inter-process communication, threading, and synchronisation techniques.
Develop high-performance servers and distributed applications using client-server models, remote procedure calls, and socket programming.
Ensure efficient communication between hosts, processes, and threads while applying concurrency, synchronisation, and programming principles.
Skills you'll gain
- Distributed Computing
- Web Servers
- System Programming
- File Transfer Protocol (FTP)
- Application Programming Interface (API)
- OS Process Management
- Servers
- Microservices
- Systems Architecture
- TCP/IP
- Web Services
- Network Troubleshooting
- Debugging
- System Design and Implementation
- Network Architecture
- Network Performance Management
- Software Development
- Scalability
- Computer Networking
- Network Protocols
Details to know

Add to your LinkedIn profile
November 2025
See how employees at top companies are mastering in-demand skills

There are 10 modules in this course
In this module, you will learn the basics of computer networks and their architecture, the founding principle of the Internet and its architecture, addressing schemes at the data link layer (i.e, MAC address), network layer (i.e., IPv4 address), and transport layer (i.e., port numbers), and finally, you will have your first program that has the ability to communicate over a network.
What's included
11 videos5 readings10 assignments1 ungraded lab
In this module, you will learn the concept of process and its representations, requirements and mechanisms of interprocess communications, the use of signal, pipe, message queue, shared memory for interprocess communication, the concept of synchronisation, and the use of semaphores for process synchronisation.
What's included
14 videos4 readings16 assignments1 ungraded lab
In this module, your will learn BSD networking and hosts in the networks, testing connections between hosts and presence of hosts. You will also explore an advanced network simulation tool, named "mininet", for simulating networks. You will learn various networking APIs, APIs for clients and servers, IPv6 compatible APIs. Finally, TCP/IP big picture, basics of TCP, UDP, SCTP and IP, tracing and debugging simple programs and programs with system calls, sock and tcpdump will be covered.
What's included
12 videos5 readings14 assignments
In this module, you will learn UDP sockets and their usage to develop Echo client-server program, TCP sockets and their usage to develop Echo client-server program, and SCTP sockets and their usage in client-server programs.
What's included
9 videos4 readings11 assignments
In this module, you will learn the mechanism to measure server performance, simulating a large number of clients, measuring performance of a large variety of server design options, like TCP iterative server, concurrent server, server with preformed child processes without file locking, server with thread, servers with preformed child processes and file locking, servers with thread locking, develop HTTP client and server programs.
What's included
12 videos4 readings14 assignments
In this module, you will learn the basics of Telnet and its command structure, Telnet client and server programs, basics of FTP and its process model, FTP client and server programs, advantage of concurrency in server programs, and example implementations of a simple iterative and concurrent web search engines.
What's included
11 videos4 readings13 assignments
In this module, you will learn about the types of socket operation, types of I/O models, blocking and non-blocking I/O models, signal-driven and asynchronous I/O models. Finally, you will revisit str_cli() Function and then go on to develop a better str_cli() function.
What's included
10 videos4 readings12 assignments
In this module, you will learn the basics of remote procedure call, concept of door and use it for remote procedure call within a host, understand the function definitions and data structures used in door, get introduced to Sun RPC and use it to build up client-server applications.
What's included
11 videos4 readings13 assignments
In this module, you will explore the process of building distributed applications through the use of remote procedure calls (RPC). You will gain a deep understanding of how RPC allows communication between different systems over a network by invoking functions or procedures on remote servers as if they were local. The module will also cover how to represent and transmit data across networks in a way that is independent of any specific programming language, ensuring compatibility between different systems. Additionally, you will learn to work with popular RPC frameworks, gaining hands-on experience in implementing, managing, and optimising these frameworks for effective communication in distributed environments.
What's included
14 videos4 readings16 assignments
In this module, you will explore the core challenges faced when designing distributed systems, focusing on the complexities that arise from ensuring communication, consistency, fault tolerance, and scalability across multiple interconnected systems. You will delve into the various design approaches and architectural patterns used to address these challenges, such as client-server models, peer-to-peer networks, and hybrid architectures. Through these discussions, you will gain an understanding of the trade-offs involved in making design decisions, such as balancing performance with fault tolerance, or consistency with availability, which are critical in creating reliable and efficient distributed systems. The module will also cover distributed file systems, specifically the Network File System (NFS) and the Andrew File System (AFS). You will learn how NFS enables remote file access over a network, providing a seamless experience similar to local file access, and how AFS uses a more sophisticated approach with caching and replication mechanisms to improve performance and fault tolerance. By the end of the module, you will have a deeper appreciation for the complexities of distributed system design and the strategies employed to manage the inherent trade-offs in real-world applications.
What's included
14 videos4 readings16 assignments
Instructor

Explore more from Computer Security and Networks
Status: Free Trial
Status: Free Trial
Status: PreviewVanderbilt University
Status: Free Trial
Why people choose Coursera for their career





Open new doors with Coursera Plus
Unlimited access to 10,000+ world-class courses, hands-on projects, and job-ready certificate programs - all included in your subscription
Advance your career with an online degree
Earn a degree from world-class universities - 100% online
Join over 3,400 global companies that choose Coursera for Business
Upskill your employees to excel in the digital economy
Frequently asked questions
To access the course materials, assignments and to earn a Certificate, you will need to purchase the Certificate experience when you enroll in a course. You can try a Free Trial instead, or apply for Financial Aid. The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.
When you enroll in the course, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. Your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.
More questions
Financial aid available,
¹ Some assignments in this course are AI-graded. For these assignments, your data will be used in accordance with Coursera's Privacy Notice.

