An introduction to the functions of an operating system and their
underlying implementation. Topics include file systems, CPU and memory
management, concurrent communicating processes, deadlock, and access
and protection issues. Programming projects will implement and explore
algorithms related to several of these topics.