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