Operating Systems System Calls: A "system call" is when a program directs the operating system to do something. Generally speaking, "classic programs" make little use of operating system calls. Write a program to convert Fahrenheit to Celsius: Getting input from the user: system call. Doing the math: not a system call. Printing out the answer: system call. Terminating program: system call. Nearly every language interface with the OS to handle input, output, and termination. IDEALLY, your language "should" be able to interface with the operating system to request ANY system call. "Nearly" every operating system has a "file hierarchy" and a "process hierarchy". A "file hierarchy" pertains to a directory/folder structure on a computer. You know, folders contain subfolders. Folders also contain files. Files have filenames AND pathnames. Filename: the name of the file. Pathname: how to get there from the root: Windows: C:\Users\apoe\Desktop\dontrunme.exe Linux: /home/apoe/Desktop/dontrunme The OS can probably take the pathname, find the delimiters (usually a / or \) and navigate the file system looking for the specific file. The "process hierarchy" : nearly every OS has a "process hierarchy". In other words, processes (or programs). And the processes are also usually organized in a tree structure so that a process has a parent process and often has child processes. The operating can create new processes (a process can spawn a child of itself). An operating system can also forcibly terminate existing processes. In Linux, what's the command to start a new process? fork. In Linux, you use fork to create a new process that is mostly a copy of the old process, and the new process usually then uses exec to change the program that is running. In Windows, there is a single command that handles both, it creates the new process and specifies its program with a single operating system call. But operating systems handle all of the nontrivial, nonarithemetic work of a program. Change your directory? Operating system. Check the date and time? Operating system. Print out a document? Operating system. Traditional program: solves an external problem using algorithms and math and stuff, and uses operating system calls minimally. Read stuff in, print stuff out. Terminate the program. That sort of thing. "Programming contest problems." Systems program: A program designed to solve a problem on the computer itself. For example, set up student course accounts, install passwords, send an e-mail. Set up a timer to remind you to do something in a hour. These sorts of programs make heavy use of operating system calls. (And remember, these calls can be wildly different depending on your operating system.) In C, you have access to the full array of operating system calls. So, you can write all sorts of cool stuff in C. And UNIX/Linux is such an easy operating system, I learned it in about a day.