This course provides students with a practical understanding of how modern computer systems execute software and how hardware design influences application performance. Rather than focusing solely on architectural concepts, the course emphasizes the interaction between software and hardware, helping students develop a system-level perspective that is highly valued in modern engineering environments. Students learn the fundamental principles behind contemporary processors, memory hierarchies, and system performance, while gaining hands-on experience with industry-standard profiling and performance analysis tools.

Key topics include:

  • Processor and memory architecture fundamentals
  • Instruction execution and performance bottlenecks
  • Cache behavior and memory access patterns
  • The Out-of-order processor, strategies to exploit ILP
  • Hardware performance counters and profiling tools
  • Performance measurement and analysis methodologies

The practical component is structured around small research-oriented projects where students formulate hypotheses, collect performance data, analyze results, and draw evidence-based conclusions. This approach promotes critical thinking, analytical reasoning, and a deeper understanding of complex system behavior.

By combining architectural knowledge with empirical performance analysis, students develop the ability to evaluate, optimize, and reason about software running on modern computing platforms.