Restricted to computer science majors. An introduction to low-level software abstractions with an emphasis on the connection of these abstractions to underlying computer hardware. Key abstractions include threads, dynamic memory allocation, protection, and IO. Requires writing of synchronized multi-threaded programs. Four lecture hours and two laboratory hours a week for one semester. Only one of the following may be counted: Computer Science 439, 439H, 352, 352H, 372, and 372H. Prerequisite: Computer Science 310, 310H, 429, or 429H with a grade of at least C-.