Courses

CSci 493.66, UNIX System Programming (formerly UNIX Tools)

I created this course originally to be what its original name suggested, a tutorial on a rather large collection of UNIX Tools, ranging from text tools such as sed, awk, and grep, to shell scripting and a smattering of Perl, to an overview of the UNIX environment and its structure. The course was based on a similar course taught by Matthew Smosna, a dear friend who taught it at NYU as well as other universities in the New York region, who passed away in 1997. The course in its original form met its demise by about the year 2001 and was reborn as a course in systems programming in UNIX.

From 2001 through 2008, the course contained a short tutorial on Perl to satisfy the cravings of students who wanted to learn Perl but had not taken the initiative to learn it on their own. It then changed into a course that is mostly about writing programs against the UNIX API, covering all of the basic parts of the kernel interface and libraries, including files, processes, terminal control, signals, and threading. It requires writing many programs, culminating in a simple game using the Ncurses library. This course requires that the student has had a course in operating systems and at least two semesters of C or C++ programming.

Lecture Notes

Course Lecture Notes

Course Home Pages

Home page for Spring 2024
Home page for Fall 2023
Home page for Spring 2008
Home page for Spring 2011
Home page for Spring 2012