Network Centric Programming

Undergraduate course, 14:332:456:01, 2024

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.

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