This course examines operating system design concepts, data structures and algorithms, and systems programming basics. The topics to be covered (tentatively) include: Computer and operating system structures. Process and thread management. Process synchronization and communication. Memory management. Virtual memory. File system. I/O subsystem and device management. Selected examples in networking, protection and security.