Academic Year 2023-2024



Federico Fontana
Andrea Gulli
Ettore Ritacco
Course Year
Unit Credits
Teaching Period
First Period
Course Type
Prerequisites. The course does not require any prerequisite.
Teaching Methods. Lectures, exercises, laboratory activities.
Verification of Learning. 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 are students asked to attend a supplementary or alternative oral session.

Scoring criteria are listed in

More Information. 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. Videos of the lectures are taken and made accessible via MS Teams.
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 detailed study of the diverse components finding place in a computer.

– Introduction: short history of 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, MIC meta-processor, Intel Core and AMD ARM in few


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

instruction formats.

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

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

– 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 24 hours of laboratory activity. Subjects of this activity are the design of digital circuits and programming in assembly language by using the LogiSim and ARMsim software.

Laboratory program:

– L1: Introduction to the laboratory and application installation

– L2: Combinatorial circuits in Logisim

– L3: Decoders and multiplexers

– L4: Adder

– L5: Design of sequential circuits 1

– L6: Design of sequential circuits 2

– L7: Design of sequential circuits 3

– L8: ARM Assembly: introduction to ARMSim, examples of arithmetic

– L9 Assembly ARM: Arrays

– L10: ARM assembly: procedure call

– L11: Assembly ARM: file access

– L12: Assembly ARM: creation and management of simple lists.

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