This course is the second part of a two semester sequence, Computer Systems I and II. The goal of this course is to bridge the gap between high-level programming and actual computer components, such as processors, caches, operating systems, compilers, linkers, and so on. This course will teach the way computer systems work from the low level device interrupts up to processes, threads, memory management, file systems and security. One main aspect of this course will be programming projects, which will enable hands-on learning while gaining valuable and practical experience in computer systems.
Note that this is a class on systems concepts, not on C programming. Most of the basic constructs such as if statements, loops, function syntax, switch case statements and operators are the same in C and Java, and you are expected to know them from CSC 1052.
- Understand the objectives and functions of modern operating systems
- Describe and use techniques for achieving concurrency and synchronization
- Explain the workings of a system with virtual memory management
- Understand basics of networking and Internet communication
- Describe the role of error correction codes in memories, storage and networks
- Understand security risks and protection mechanisms for computer systems
- CSC 2400 (Computer Systems I)