Schema della sezione

  • Gentili studenti e studentesse, benvenuti al corso di INFORMATICA ed. 2025/26!

    Il corso è dedicato allo studio dei principi base dell'informatica, in un'ottica ampia, partendo dalle basi hardware di com'è fatto un elaboratore per arrivare a risolvere in modo consapevole problemi di ordinamento e ricerca su diverse strutture dati. Si tratterà in modo trasversale anche il tema della complessità computazionale. Si accennerà infine al machine learning e all'IA nelle ultime lezioni del corso.

    Il corso sarà diviso in due moduli principali:
    1. architettura degli elaboratori
    2. strutture dati e algoritmi

    Le strategie didattiche impiegate durante il corso saranno volutamente molto varie, includendo lezioni frontali, sessioni pratiche di esercitazione e laboratorio, uno o due seminari e altre attività di apprendimento collaborativo.
    Alcune delle sessioni pratiche richiederanno conoscenze basi di Python


    Titolare del corso: Prof.ssa Giulia Cisotto (personal website, email: giulia.cisotto@units.it)
    Tutor per sessioni di lab: Dott. Matteo Gallo


    Le lezioni inizieranno martedì 24 febbraio (h.14:00 in aula 4C) e termineranno verso fine maggio (la data esatta verrà comunicata durante il corso).


    Orario/luogo delle lezioni:
    - martedì,    14:00 - 16:00, aula 4C
    - mercoledì, 14:00 - 18:00, aula 3B
    - giovedì,     14:00 - 16:00, aula 4C


    Calendario puntuale delle lezioni/seminari (mercoledì in cui la lezione è solo dalle 16 alle 18):
    - febbraio: 24 - 25 - 26
    - marzo:   3 - 4 - 5 - 10 - 11 - 12 - 17 - 18 -19 - 24 - 25 - 26
    - aprile:  14 - 15 - 16 - 21 - 22 - 23 - 28 - 29 - 30
    - maggio:  5 - 6 - 7 - 12 - 13 - 14 - 19 - 20 - 21 - 26 - 27 - 28

    !! Ci potranno essere variazioni nel calendario delle lezioni, a seconda di eventuali altri impegni istituzionali o di ricerca della docente. In tal caso, verrà data comunicazione in anticipo.


    Sessioni di LABORATORIO:
    - marzo:  4 - 11 - 18 - 25 - 26
    - aprile:  29
    - maggio: 6 - 13 - 20


    Seminari: I seminari non sono obbligatori, ma frutteranno un bonus fino a 1 punto per il voto finale dell'esame.


    Registrazioni delle lezioni e slide:
    Dopo ogni lezione caricherò qui le slide usate con dei riferimenti utili per approfondimenti e la registrazione della lezione (non sarà possibile seguire la lezione online in tempo reale).

    Esami:

    L'esame consisterà in uno scritto con domande di tipo pratico (semplici problemi da risolvere, codice da interpretare o integrare) e un orale con domande su tutto il programma del corso. Si accede all'orale solo dopo aver conseguito un punteggio sufficiente nello scritto (≥18/30). Lo scritto/le prove parziali vale/valgono 40% dell'esame, l'orale vale 60%.

    Quindi il voto finale sarà: 0.4*voto_scritto + 0.6*voto_orale + bonus. 

    Date prove parziali. Se valutate positivamente (≥18/30), consentiranno l'accesso diretto alla prova orale.

    Parziale I       09/04/2026   h. 14:00       Aula 2A Edificio D

    Parziale II      fine maggio, dopo la fine del corso

    ----------------------------------------------------------------------

    Appello I scritto     04/06/2026   h. 14:00      Aula 5A

    Appello I orale      10/06/2026   h. 09:30      Aula 5A

    Appello II scritto    18/06/2026   h. 14:00      Aula 5A

    Appello II orale      24/06/2026   h. 09:30      Aula 5A

    Appello III scritto    02/07/2026   h. 14:00      Aula 5A

    Appello III orale      08/07/2026   h. 09:30      Aula 5A

    Appello IV scritto    08/09/2026   h. 14:00      Aula 5A

    Appello IV orale      11/09/2026   h. 09:30      Aula 5A

    Per gli studenti lavoratori: per questioni organizzative, vi chiedo cortesemente di inviarmi un'email, in modo da discutere la modalità della vostra partecipazione al corso, grazie.

  • Per il modulo 1: Patterson, David A., e John L. Hennessy. Computer Organization and Design: The Hardware/Software Interface (trad. Struttura e progetto dei calcolatori). Quinta edizione italiana condotta sulla sesta edizione americana, a cura di Alberto Borghese, Zanichelli, 2022. Una versione in inglese del libro (5^ ed.) è allegata sotto.

    Per il modulo 1: Appendici A e B dal testo A. S. Tanenbaum, "Structured computer Organization", 5th ed. Sono allegate qui sotto.

    Per il modulo 2: Cormen, Thomas H., et al. Introduzione agli algoritmi e strutture dati. 4ª ed., Pearson, 2023.

    • Informazioni generali sul corso, programma e metodologie didattiche, inclusi i lab, regole e date degli esami.

      Link alla registrazione Teams disponibile

      .

    • Sistemi numerici decimale, binario, esadecimale. Introduzione architettura di Von Neumann, concetto di transistor.

      Link alla registrazione Teams disponibile in

    • Conversioni tra basi, rappresentabilità e overflow.

      Link alla registrazione Teams disponibile

      .

    • Numeri interi negativi: modulo e segno, CA1, CA2. Numeri reali codificati in virgola fissa (SLIDE CORRETTE!).

      Link a registrazione Teams disponibile

    • Numeri reali in virgola mobile (standard IEEE 754).

      Link alla registrazione Teams disponibile

      .

    • Errata corrige su rappresentazione in virgola fissa unsigned/signed.

      Somma e sottrazione in binario base (per numeri interi positivi), in modulo e segno, in CA2.

      Shift destra/sinistra in modulo e segno, in CA2.

      Link alle registrazioni Teams disponibili

      (I parte) e  (II parte).

    • Introduzione al concetto di Instruction Set Architecture (ISA), filosofie di design per architetture di elaborazione, dettagli su architetture di elaborazione, gerarchie di memoria, memoria centrale in MIPS33, flusso di elaborazione (fasi di esecuzione di un'istruzione).

      Link a registrazioni Teams disponibili

       (I parte) e  (II parte). Il set di slide è unico (non comprende la parte di QtSpim perchè verrà ripresa nella prossima lezione frontale).

    • Convenzioni sull'uso della memoria, puntatori, concetto di ISA, formati R-type e J-type.

      Link alla registrazioni Teams disponibili

      (parte 1) e (parte 2).

    • Istruzioni J-type, I-type, 5 tipi di indirizzamento alla memoria. Alla fine del set di slide ci sono 3 esercizi proposti (la soluzione verrà data nei prossimi giorni).

      Errata corrige su ALLINEAMENTO PER ISTRUZIONI DI LOAD WORD e STORE WORD: devono avere offset multiplo di 4 byte. Per accedere al singolo byte in RAM si usano load byte e store byte (si veda slide aggiuntiva allegata qui).

      Link alla registrazione Teams disponibile

      .

    • Overview della catena programmativa, introduzione alla programmazione in Assembly.

      Link alla registrazione Teams disponibile

      .

    • Struttura programma Assembly (ERRATA CORRIGE: tabella di verità NOR e simboli operazioni logiche), istruzioni da poter usare in Assembly, catena programmativa con esempio.

      Le registrazioni di Teams sono disponibili

      e .

      Nota. A metà della lezione è stato fatto un quiz di autovalutazione con peer-review (circa 30').

    • Chiamate syscall, alcuni esempi di semplici programmi Assembly (con riferimento a QtSpim), procedure e uso dello stack della RAM, esempio di programma Assembly con 2 procedure annidate.

      Registrazioni Teams disponibili

      .

    • Esempio di esecuzione di un'istruzione con esplicitazione di controllo e datapath, introduzione alla logica combinatoria, algebra booleana e suoi assiomi/proprietà, teorema minitermini/maxtermini, porte logiche primitive e derivate, decoder, multiplexer, full adder.

      La registrazione della lezione è disponibile

      (senza pause).

    • Logica sequenziale, SR latch, D latch, D flip flop. Slide 22 (D Latch) corretta!

      Registrazioni Teams della lezione disponibili

      e .

    • Come si costruisce la ALU usando i circuiti in logica combinatoria?

      Nell'ultima slide ci sono anche degli esempi di possibili esercizi da parziale I.

      Registrazioni Teams disponibili

      e .

    • Circuiti in logica sequenziali per Register File e altri registri.

      Registrazioni Teams disponibili

      e .

    • Costruzione del datapath, concetto di Programmable Logical Array (PLA) e introduzione al controllo (Control Unit, ALU control).

      Introduzione alla sessione di jigsaw di domani.

      Registrazioni Teams disponibili

      e .

    • Datapath multi-ciclo, Control Unit, Finite State Machine (FSM), esempio completo di esecuzione di un'istruzione R-type.

      Le registrazioni Teams sono disponibili

      e .

    • Qui trovate le slide con il materiale necessario alla sessione di jigsaw di oggi.

      All'interno delle slide ci saranno dei riferimenti a slide delle lezioni precedenti, al libro di testo (Capitolo 5: Datapath, appena caricato nella sezione "Libri di testo") e video YouTube.

      Le slide sono così organizzate:

      • 2 slide di intro (docente)
      • materiale per lo studio individuale, a seconda del ruolo (operatore, controllore, macchinista)
      • materiale per ogni gruppo con distinzione dei ruoli