Computer Architecture



  • The general organization of computer hardware, and the inner workings of the CPU.
  • The hardware representation of data and instructions.
  • The translation process from C programs to assembly language and machine language.
  • The low level interfaces to I/O devices.
  • The organization and characteristics of memory units.

Competencies and aptitudes

  • C programming, assembly programming, translating between the two.
  • Detailled knowledge about the components of the Von Neumann architecture.

General characterization





Responsible teacher

Pedro Abílio Duarte de Medeiros


Weekly - 5

Total - 70

Teaching language



Introduction to Programming (Introdução à Programação) and Digital Systems (Sistemas Lógicos).


Dive Into Systems: A Gentle Introduction to Computer Systems, Suzanne Matthews et al., No Starch Press, 2022

Operating Systems: Three Easy Pieces v1.00 (2018) , Remzi Arpaci-Dusseau e Andrea Arapci-Dusseau,

How to Think Like a Computer Scientist - C VersionThomas Scheffler and Allen B. Downey,  June 27th, 2019,

Teaching method

In lectures we will explain and discuss the sequence of points in the course program. 

 During lab classes students will develop a series of practical programming assignments, whose objective is to apply and consolidate the concepts that were learned in lecture. 

Evaluation method

The final mark (FM) is obtained using two components: theoretical-practical mark (TPM) and laboratory mark (ML):

FM = 0,75*TPM+0,25*ML

theoretical-practical mark (TPM) is obtained in two tests or in final exam

TPM = (mark of test 1 + mark of test 2 ) / 2   or

TPM = mark of final exam

To pass the course TPM should be higher than 9,5

laboratory mark (ML): is obtained through 4 programmig assignments with marks NEP1, NEP2, NEP3, NEP4.  Programming assignments are developed in groups of two students.

ML = (NEP1 + NEP2 + NEP3 + NEP4) / 4

To pass the course and to have access to the final exam, ML should be higher than 6,0

Each mark NEPi has two components:

- NGi  group mark between 0 an 20, which is related with the functionality of the code delivered

- NTPi individual mark between 0 and 100, obtained through answers to a special part of the test with questions about programming assignments: in test 1 about 1st and 2nd assignment and in test 2 about 3rd and 4th assignment.

  1. if NTPi >= 50,  NEPi = minimum( 20 , NGi )
  2. else if NTPi >= 20,  NEPi = mínimum( 12, NGi )
  3. else the student shoud answer to oral questions. His answers will define NEPi that will be between  minimum( 10, NGi ) and  0

Subject matter

1. Levels in a computational system. Von Neumann architecture. Operating system level. Operating system functions; the file abstraction. The operating system command interpreter.

2. The CPU component: general organization, data representation, machine instruction types and formats, suport of high level programming language concepts by CPU instructions. 

3. The main memory (RAM) component: Levels of the memory hierarchy; Cache memory. Physical and Virtual Adresses. Paging. Compiling, linking  and loading.

4. The input/output system component: input/output devices, device support by the operating system.


Programs where the course is taught: