Anno accademico 2020-2021


Federico Fontana
Yuri De Pra
Anno di corso: 1
Totale crediti: 12
Tipologia: Base
Periodo didattico: Primo Periodo
Prerequisiti. The course does not require any prerequisite.
Metodi didattici. Lectures, exercises, laboratory activities.
Modalità di verifica. The exam consists of a written test containing (typically 10 or 14, depending on the course study) questions drawing from the exercise and laboratory activity made during the year. Only exceptionally do students undertake a supplementary oral session.
Altre informazioni. The knowledge of the arguments for the exam must include the slides of the lectures and the exercises given in the classromm, both available on the e-learning web pages.


The course illustrates the structure and functioning of a computer and its various hardware parts. The analysis starts from elementary computer parts and moves ahead, until giving a complete perspective on nowadays architectures. To better highlight the relations between the hardware and software level, the course deals with assembly programming, digital circuit design, and a low-level explanation of an IoT architecture.

The expected learning outcomes are, as reflected in the following Dublin Descriptors. (Skills related to the disciplines)

Core skills

1.1 Knowledge and comprehension skills: past the exam, students will understand how computer hardware works; furthermore they will know the main factors that influence the performance of a computer.

1.2 Knowledge and comprehension applied skills: the laboratory activity will allow students to get used with the low-level design of both simple digital systems and programs in machine language, i.e. directly executable by the computer.

Soft skills

2.1 Judgement skills: students will learn tools for evaluating with ponder and choosing a hardware architecture.

2.2 Communication skills: students will learn the exact meaning of the different words used for properly describing characteristics and specifications of a computer.

2.3 Learning skills: the course aims at providing a conceptual framework, precise enough to secure a detail study of the diverse components finding place in a computer.


– Introduction: historical perspective on computer architecture, basic concepts, abstraction levels in computer architecture.

– Logic Circuits: logic gates, Boolean algebra, most frequently used combinatorial circuits, synthesis of sequential circuits, memory chips.

– Data Representation: binary representations, conversions, integer and floating-point numbers, character representation, error detection and correction.

– Processor: fetch-decode-execute cycle, data path, control unit, pipeline, superscalar processor, branch prediction, Intel Core and AMD ARM in few words.

– Machine language: evolution, data types, addressing, instruction types, instruction formats.

– Input/Output: programmed I/O, Interrupt, DMA, peripheral devices, bus, bus arbitration, strobe control, PCI, SCSI, USB.

– Memory hierarchies: cache memory, virtual memory, pagination and segmentation, MMU.

– Parallel architectures: classification, multiprocessor, multicomputer, processor interconnection, cache coherence.

– Assembly programming: ARM architecture. ARM assembly: assignment, branch instructions, arithmetic and logic instructions, subroutines.

– The Arduino board architecture and its Assembly programming for IoT applications.


The course consists also of 36 hours of laboratory activity. Subjects of this activity are the design of digital circuits and programming in assembly language.


Andrew S. Tanenbaum; Todd Austin. Computer Architectures (recent editions). Pearson.