cod. 13598

Academic year 2017/18
1° year of course - First semester
Academic discipline
Informatica (INF/01)
Formazione informatica di base
Type of training activity
56 hours
of face-to-face activities
6 credits
hub: PARMA
course unit

Learning objectives

The course starts from the basics of information representation. It then passes through logic-level networks and their design. It eventually ends to provide the basic of architectural aspects of modern computers.
The course is structured into frontal lessons and a set of directed exercitations on logic networks and IA-32 assembly programming.

Taking Dublin Indicators into account:

Knowledge and understanding
The course introduces the first concepts related to the architecture of computers. Particular emphasis is given to the understanding of the classical architectures based on the Von Neumann model. The reference text is in Italian, but standard English terminology is commonly used during the lessons as goodwill to the consultation of the international scientific literature.

Applying knowledge and understanding
The knowledge presented is always applied to the resolution of specific problems. The exercises that accompany the course are focused on solving exercises and problems, particularly at the interface between hardware and software. Often the solution methods are presented in the form of an algorithm, developing in students the ability to structure procedures that are useful in many parts of computer science, and not only in the study of the computer architecture.

Making judgments
The exercises, which are proposed in relation to the theoretical part presented in class, can be solved individually or in groups. The comparison with classmates, work at home or in classroom, favors the development of specific skills in students to enable the explanation of arguments to fellows and teachers. Often the exercises can be solved in many different ways and listening to the solutions proposed by other allows students to develop the ability to identify common structures, beyond the apparent superficial differences.

Communication skills
The numerous discussions on the different methods to solve problems allow students to improve communication skills. Specific communication of computer technology is also usually used during classes and exercises.

Learning skills
The study of the origins of technological solutions and their introduction motivated by quantitative considerations contributes to the students’ ability to learn in a deep way and not just superficial and repetitive. The knowledge acquired is never rigid and definitive, but it is adaptable to any evolution and change of perspective and context.



Course unit content

Part I – Introduction to computing systems

Part II – Logic level

Part III – Functional level

Part IV – IA-32 Pipeline and assembly language

Part V – Multicore and GPU

Full programme

Part I – Introduction to computing systems
Computing systems
Historic and technological evolution
Architecture and organization of modern computers
System levels and models
Binary, hexadecimal and octal numeric systems
Binary representation of real numbers
Alphanumeric information and its representation
Representation of sounds, images and videos

Part II – Logic level
Algebra of networks
Elementary circuits
Canonical forms and transformations
Logic networks minimization
Combinatorial networks
Sequential networks

Part III – Functional level
Relationship between the functional level and micro-architectures
Organization of a modern computer
Instructions set
Memory systems
The I/O subsystem

Part IV – IA-32 Architecture and assembly language
IA-32 architecture
The CPU IA-32: memory management, registers, flags
IA-32 instructions set
Modern extensions to the instructions set: MMX, 3DNow!, SSE, SSE2
Assembly programming and interface with the C level

Part V – Software level
Basic introduction to operating systems
Basic introduction to compilers for C-like languages
Assembly code generation for a subset of the C language

Part VI – Micro-architetture level
The micro-architecture: hardwired and micro-programmed design
Micro-programmed architectures
Basic introduction on a micro-programmed architecture for NMOS 6502 CPUs
I/O management at the micro-architecture level: interrupts and DMA
Interaction with the software level


Giacomo Bucci. Calcolatori elettronici - Architettura e organizzazione, McGraw-Hill, 2009.

David A. Patterson, John L. Hennessy. Struttura e Progetto dei Calcolatori, Zanichelli, 2006.
Giacomo Bucci. Architettura e organizzazione dei calcolatori elettronici - Fondamenti, McGraw-Hill, 2004.
William Stallings. Architettura e organizzazione dei calcolatori - Progetto e prestazioni, Addison Wesley, 2004.
Andrew S. Tanenbaum. Architettura dei Calcolatori, 5a edizione, Prentice Hall, 2006.
Randall Hyde. The Art of Assembly Programming, disponibile online.

Teaching methods

Standard classes. There are no laboratory classes

Assessment methods and criteria

Learning outcomes and methods of verification
Being able to understand and make appropriate use of techniques relating to the representation of information. Being able to work at the logic level in the design of simple combinational and sequential synchronous networks. Knowing the basic architecture of the computers according to the Von Neumann Model both at functional and at micro-architecture levels. Know and be able to use the main techniques of assembly language programming for classical architectures.

Learning assessment/examination
The exam consists of a written test and an oral interview which can be accessed only after the written test. It is possible to take the written test several times, but each delivered written cancels the previous test.

Other information

More info at: