CS239 Unix Systems Programming

Course Outline - 2114 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.
  2. More C
  3. Unix Environment: command line, globbing, I/O redirection, piping, basic commands.
  4. Memory layout. Debugging: GDB, valgrind, essential x86.
  5. 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. Implementing ls -l. Permissions, file owner / group, time-stamps.
  11. Signals and signal handling
  12. Design / implementation of sleep
  13. Process Relationships
  14. Backgrounding. Popen / pclose
  15. Midterm
  16. Terminal handling
  17. Review midterm
  18. Networking
  19. Client / Server. I/O multiplexing.
  20. Multi-threading: basics, mutual exclusion
  21. Multi-threading: bounded buffers, condition variables
  22. Multi-threading: deadlocks
  23. Non-blocking I/O. Regular expressions.
  24. Sys V IPC. Semaphores and shared memory.
  25. Shell scripting
  26. TBD