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.