Computer Systems and Architectures

Objectives

This course unit is structured as software/hardware binomial to understand the basics of computing systems and the relationships between algorithms and application workloads.

  • Recognize the computer organization and its structure
  • Analyze the functionality of imperative programs (C-like)
  • Use tools to effectively compile HLL programs
  • Characterize the performance metrics and their relation to code
  • Assess the impact of implicit and explicit use of the memory hierarchy
  • Analyze the impact of superscalarity and vector processing on performance

Program

  • Structure and organization of a computer
  • Binary representation of integer and real numbers
  • Performance execution model (metrics and performance prediction)
  • Organization and performance-related concepts of the memory hierarchy
  • Pipelining, superscalarity, and vector processing
  • Shared memory parallelism on multicore devices

Bibliography

  • Computer Organization and Design: The Hardware/Software Interface, David Patterson and John Hennessy, 5th Edition, Morgan Kaufmann, 2013
  • Computer Systems: A Programmer’s Perspective, Randal E. Bryant and David R. O’Hallaron, 3rd Edition, Pearson, 2016
  • Algorithms in C: parts 1-4, Fundamentals, Data Structures, Sorting, and Searching, Robert Sedgewick, 3rd Edition, Addison-Wesley Longman Publishing Co., 1997

Updated: