Section outline

  • Attenzione!

    Questa pagina non sarà più aggiornata. Per informazioni relative ai prossimi appelli e modalità d'esame del corso di Fondamenti di Informatica, a.a. 2021/22 (e precedenti), consultare la pagina web del corso dell'a.a. 2023/24.

    Scopo del corso è presentare i concetti fondamentali della logica, della architettura degli elaboratori (hardware e sistemi operativi), e dello sviluppo di pagine web. Il corso è diviso in due moduli: "Logica e Sistemi di Elaborazione" da 6 CFU e "Sistemi Operativi e Web" di 3 CFU. Quest'ultimo è ulteriormente diviso in due partizioni, a sconda dell'iniziale del cognome: A-L ed M-Z.

    Programma

    Quello che segue è una bozza del programma dettagliato, diviso in aree tematiche. Per ogni area tematica trovate il nome del modulo o dei moduli corrispondenti. Il simbolo EN fa riferimento al corrispondente capito del libro di Irv Englander (vedi materiale didattico integrativo dell'area tematica di rappresentazione binaria dei dati) mentre PA indica il teso di Dario Palladino.

    Logica (Logica e Sistemi di Elaborazione)
    • Inferenze e ragionamenti (PA introduzione)
    • Logica proposizionale
      • Proposizioni semplici e composte (PA 1 introduzione, PA 2 introduzione)
      • Connettivi vero-funzionali (PA 2.1 , PA 2.2)
      • Forme proposizionali (PA 2.3)
      • Tavole di verità delle forme proposizionali (PA 3.1)
      • Tautologie e contraddizioni (PA 3.1, PA 3.2)
      • Equivalenza e conseguenza logica (PA 4.1, 4.2, 4.3)
    • Logica dei predicati
      • Proposizioni semplici del 1° e del 2° tipo (PA 1.1 )
      • Quantificatori
      • Formule ben formate
      • Sintassi e semantica formale della logica dei predicati
      • Equivalenza e conseguenza logica

    Rappresentazione Binaria dei Dati (Logica e Sistemi di Elaborazione)
    • Sistemi di numerazione posizionali (EN 3)
      • numeri interi e frazionari
      • conversione tra basi
      • operazioni aritmetiche: somma, differenza e prodotto
      • base binaria, ottale ed esadecimale
    • Rappresentazione dei dati numerici (EN 5)
      • numeri interi positivi
      • numeri interi con segno: modulo e segno, complemento a 2
      • notazione scientifica e rappresentazione in virgola mobile
      • rappresentazione little-endian vs big-endian
    • Rappresentazione dei dati non numerici (EN 4)
      • valori booleani singoli e a mappa di bit
      • testo: set di caratteri, ASCII, ASCII esteso, Unicode
      • immagini: immagini bitmap e vettoriali, compressione lossless e lossy, video
      • audio: campionamento e quantizzazione, compressione lossless e lossy, file MIDI
      • linguaggi di descrizione di pagina

    Architettura e Sistemi Operativi (Logica e Sistemi di Elaborazione + Sistemi Operativi e Web)
    • Architettura degli elaboratori
      • CPU e memoria
      • Architettura di von Neumann e sue estensioni
      • Input/output
      • Periferiche
    • Il Little Man Computer (EN 6)
    • Sistemi Operativi
      • Struttura di un sistema operativo
      • Interfaccia utente
      • Gestione dei file
      • Funzionamento interno

    Linguaggi per il web (Sistemi Operativi e Web)
    • Principali protocolli per il web
    • Fondamenti di HTML e CSS

    Docenti

    Il modulo di "Logica e Sistemi Operativi" è tenuto dal prof. Gianluca Amato. Si rimanda alla pagina del profilo del docente per informazioni su come contattare il docente e sugli orari e modalità di ricevimento.

    Il modulo di "Sistemi Operativi e Web" è tenuto dalla prof.ssa Francesca Scozzari.

    Materiale didattico

    Consultare la sezione specifica per ogni area tematica.

    Modalità didattica

    Il corso si terrà in modalità "blended", con studenti in presenza e studenti collegati sulla piattaforma Microsoft Teams. I team per lo svolgimento delle lezioni sono i seguenti:


    Gli esami nella modalità a distanza (se previsti dal regolamento vigente al momento della sessione d'esame) si svolgereanno invece sul team per gli esami a distanza.
  • L'esame consiste in una prova scritta obbligatoria ed in una prova orale opzionale (su richiesta del docente o dello studente).

    La prova scritta consiste in una serie di sei esercizi (o domande a risposta aperta) sul programma del corso, della durata di un'ora e mezza. Ogni quesito viene valutato da 0 a 5 punti, per un voto massimo della prova scritta di 30, che verrà rivalutato del 10% (in modo che il massimo effettivo sia di 33 punti). La prova si considera superata se il voto (rivalutato) è maggiore o uguale a 18. In tal caso l'esame può essere verbalizzato direttamente. Gli studenti che alla prova scritta ottengono una votazione insufficiente (minore di 18) ma maggiore o uguale a 15 possono sostenere una prova orale.

    Lo studente che ha superato la prova scritta con votazione sufficiente può, su richiesta, sostenere una prova orale per provare ad aumentare il voto. Ovviamente il voto può anche diminuire (o, nei casi limite, si può essere bocciati). La prova orale può anche essere richiesta dai docenti.

    Parziali
    Sono previste cinque prove parziali. Ogni prova parziale ha un voto massimo di 5 punti e va a sostituire uno degli esercizi della prova scritta d'esame. Una prova parziale si considera superata con voto minimo di 2.5 punti (ma c'è una ecceziome per le prove di logica proposizionale e rappresentazione binaria dei dati). Chi ha superato una certa prova d'esame può evitare di svolgere il corrispondente esercizio alla prova finale: per quella prova verrà utilizzato invece il voto del parziale.

    • prova parziale su HTML e CSS, da svogere il 28 aprile 2022, della durata di 1h 15m. Ci saranno due turni: alle ore 9:00 e alle ore 11:00 (prenotatevi a vostra scelta).
    • prove parziali di logica proposizionale e rappresentazione binaria dei dati, da svolgere il 2 maggio 2022, alle ore 11:00 in aula 9-11, della durata di 1h 30m. Se la somma delle due prove è di almeno 5 punti, esse si considerano superate anche se, singolarmente, il voto non raggiunge i 2 punti e mezzo.
    • prova parziale su Little Man Computer e argomenti teorici di architettura e sistemi operativi, da svolgere il 25 maggio alle ore 9:00 in aula informatica, della durata di 1h30m.

    È sempre possibile rinunciare al voto delle prove parziali. Per far ciò è sufficiente che, durante il compito, lo studente svolga l'esercizio per cui non intende usufruire della prova parziale. Facendo così, però, il voto di quella prova parziale è PER SEMPRE inutilizzabile. Le prove parziali sono valide per tutto l'anno accademico 2021/22.

    Per partecipare all prove parziali è necessario prenotarsi sul sito https://udaonline.unich.it/.

  • Questa parte del corso si occupa di insegnare i fondamenti della logica matematica, sia proposizionale che dei predicati.
    • Materiale didattico

      Il libro di testo: le lezioni di logica seguono molto da vicino l'impostazione e i contenuti di questo testo. Le parti da studiare del libro vanno dall'introduzione fino al capitolo 5 più il capitolo 7.

    • Una breve dispensa con alcuni approfondimenti che fanno parte integrante del programma del corso.
    • Si faccia attenzione che le notazioni che appaiono in questi esercizi non sono del tutto consistenti con le notazioni che usiamo a lezione, soprattutto per ciò che riguarda la logica dei predicati.

    • Materiale didattico integrativo

    • Dettaglio delle lezioni

      Qui troverete il programma dettagliato delle lezioni e i file con il contenuto delle "lavagne". I file sono da utilizzare con il programma Xournal++.

      • 21/2/2022. Presentazione del corso. Introduzione alla logica.
      • 07/3/2022. Connettivi: negazione, congiunzione e disgiunzione. Forme proposizionali. (lavagna)
      • 14/3/2022. Implicazione, doppia implicazione, NAND e NOR. (lavagna)
      • 21/3/2022. Forme proposizionali: definizione formale. Tatutologie e contraddizioni. Equivalenza logica. (lavagna)
      • 28/3/2022. Semplificazione di forme proposizionali. Basi di connettivi. (lavagna)
      • 04/4/2022. La logica in elettronica. Metodo indiretto per la verifica delle tautologie. (lavagna)
      • 11/4/2022. Conseguenza logica e correttezza delle regole di inferenza. (lavagna)
      • 03/5/2022. Introduzione alla logica dei predicati. (lavagna)
      • 10/5/2022. Quantificatori limitati. Definizione formale di formula ben formata (lavagna)
      • 17/5/2022. Variabili libere e vincolate. Introduzione informale alla semantica della logica dei predicati (lavagna)
      • 23/5/2022. Formalizzazione della semantica della logica dei predicati. (lavagna)
      • 24/5/2022. Formule valide, equivalenza, conseguenza logica e regole di inferenza per la logica dei predicati (lavagna)
      • 26/5/2022. Esercizi di logica dei predicati (lavagna)
  • Questa parte del corso è incentrata su come rappresentare in forma digitale (sequenze di 0 e 1) informazioni di tutti i tipi: numeri, testo, immagini, audio, etc..
    • Materiale didattico

      Si può utilizzare uno di questi tutorial online:

    • Lezione 1 - 23/02/2022 e 24/02/2022

      Ambiente di sviluppo: Visual Studio Code

      Il World Wide Web

      Introduzione al linguaggio HTML


    • Una semplice pagina web

      <!doctype html>
      <html lang="it">
        <head>
      <title>La mia prima pagina</title>
      </head> <body> <h1>Ciao a tutti!</h1> <p>Questa è la mia prima pagina HTML.</p> </body> </html>

    • Esercizio: Si crei una pagina web con titolo: SOLDATI, che risulti come la seguente. Si salvi la pagina con nome soldati.html

      Soldati

      Si sta come
      d'autunno
      sugli alberi
      le foglie

    • Lezione 2 - 02/03/2022 e 03/03/2022

      • Grassetto e corsivo
        • <strong> <b> <em> <i>
      • citazioni
        • <blockquote cite="https://..."> <p> <cite>
        • <q cite="https://...">
      • abbreviazioni e definizioni
        • <abbr title="...">
        • <dfn title="...">
      • apici, pedici e variabili
        • <sup> <sub> <var>
      • testo preformattato
        • <pre> <code>
      • altri elementi
        • <del> <mark> <small> <ins datetime="..." > <time datetime="...">
      • commenti
        • <!-- ... -->

      • Elementi online e di blocco
    • Elenchi
      • Elenchi non ordinati <ul>
      • elenchi ordinati <ol type="..."> <ol start="...">
      • elementi <li> <li value="...">
      • elenchi annidati
      • liste di definizione <dl> <dt> <dd>


    • Lezione 3 - 09/03/2022 e 10/03/2022

      Le tabelle

      • I tag principali: <table> <tr> <td>
      • il template di una tabella: <caption>, <thead> (con <tr> e <th>) <tbody> <tfoot>
      • raggruppare celle <td colspan="2"> <td rowspan="2">
    • I link

      • <a href="https://........">
      • percorsi relativi
        • href="cartella1/cartella2/pagina.html"
        • href="../pagina.html"
      • nomi dei file:
        • non inserire spazi bianchi
        • maiuscole e minuscole sono diverse
      Link interno (àncora)
      • è un indice interno alla pagina
        • <a name="primo">
        • <a href="#primo">
        • <a href="#">link vuoto</a>
      Attributi dei link
        • title
        • target="_blank"
        • accesskey="a" (con ALT-SHIFT per Firefox, con ALT per Chrome)
      Modifica della cartella di base (nella head)
      • <base href="https://..../cartella">

    • Per inserire i bordi nelle tabelle si inserisca nell'head:

      <head>

          <style>
              table, th, td {
              padding: 10px;
              border: 1px solid black; 
              border-collapse: collapse;
              }
            </style>
      </head>

    • Lezione 4 - 16/03/2022 e 17/03/2022

      • Titoli <h1> - <h6>
      • Le immagini: <img> è un tag inline e senza contenuto (chiusura)
          • gli attributi:
            • src: indirizzo del file
            • alt: descrizione alternativa dell'immagine
            • title: mostra il tooltip
            • longdesc: link per una descrizione alternativa (non viene visualizzato)
        • immagini cliccabili
      • I file audio
        • <audio controls>
            <source src="file.mp3" type="audio/mp3">
          </audio>
        • attributi: controls, autoplay e loop
        • file alternativo se non supportato
        • <audio controls>
            <source src="file.mp3" type="audio/mp3">
            <source src="file.ogg" type="audio/ogg">
          </audio>
      • I file video
        • <video width="320" height="240" controls>
              <source src="video.mp4" type="video/mp4">
          </video>
        • attributi: controls, autoplay e loop
        • file alternativi con tag <source>
    • Il linguaggio CSS

      • Dichiarazioni CSS: proprietà: valore;
      • attributo globale HTML: style
      • classificazione elementi di blocco e inline
        • tag <span> per raggruppare elementi inline
        • tag <div> per raggruppare elementi di blocco
      • struttura ad albero di un documento: Document Object Model (DOM) e ereditarietà
      • tipi di valore
      • proprietà di base del testo
        • font-family font-size font-weight font-style line-height font-variant
        • text-shadow text-transform
        • text-align text-decoration
    • Lezione 5 - 23/03/2022 e 24/03/2022

      Fogli di stile

      <link href="stile.css" rel="stylesheet" type="text/css">

      Selettori

      • selettore di elementi
        • p {background-color: yellow;}
      • selettore universale
        • * {color: red;}
      • raggruppamento di selettori
        • h1, h2, h3 {background: white;}
      • Classi CSS
        • .testobianco {color: white;}
          • <p class="testobianco">....</p>
        • utilizzo di classi multiple
          • <p class="testobianco sfondorosso">....</p>
        • selettore di classi CSS
          • <elemento>.nome_della_classe
        • dichiarazione di classi multiple
          • p.testobianco.grassetto {color:white; font-weight:bold;}
          • <p class="testobianco grassetto">...</p>
      • Selettore di id
        • identificare in modo univoco un elemento
        • #titolo {color: blue;}
        • <h1 id="titolo">...</h1>
      • Pseudo-classi
        • dipende dallo stato di un elemento
        • pseudo-classi per i link <a>
          • link non visitati a:link a.classe:link
          • link visitati a:visited
        • pseudo-classi dinamiche
          • passaggio con il mouse sopra un elemento :hover (nell'ordine dopo link e visited)
          • selezione di un elemento :active
      • Specificità
      Lista dei selettori

    • Lezione 6 - 30/03/2022 e 31/03/2022


    • Lezione 7 - 06/04/2022 - 07/04/2022

      Utilizzo dei fogli di stile

    • Esercizio 1. Si scrivano 4 classi come segue:

      • .sx per posizionare un blocco a sinistra in modalità float;
      • .dx per posizionare un blocco a destra in modalità float;
      • .inizio che realizzi un oggetto float a sinistra, con carattere di 100px e altezza della linea 80% (utilizzare l'attributo CSS line-height: 80%;);
      • .giustificato che realizzi l'allineamento del testo giustificato.

      Utilizzando le classi si realizzi la seguente pagina.


    • Lezione 8 - 14/04/2022 e 27/04/2022

      Progettazione di stili CSS