Several people in the class have asked about running Linux on their home machines and have asked if Linux is suitable for this course, is it like Unix, what is it anyway?
The simple answer is that Linux is a version of Unix.
Unix is an operating system developed at Bell Labs in the early 1970's. The Unix package consisted of the kernel and a set of utility programs. These programs allowed users to list files, edit files, compile programs, and process text and data.
The kernel provided various services to user programs by means of system calls. This set of system calls defined an API. The user program did not need to know how the kernel opened a file, for instance, it just needed to know what arguments to pass and what the return value meant.
The Unix kernel presented an API and implemented a particular model of the internal workings of a computer.
In object oriented terms, Unix is a class with a well-defined set of methods. Bell Labs wrote the first instantiation of this class.
The details are complicated, twisted, and span decades. Unix was implemented by many companies in many different ways. The basic model of a Unix system did not change, and a core of the API, particularly the core that was compatible with the original Bell Labs implementation, was always preserved.
This backward compatibility means that programs written for the 1970's Version 7 Unix still compile and run on modern versions of Unix. Except for stuff that uses the terminal driver.
Linux is a kernel that implements the current standard for the Unix API. Programs written for Unix will compile and run on Linux and vice versa. It has some of its own extra features, just as each version of Unix has its own extra features. The core, though, works exactly like the core API for every version of Unix.