14:332:456 Network Centric Programming

Course catalog description: Advanced programming with a focus on developing software for networked systems using Linux as a reference platform. Topics: Programming Tools, Software Design, Environment of a UNIX Process, Memory Allocation, Garbage Collection, Process Control, Process Relationships, Signals, Reliable Signals, Threads, I/O Multiplexing, Datagram and Stream Sockets, Multicasting, Device Driver and Kernel Programming, Secure Programming.

Credits and contact hours: 3 credits; 1 hour and 20-minute session twice a week, every week

Pre-Requisite courses: 14:332:351

Co-Requisite courses: None

Topics Covered:

  • Course Introduction; Unix Programming Environment: Build Systems, Configuration Management, Debuggers
  • Unix I/O: Standard I/O library, I/O system calls, redirection; Manipulating files and directories, File Access Control.
  • File access over the HTTP Protocol; Sockets Network Programming: Stream and Datagram sockets; Process Address Space and Environment, Process Control and Relationships. 
  • Basic and Reliable Signals 
  • Server design
  • Threads, synchronization primitives, I/O Multiplexing, hourly exam
  • Broadcasting and Multicasting
  • Device Drivers: Interrupt Handling, Char, Block, and Network Drivers, Kernel Development.
  • Secure Programming: Access Control, Buffer Overflow, Covert Channels, Secure Sockets
  • Network Programming in Java, Remote Procedure Calls 

Textbook: W. R. Stevens, B. Fenner, A. M. Rudoff, Unix Network Programming, Vol. 1: The Sockets Networking API, Addison-Wesley.

Other supplemental material: W. R. Stevens and S. Rago, Advanced Programming in the UNIX(R) Environment, Addison-Wesley.