BIRLA INSTITUTE OF TECHNOLOGY & SCIENCE,
PILANI
WORK INTEGRATED LEARNING PROGRAMMES
Digital Learning
Part A: Content Design
Course Title Network Programming
Course No(s)
Credit Units 3
Credit Model
Course Author Prof Neena Goveas
Version No 0.1
Date Last updated on 17/1/2018
Course Objectives
No Course Objective
CO1 Systematically introduce the programming aspects so that student can make best use
of underlying operating system capabilities to achieve end-to-end network
communication.
CO2 Introduce Network API in Unix Systems and prepare students to design and develop
network-aware applications.
CO3 To study the design and implementation aspects of various approaches to client and server
design
CO4 To prepare students to design and develop robust and scalable client-server systems.
Teaching methodology
The Flipped based teaching methodology to be used:
a) Lectures: Recorded
b) Lab Exercises: Live
Text Book(s)
T1 Stevens, R.W., “Unix Network Programming, Vol-I Networking
APIS : Sockets and XTI”, Prentice- Hall of India, 3 rd Edition, 2004
Reference Book(s) & other resources
R1 The Linux Programming Interface: Linux and UNIX System
Programming Handbook by Michael Kerrisk, No Starch Press ©
2010
([Link]
Modular Content Structure
1. Overview of Linux/Unix System API
1.1 Functions of Linux Kernel
1.2 Introduction to System Call Interface
1.3 Basic Commands
2. Process Management
2.1 File I/O & I/O Buffering
2.2 Process Management - process creation, termination,
execution, child monitoring
2.3 Signals - Useful signals
2.4 File Permissions, Process Credentials
2.5 Process Groups, Sessions and Job Control
2.6 Daemons
2.7 Introduction to Pthreads - creation, termination, and
synchronization issues
3. Inter Process Communication within OS
3.1 Pipe
3.2 FIFO
3.3 Message Queues
3.4 Semaphores
3.5 , Semaphores
4. Network Process Communication
4.1 Overview of Transport Layer (TCP, UDP)
4.2 Socket Programming - Sockets API
4.3 Socket Programming - Implement TCP Client & Server
4.4 Socket Programming - Implement UDP Client & Server
4.5 Socket Programming - Building reliable UDP applications
4.6 Socket Programming - Domain Name Conversion
5. Network Process Communication - Advanced
5.1 Advanced I/O Functions
5.2 Raw Sockets - bypassing transport layer and access
datagrams of select protocols directly at IP layer
6. I/O Models
6.1 TCP client & server examples
6.2 Application layer issues
7. Client-Server Design
7.1 Raw Sockets - Introduction
7.2 Raw socket examples: ping, traceroute
Learning Outcomes:
No Learning Outcomes
LO1 With the clear understanding of approaches to design and implement network-
aware applications, students will be able to make design choices among various
approaches to network communication.
LO2 Student will be able to leverage the knowledge gained about API offered by
Unix-like systems to implement network applications.
LO3 Student will be able to gain knowledge about various approaches to client and
server design and will be able to make right choice for a given context.
Experiential learning components
1. Lab work:
a. Lab Infrastructure Needed: Ubuntu operating system; Free tools such
as gcc compiler, gdb debugger, make tool.
b. Number of Lab sessions: 8
2. Work integration:
Part B: Course Handout
Academic Term
Course Title Network Programming
Course No
Lead Instructor
Contac List of Topic Title Topic # Text/Ref
t Hour (from content structure in Part A) (from Book/ext
content ernal
structure resource
in Part A)
1 Overview of Linux/Unix System API 1.1, 1.2 R1: Ch1 & Ch2
Functions of Linux Kernel
Introduction to System Call
Interface
Basic Commands
2 Overview of Linux/Unix System API 1.3, 1.4 R1: Ch 4, Ch5,
Ch6, Ch24
File I/O & I/O Buffering
Process Management - process
environment, process creation
3 Overview of Linux/Unix System API 1.4, 1.5 R1: Ch 25,
Ch26, Ch27
Process Management - process
R1: Ch20
termination, execution, child
monitoring
Signals – Useful signals
4 Overview of Linux/Unix System API 1.6-1.8 R1: Ch22.8
R1: Ch9
File Permissions, Process
R1: Ch34,
Credentials Ch37
Process Groups, Sessions and Job
Control
Daemons
5 Overview of Linux/Unix System API 1.9 T1: Ch29/ R1:
Ch29, Ch30
Introduction to Pthreads - creation,
termination, and synchronization
issues
6 Inter Process Communication within OS 2.1-2.2 R1: Ch44
Need for IPC
Pipe & FIFO
7 Inter Process Communication within OS 2.3 R1: Ch45-
Ch49, 51
Message Queues
Semaphores
Shared Memory
8 Network Process Communication 3.1-3.2 T1: Ch2
Review of Transport Layer
Functionalities (TCP, UDP)
Sockets
9 Network Process Communication 3.2-3.3 T1: Ch3 - Ch5
Sockets API
TCP client & server implementation
10 Network Process Communication 3.4 T1: Ch7
Implement UDP Client & Server
11 Network Process Communication 3.5-3.6 T1: Ch22
Building reliable UDP applications
Domain Name Conversion
12 Network Process Communication 3.2-3.3 T1: Ch3 - Ch5
TCP client & server examples
Application layer issues
13 Network Process Communication 3.2-3.3 T1: Ch3 - Ch5
I/O Multiplexing
I/O models
14 Network Process Communication 3.2-3.3 T1: Ch3 - Ch5
Blocking server select()
Non-blocking server
Pre-threaded server
15 Advanced Network Process 4.3 T1: Ch28
Communication
Raw Sockets - Introduction
Raw socket examples: ping,
traceroute
16 Revision and Lab
Detailed Plan for Lab work/Design work
La Lab Objective Lab Content
b Sheet Reference
No Access
URL
1 Basic Linux commands TBD
2 Processes, memory layout, environment variables TBD
3 Signals TBD
4 Pipes TBD
5 Shared memory TBD
6 IO Multiplexing, Pthreads TBD
7 TCP and FTP TBD
8 UDP sockets, TBD
9 DNS TBD
Work integration: Detailed plan
No Activity description
Project work: None