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.

Network Programming and Client-Server Programming

Network Programming and Client-Server Programming

Instructor: BITS Pilani Instructors Group
Access provided by CENTRO DE GRADUADOS DE LA FIUBA
Recommended experience
Recommended experience
Beginner level
Proficiency in C programming, understanding of operating systems concepts, and basic knowledge of computer networks required.
Recommended experience
Recommended experience
Beginner level
Proficiency in C programming, understanding of operating systems concepts, and basic knowledge of computer networks required.
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
- Network Protocols
- Scalability
- Web Services
- Systems Architecture
- Servers
- System Programming
- Network Performance Management
- File Transfer Protocol (FTP)
- Microservices
- TCP/IP
- File Systems
- Application Servers
- System Design and Implementation
- Software Development
- Computer Networking
- Debugging
- Distributed Computing
- Network Architecture
Tools you'll learn
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
11 videos• Total 84 minutes
- Meet Your Instructor - Prof. Rajib Ranjan Maiti• 2 minutes
- Meet Your Instructor - Prof. Haribabu Kotakula• 1 minute
- Course Introductory Video• 9 minutes
- What is a Computer Network?• 7 minutes
- Layered Network Architecture• 8 minutes
- Internet Architecture• 11 minutes
- The Success of the Internet• 10 minutes
- Addressing Scheme at Network Access Layer• 15 minutes
- Addressing Scheme at Network Layer• 10 minutes
- Addressing Scheme at Transport Layer• 8 minutes
- Standalone• 5 minutes
5 readings• Total 200 minutes
- Course Overview• 30 minutes
- Course Structure & Critical Information• 10 minutes
- Recommended Reading: Introduction to Computer Networks• 60 minutes
- Recommended Reading: Implementation of Network Software• 60 minutes
- Recommended Reading: Example Networked Programs• 40 minutes
10 assignments• Total 84 minutes
- Test Yourself: Overview of Computer Networks• 30 minutes
- What is a Computer Network?• 3 minutes
- Layered Network Architecture• 3 minutes
- Internet Architecture• 3 minutes
- The Success of the Internet• 3 minutes
- Addressing Scheme at Network Access Layer• 3 minutes
- Addressing Scheme at Network Layer• 3 minutes
- Addressing Scheme at Transport Layer• 3 minutes
- Standalone• 3 minutes
- Let's Practice: Overview of Computer Networks• 30 minutes
1 ungraded lab• Total 60 minutes
- Practice Lab: Daytime TCP Programming in C• 60 minutes
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
14 videos• Total 110 minutes
- Process and its Representation• 7 minutes
- Creation of New Process• 8 minutes
- Mechanisms for IPC• 6 minutes
- Signals• 8 minutes
- Signal to a Process• 11 minutes
- IPC Using Simplex Pipe• 10 minutes
- IPC Using Duplex Pipe• 10 minutes
- Message Queue• 5 minutes
- Example of using POSIX Message Queue• 11 minutes
- Shared Memory• 8 minutes
- Basics of Synchronisation• 9 minutes
- Overview of CS Solutions• 7 minutes
- Basics of Semaphore• 7 minutes
- Semaphore to Classical Problem• 4 minutes
4 readings• Total 330 minutes
- Recommended Reading: Introduction to Process• 60 minutes
- Recommended Reading: IPC Primitives 1• 90 minutes
- Recommended Reading: IPC Primitives 2• 90 minutes
- Recommended Reading: Semaphores for Synchronisation• 90 minutes
16 assignments• Total 102 minutes
- Test Yourself: Inter-Process Communication• 30 minutes
- Process and its Representation• 3 minutes
- Creation of New Process• 3 minutes
- Mechanisms for IPC• 3 minutes
- Signals• 3 minutes
- Signal to a Process• 3 minutes
- IPC Using Simplex Pipe• 3 minutes
- IPC Using Duplex Pipe• 3 minutes
- Message Queue• 3 minutes
- Example of using POSIX Message Queue• 3 minutes
- Shared Memory• 3 minutes
- Basics of Synchronisation• 3 minutes
- Overview of CS Solutions• 3 minutes
- Basics of Semaphore• 3 minutes
- Semaphore to Classical Problem• 3 minutes
- Let's Practice: Inter-Process Communication• 30 minutes
1 ungraded lab• Total 60 minutes
- Practice Lab: Process Management and Inter-Process Communication in C• 60 minutes
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
12 videos• Total 76 minutes
- BSD Networking• 9 minutes
- Testing Network and its Hosts• 7 minutes
- Virtual Topology in Mininet• 8 minutes
- Basic Networking APIs• 6 minutes
- Networking APIs in Server Program• 8 minutes
- Networking APIs for IPv6 Compatible Client• 4 minutes
- TCP/IP Big Picture• 7 minutes
- TCP and UDP• 7 minutes
- IP and SCTP• 6 minutes
- Tracing a Simple User Program• 3 minutes
- Tracing a Program With System Call• 4 minutes
- Sock and TCPDump• 6 minutes
5 readings• Total 420 minutes
- Recommended Reading: BSD Networking and Hosts• 90 minutes
- Recommended Reading: BSD Networking and Hosts• 90 minutes
- Recommended Reading: Protocol Usage by Common Applications• 90 minutes
- Recommended Reading: Program Debugging Techniques• 90 minutes
- Practice Lab: Network Programming and Debuggingin C• 60 minutes
14 assignments• Total 96 minutes
- Test Yourself: Network Programming• 30 minutes
- BSD Networking• 3 minutes
- Testing Network and its Hosts• 3 minutes
- Virtual Topology in Mininet• 3 minutes
- Basic Networking APIs• 3 minutes
- Networking APIs in Server Program• 3 minutes
- Networking APIs for IPv6 Compatible Client• 3 minutes
- TCP/IP Big Picture• 3 minutes
- TCP and UDP• 3 minutes
- IP and SCTP• 3 minutes
- Tracing a Simple User Program• 3 minutes
- Tracing a Program With System Call• 3 minutes
- Sock and TCPDump• 3 minutes
- Let's Practice: Network Programming• 30 minutes
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
9 videos• Total 50 minutes
- UDP Sockets and Applications• 5 minutes
- UDP Echo Client and Server• 4 minutes
- When to Use UDP Socket• 4 minutes
- TCP Client Functions• 7 minutes
- TCP Server Functions• 7 minutes
- TCP Sockets Examples• 5 minutes
- Basics in SCTP Sockets• 6 minutes
- SCTP Sockets Functions• 6 minutes
- Client/Server Example with SCTP Sockets• 6 minutes
4 readings• Total 240 minutes
- Recommended Reading: UDP Sockets• 60 minutes
- Recommended Reading: TCP Sockets• 60 minutes
- Recommended Reading: SCTP Sockets • 60 minutes
- Practice Lab: Implementing UDP, TCP, and SCTP Client-Server Communication• 60 minutes
11 assignments• Total 87 minutes
- Test Yourself: Socket Interface• 30 minutes
- UDP Sockets and Applications• 3 minutes
- UDP Echo Client and Server• 3 minutes
- When to Use UDP Socket• 3 minutes
- TCP Client Functions• 3 minutes
- TCP Server Functions• 3 minutes
- TCP Sockets Examples• 3 minutes
- Basics in SCTP Sockets• 3 minutes
- SCTP Sockets Functions• 3 minutes
- Client/Server Example with SCTP Sockets• 3 minutes
- Let's Practice: Socket Interface• 30 minutes
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
12 videos• Total 82 minutes
- Performance of Server• 8 minutes
- Simulating Multiple Clients• 4 minutes
- TCP Iterative Server• 8 minutes
- TCP Concurrent Server• 5 minutes
- TCP Preforked Servers Without Locking• 10 minutes
- TCP Servers with Thread• 4 minutes
- TCP Preforked Servers with File Lock• 12 minutes
- TCP Preforked Servers with Thread Locking• 4 minutes
- HTTP Dialogue Basics• 8 minutes
- HTTP Client Program• 7 minutes
- HTTP Client Program (Contd.)• 5 minutes
- HTTP Server Program• 7 minutes
4 readings• Total 300 minutes
- Recommended Reading: Server Design• 60 minutes
- Recommended Reading: TCP Preforked Servers with File Locking• 90 minutes
- Recommended Reading: Real World Servers• 90 minutes
- Practice Lab: TCP Client-Server Communication• 60 minutes
14 assignments• Total 96 minutes
- Test Yourself: Client-Server Computing Model• 30 minutes
- Performance of Server• 3 minutes
- Simulating Multiple Clients• 3 minutes
- TCP Iterative Server• 3 minutes
- TCP Concurrent Server• 3 minutes
- TCP Preforked Servers Without Locking• 3 minutes
- TCP Servers with Thread• 3 minutes
- TCP Preforked Servers with File Lock• 3 minutes
- TCP Preforked Servers with Thread Locking• 3 minutes
- HTTP Dialogue Basics• 3 minutes
- HTTP Client Program• 3 minutes
- HTTP Client Program (Contd.)• 3 minutes
- HTTP Server Program• 3 minutes
- Let's Practice: Client-Server Computing Model• 30 minutes
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
11 videos• Total 75 minutes
- Basics of Telnet• 9 minutes
- Telnet Command Structure• 7 minutes
- Telnet Server• 5 minutes
- Telnet Client• 4 minutes
- Basics of FTP• 7 minutes
- FTP Process Model• 7 minutes
- FTP Server• 8 minutes
- FTP Client• 7 minutes
- Advantage of Concurrency in Server and Client• 6 minutes
- Sequential Web Search Engine• 8 minutes
- Concurrent Web Search Engine• 7 minutes
4 readings• Total 330 minutes
- Recommended Reading: Real World Servers for Remote Terminal• 90 minutes
- Recommended Reading: Real World Servers for File Transfer• 90 minutes
- Recommended Reading: Concurrency Issues in Server• 90 minutes
- Practice Lab: Implementing and Debugging an FTP Client-Server in C• 60 minutes
13 assignments• Total 93 minutes
- Test Yourself: Traditional Client-Server Applications• 30 minutes
- Basics of Telnet• 3 minutes
- Telnet Command Structure• 3 minutes
- Telnet Server• 3 minutes
- Telnet Client• 3 minutes
- Basics of FTP• 3 minutes
- FTP Process Model• 3 minutes
- FTP Server• 3 minutes
- FTP Client• 3 minutes
- Advantage of Concurrency in Server and Client• 3 minutes
- Sequential Web Search Engine• 3 minutes
- Concurrent Web Search Engine• 3 minutes
- Let's Practice: Traditional Client-Server Applications• 30 minutes
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
10 videos• Total 59 minutes
- Types of Socket Operations• 10 minutes
- Types of I/O Models• 4 minutes
- Blocking and Nonblocking I/O Models• 5 minutes
- Signal-Driven I/O Model and Asynchronous I/O Model• 4 minutes
- Revisiting str_cli() Function• 6 minutes
- Buffer Management• 5 minutes
- Better str_cli() – Part1• 5 minutes
- Improved str_cli() – Part2• 7 minutes
- Improved str_cli() – Part3• 5 minutes
- gf_time() and Timeline Diagram• 7 minutes
4 readings• Total 360 minutes
- Recommended Reading: I/O Models• 120 minutes
- Recommended Reading: Using I/O Models• 90 minutes
- Recommended Reading: Revisiting str_cli()• 90 minutes
- Practice Lab: Nonblocking Socket Programming and TCP/IP Communication in Solaris andUbuntu• 60 minutes
12 assignments• Total 90 minutes
- Test Yourself: Design Issues• 30 minutes
- Types of Socket Operations• 3 minutes
- Types of I/O Models• 3 minutes
- Blocking and Nonblocking I/O Models• 3 minutes
- Signal-Driven I/O Model and Asynchronous I/O Model• 3 minutes
- Revisiting str_cli() Function• 3 minutes
- Buffer Management• 3 minutes
- Better str_cli() – Part1• 3 minutes
- Improved str_cli() – Part2• 3 minutes
- Improved str_cli() – Part3• 3 minutes
- gf_time() and Timeline Diagram• 3 minutes
- Let's Practice: Design Issues• 30 minutes
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
11 videos• Total 72 minutes
- Basics of Procedure Calls• 7 minutes
- A Basic Client Example of Using Door• 4 minutes
- A Basic Server Example of Using Door• 7 minutes
- Control Flow in Door-Based RPC• 5 minutes
- Door Functions and Structures 1• 9 minutes
- Door Functions and Structures 2• 9 minutes
- Descriptor Passing• 6 minutes
- Descriptor Passing Program• 6 minutes
- Sun RPC Introduction• 8 minutes
- RPC Server Program• 7 minutes
- RPC Client-Server Design• 4 minutes
4 readings• Total 270 minutes
- Recommended Reading: Doors• 60 minutes
- Recommended Reading: Door Functions and Structures• 90 minutes
- Recommended Reading: Sun RPC• 60 minutes
- Practice Lab: UNIX Network Programming on Solaris OS using VirtualBox• 60 minutes
13 assignments• Total 93 minutes
- Test Yourself: Remote Procedure Calls• 30 minutes
- Basics of Procedure Calls• 3 minutes
- A Basic Client Example of Using Door• 3 minutes
- A Basic Server Example of Using Door• 3 minutes
- Control Flow in Door-Based RPC• 3 minutes
- Door Functions and Structures 1• 3 minutes
- Door Functions and Structures 2• 3 minutes
- Descriptor Passing• 3 minutes
- Descriptor Passing Program• 3 minutes
- Sun RPC Introduction• 3 minutes
- RPC Server Program• 3 minutes
- RPC Client-Server Design• 3 minutes
- Let's Practice: Remote Procedure Calls• 30 minutes
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
14 videos• Total 110 minutes
- Monolithic vs Distributed Programs • 5 minutes
- Communication Approaches for Distributed Programs• 6 minutes
- Need for Standard Network Representation• 5 minutes
- Data Representations• 5 minutes
- XDR Data Representation• 11 minutes
- Protocol Buffers • 5 minutes
- XML & JSON• 10 minutes
- RPC Subsystem• 10 minutes
- Call Semantics• 9 minutes
- Stubs and Skeletons• 5 minutes
- SUN RPC-1• 8 minutes
- Sun RPC 2• 16 minutes
- gRPC-1• 7 minutes
- gRPC-2• 6 minutes
4 readings• Total 200 minutes
- Recommended Reading: Distributed Applications• 20 minutes
- Recommended Reading: External Data Representations• 60 minutes
- Recommended Reading: Remote Procedure Calls• 60 minutes
- Practice Lab: Implementing Remote Procedure Calls (RPC) using gRPC• 60 minutes
16 assignments• Total 144 minutes
- Test Yourself: Distributed Programming• 30 minutes
- Monolithic vs Distributed Programs • 6 minutes
- Communication Approaches for Distributed Programs• 6 minutes
- Need for Standard Network Representation• 6 minutes
- Data Representations• 6 minutes
- XDR Data Representation• 6 minutes
- Protocol Buffers • 6 minutes
- XML & JSON• 6 minutes
- RPC Subsystem• 6 minutes
- Call Semantics• 6 minutes
- Stubs and Skeletons• 6 minutes
- SUN RPC-1• 6 minutes
- Sun RPC 2• 6 minutes
- gRPC-1• 6 minutes
- gRPC-2• 6 minutes
- Let's Practice: Distributed Programming• 30 minutes
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
14 videos• Total 127 minutes
- Characteristics of Distributed Systems• 8 minutes
- Challenges in Distributed Systems• 9 minutes
- CAP Theorem• 9 minutes
- Design Approaches - Architectural Considerations• 10 minutes
- Design Approaches for Scalability• 9 minutes
- Design Approaches for Distributed Data• 10 minutes
- Design Approaches for High Availability• 10 minutes
- Design Approaches - Communication and Security• 9 minutes
- Design Approaches - A Study of Google Search Engine• 6 minutes
- Design Approaches - A Study of AWS Dynamo System• 11 minutes
- Sun Network File System (NFS) - Architecture• 5 minutes
- NFS – RPC Calls• 12 minutes
- NFS – Caching• 11 minutes
- Andrew File System• 9 minutes
4 readings• Total 250 minutes
- Recommended Reading: Distributed Systems• 120 minutes
- Recommended Reading: Network File Systems• 60 minutes
- Practice Lab: Network File System• 60 minutes
- Course Summary• 10 minutes
16 assignments• Total 144 minutes
- Test Yourself: Distributed System Design• 30 minutes
- Characteristics of Distributed Systems• 6 minutes
- Challenges in Distributed Systems• 6 minutes
- CAP Theorem• 6 minutes
- Design Approaches - Architectural Considerations• 6 minutes
- Design Approaches for Scalability• 6 minutes
- Design Approaches for Distributed Data• 6 minutes
- Design Approaches for High Availability• 6 minutes
- Design Approaches - Communication and Security• 6 minutes
- Design Approaches - A Study of Google Search Engine• 6 minutes
- Design Approaches - A Study of AWS Dynamo System• 6 minutes
- Sun Network File System (NFS) - Architecture• 6 minutes
- NFS – RPC Calls• 6 minutes
- NFS – Caching• 6 minutes
- Andrew File System• 6 minutes
- Let's Practice: Distributed System Design• 30 minutes
Instructor

Offered by

Offered by

Birla Institute of Technology & Science, Pilani (BITS Pilani) is one of only ten private universities in India to be recognised as an Institute of Eminence by the Ministry of Human Resource Development, Government of India. It has been consistently ranked high by both governmental and private ranking agencies for its innovative processes and capabilities that have enabled it to impart quality education and emerge as the best private science and engineering institute in India. BITS Pilani has four international campuses in Pilani, Goa, Hyderabad, and Dubai, and has been offering bachelor's, master’s, and certificate programmes for over 58 years, helping to launch the careers for over 1,00,000 professionals.
Why people choose Coursera for their career

Felipe M.

Jennifer J.

Larry W.

Chaitanya A.
Explore more from Computer Science
VVanderbilt University
Course
BBirla Institute of Technology & Science, Pilani
Course
TThe Hong Kong University of Science and Technology
Course
VVanderbilt University
Course
¹ Some assignments in this course are AI-graded. For these assignments, your data will be used in accordance with Coursera's Privacy Notice.