Instructor: Hwansoo Han
A lab course for Linux systems programming: file I/O, processes, IPC, sockets, threads, and synchronization.
- Objective: Implement a memory-constrained, streaming text search program supporting single-word, multi-word, quoted phrase, and
*-wildcard queries. - Grade: 77.5/100
- Key Features: Stream large files (can be tens of GB), 1 GB memory assumption, per-test hard time limits; strict header restrictions and exact output format.
- Objective: Build six coreutils-style executables, then extend a Bash-like shell with pipes, redirection, job control, signals, and built-ins.
- Grade: 5/100
- Key Features: Implement
pa2_head/tail/cat/cp/mv/rm, shell grammar (EBNF), background jobs (&),fg/bg/jobs,cd/pwd/exit, and robust error handling; nosystem()/popen().
- Objective: Design and implement a multi-client reservation service with a thread-pool server (
pa3_server) and a client (pa3_client). - Grade: 93.98/100
- Key Features: 256 seats, one active user per client, synchronization per seat, NUM_CORES-sized thread pool; build & run via
make,./server port,./client addr port [file].
Weekly lab exercises covering topics such as file I/O, processes, multiplexing, IPC, daemon processes, threads, and synchronization.