Outline
The tentative outline for the course follows the basic structure of the textbook. These topics may not be covered in the order appearing below.
There is a weeklong assignment for each unit. Two of these assignments are designated as exams: a midterm and a last (final) exam. Units may be covered in slightly different order during the term.
Introduction to Computer Systems: Overview of computer organization and architecture. Basics of computer hardware and software interaction. Machine-level representation of data.
Machine-Level Representation of Programs: Understanding assembly language. Control and data representation in the CPU. Memory hierarchy and its impact on performance.
Processor Architecture: CPU design principles. Instruction set architecture (ISA). Pipelining and its optimization techniques.
Optimizing Program Performance: Understanding performance metrics. Techniques for enhancing program efficiency. Analysis of benchmarks and profiling tools.
Memory Hierarchy: Caching principles and optimizations. Virtual memory concepts and management. Memory allocation strategies and their impact.
Linking: Linking process and executable file formats. Dynamic linking vs. static linking. Library design and usage.
Exceptional Control Flow: Handling exceptions and interrupts. Process control and context switching.System calls and their implementation.
I/O Systems: Principles of I/O devices and controllers. Buffering and caching for I/O performance. File system structures and organization.
Network Programming: Basics of network protocols. Socket programming and communication. Client-server model and networked applications.
Security and Protection: Threats to computer systems. Access control and authentication mechanisms.Principles of cryptography and secure communication.