Advanced Programming in the UNIX Environment
https://stevens.netmeister.org/631/
Course Outline
In this course, students will learn to develop complex system-level software in the C programming language while gaining an intimate understanding of the Unix operating system (and all OS that belong to this family, such as Linux, the BSDs, and even Mac OS X) and its programming environment.
Topics covered will include the user/kernel interface, fundamental concepts of Unix, user authentication, basic and advanced I/O, fileystems, signals, process relationships, and interprocess communication. Fundamental concepts of software development and maintenance on Unix systems (development and debugging tools such as "make" and "gdb") will also be covered.
Students are expected to have a good working knowledge of the C programming language, have written non-trivial programs before, and to be able to competently use a Unix system with a command-line shell interface. All coursework will be done exclusively on a Unix system from the command-line. All programming is done in C. This is not an introduction to using Unix nor to programming in C!
If you email me to waive the prerequisites, please provide information about how you meet the requirements listed above in bold. (This has the added benefit of showing that you've actually read at least this far on this page.)