Computer Systems Architecture

Higher education teachers: Šter Branko
Subject code: 63212

Subject description


  • As specified by internal acts of the University of Ljubljana and Faculty of Computer and Information Science.
  • Basics of digital circuits.

Content (Syllabus outline):

How are computers designed and how they work? Why has the principle of operation remained almost unchanged from the first computers to today? What is going on in the machine during problem solving? These are only some of the questions that are answered by the Computer Systems Architecture course.

During the course the students will in theory and on practical examples study the following topics:

  • Nature of computation, complexity, limitations, theoretical models of computation.
  • Survey of historical development of computing machines.
  • Von Neumann architecture model and basic principles of operation. Input and output, interrupts, locality of memory references, Amdahl’s law, hardware and software.
  • Representation of information and basic computer arithmetic.
  • Instructions and machine language: addressing modes, operations, formats, RISC-CISC.
  • Central processing unit: datapath with arithmetic-logic unit, control unit.
  • Analysis of CPU design and operation using a RISC computer as an example.
  • Instruction level parallelism: pipeline, pipeline hazards. Pipeline hazard elimination, dynamic scheduling, register renaming, speculative execution, multiple-issue processors. Thread level parallelism.
  • Main memory: technology, organization, protection.
  • Cache memories: principles of operation, types of cache misses, miss penalty, coherency problem.
  • Virtual Memory

Objectives and competences:

The aim of the course is to introduce students to the field of computer systems architecture. This is a fundamental field for all computer science students since it gives understanding of what a computing machine is. At the end of this course the students will know the basic elements of a computer, comprehend how this elements link together, distinguish different levels of programming, and understand the basis of computing machines design.


  • Developing skills in critical, analytical and synthetic thinking.
  • The ability to define, understand and solve creative professional challenges in computer and information science.
  • Basic skills in computer and information science.
  • Practical knowledge and skills necessary for successful professional work in computer and information science.

Intended learning outcomes:

Knowledge and understanding:
Understanding of computer systems architecture and basic tools for development of computing machines. These include quantitative methods for comparison and evaluation of different computer architectures.

Understanding of how computers work and what are their limitations represents the basis for high quality software development. It is also important for computer procurement.

Preventing a common situation where a computer is treated as a black box that executes programs in some mysterious way.

Transferable skills:
The course is complemented with courses teaching programming, algorithms and digital circuits.

Learning and teaching methods:

  • Lectures, laboratory work and homeworks.

Study materials

  • D. Kodek: Arhitektura in organizacija računalniških sistemov, Bi-Tim, Ljubljana 2008, poglavja 1 do 8.
  • Dodatna literatura:
  • J. L. Hennessy, D. A. Patterson: Computer Architecture: A Quantitative Approach, 4. izdaja, Morgan Kaufmann, San Francisco 2007.
  • D. A. Patterson, J. L. Hennessy: Computer Organization and Design: The Hardware/Software Interface, 4. izdaja, Morgan Kaufmann, Burlington 2009.