Course info

Course Overview


Questo è un insegnamento fondamentale del Corso di Laurea in Informatica Applicata dell’Università di Urbino. Lo insegno da anni, a studenti che seguono in presenza e online, ma per la prima volta lo apro a chiunque. Seguendo il MOOC potrai confrontarti con i miei studenti e lavorare con loro. Farò lezione in diretta, ma tutti i contenuti resteranno fruibili on demand.

Non ci sono prerequisiti. Se non capirai qualcosa la colpa sarà solo tua e mia. Non potremo prendercela né con la difficoltà intrinseca della teoria né con gli insegnanti che ti avrebbero dovuto dare basi più solide.

Qui le basi sono elementari come i concetti di vero e falso, acceso e spento. Tutto il resto lo scopriamo insieme, arrivando a comprendere cosa sono i bit, come fanno a rappresentare qualunque cosa, come sono fatti i computer e come fanno a funzionare sempre più velocemente costando sempre meno.

Partendo da un semplice interruttore impareremo a progettare componenti via via più complessi arrivando a vedere come sono fatti i computer e a comprendere a fondo gli accorgimenti architetturali che sono alla base del funzionamento dei sistemi a microprocessore.

Vedremo cosa succede all’interno del microprocessore e della memoria quando viene eseguito un programma  e impareremo a scrivere programmi che sfruttino al meglio le caratteristiche dell’hardware.

Se, seguendo il corso, maturerai ulteriori interessi per la materia potrai sempre decidere di iscriverti all'Università per sostenere l'esame finale di questa singola attività formativa, o per conseguire la Laurea in Informatica Applicata. Ma sarà una tua scelta. Per ora non devi fare altro che seguire con interesse. Il corso è libero e gratuito.

Buon divertimento.



Learning Objectives

Il Corso ha lo scopo di descrivere l'architettura di un calcolatore, con particolare riferimento al pipelining e alla gerarchia di memoria, fornendo gli elementi teorici necessari a motivarne le scelte progettuali, a comprenderne il funzionamento, a valutarne le prestazioni, e a comprenderne la relazione con le tecniche di programmazione in assembly e ad alto livello.

Outcomes

Conoscenza e comprensione

Lo studente acquisirà le conoscenze fondamentali nel campo delle architetture degli elaboratori e delle basi teoriche che ne sono il fondamento, con particolare riferimento a: rappresentazioni digitali delle informazioni, reti di interruttori, porte logiche, reti logiche combinatorie e sequenziali, sistemi digitali sincroni, sistemi a microprocessore, memorie a semiconduttore, interfacce hardware-software e sincronizzazione dei componenti di un sistema. Lo studente comprenderà i principi e il funzionamento dei principali accorgimenti architetturali, tra i quali il pipelining, il data forwarding, il caching e la memoria virtuale. Lo studente acquisirà inoltre le conoscenze d base sull'esplorazione dello spazio di progetto di sistemi hardware-software valutando le metriche fondamentali e mettendo a confronto soluzioni alternative.

Capacità di applicare conoscenza e comprensione

Lo studente sarà in grado di progettare e simulare a livello logico, a livello gate e a livello register-transfer semplici sistemi digitali e componenti aritmetico-logici, applicando teniche di sintesi logica e strategie di progetto top-down e bottom-up. Sarà in grado inoltre di tradurre in assembly semplici segmenti di codice e effettuarne ottimizzazioni statiche al fine di ridurre l'incidenza di conflitti che possano causare stalli della pipeline.

Autonomia di giudizio

Lo studente sarà in grado di valutare e confrontare soluzioni alternative che implementano la setssa specifica, valutando le metriche di progetto a fine di verificare il rispetto dei vincoli e prendere decisioni orientate all'ottimizzazione.

Abilità comunicative

Lo studente sarà in grado di usare in modo appropriato la terminologia propria della materia e di metterla in relazione alla terminologia delle altre discipline del corso di studi. Avrà inoltre opportunità di lavoro in gruppo e di esposizione dei progetti svolti.

Capacità di apprendimento

Lo studente acquisirà la capacità di apprendere le criticità dei sistemi hardware-software e di comprendere a fondo la logica delle soluzioni architetturali adottate per risolverle. Tali capacità potranno essere applicate in autonomia per affrontare lo studio di problematiche e soluzioni architetturali non trattate nel corso.

Certification and Additional Info

La frequenza del corso porta al conseguimento dell'attestato di Frequenza di EMMA.

La consegna dei compiti assegnati durante il corso porta al conseguimento dell'attestato di completamento, rilasciato in forma di OpenBadge.

L'eventuale iscrizione all'Università di Urbino (a singola attività o al Corso di Laurea in Informatica Applicata) consente anche di sostenere la prova d'esame per il conseguimento di 12 CFU.

Course Structure

  • Lesson 1 - Introduzione
  • Lesson 2 - Codifica delle informazioni
  • Lesson 3 - Reti logiche
  • Lesson 4 - La macchina di Von Neumann
  • Lesson 5 - Architettura interna della CPU
  • Lesson 6 - Ottimizzazione delle prestazioni di un microprocessore
  • Lesson 7 - La memoria
  • Lesson 8 - La comunicazione

Teacher

Alessandro Bogliolo


Alessandro Bogliolo is the coordinator of the School of Information Science and Technology at the University of Urbino, Italy, where he teaches Computer architecture and Digital platforms for land management.
His research interests include wireless sensor networks, crowd sensing, collective intelligence, and ultra-low power computing.
Since 2013 he has been actively promoting the diffusion of computational thinking skills, serving as Europe Code Week Ambassador, founding Code's Cool, and developing DIY unplugged games (Cody Roby). In 2015 he coordinated Europe Code Week. 
Alessandro Bogliolo is also serving as e-skills for jobs ambassador.