CS3393 Unix Systems Programming

Course Outline - 2015 Fall

This is a tentative schedule of topics, intended to give you a heads up on what you will want to study. If there are other topics you would like to see covered, please let me know.

Lecture Topics

  1. Course overview, Unix History, Intro to C.
  2. More C
  3. Finish C
    Using Unix Environment (basics): command line, globbing, I/O redirection, piping, basic commands.
  4. Memory layout. Debugging.
  5. Process control: Fork, exec, wait.
  6. Process status, bit manipulation, sending signals
  7. Unix I/O
  8. Implementing I/O redirection, piping
  9. Directories and files. Walking a directory tree, exploring attributes.
  10. More on file systems: Implementing ls -l. Permissions, file owner / group, time-stamps.
  11. Signals and signal handling
  12. More signals: Design / implementation of sleep
  13. Implementing pipes, popen / pclose.
  14. Process Relationships
  15. Backgrounding.
  16. Midterm
  17. Terminal handling
  18. Review midterm
  19. Networking
  20. Client / Server. I/O multiplexing.
  21. Multi-threading: Pthread basics, mutual exclusion
  22. Multi-threading: bounded buffers, condition variables
  23. Multi-threading: deadlocks
  24. More Multi-threading
  25. Advanced thread / mutex / condition variable attributes
  26. Non-blocking I/O.
  27. Sys V IPC. Semaphores and shared memory.
  28. Other: Shell scripting, kernel modules special files, ...