FONDAMENTI D’INFORMATICA 1

14 ottobre 2021

Corsi di laurea in Ing. Civile e Ing. per l’Ambiente e il Territorio

Anno accademico 2021/2022


Descrizione del corso

Questo corso si rivolge agli studenti del primo anno dei corsi di laurea in Ing. Civile e Ing. per l’Ambiente e il Territorio, e fornisce conoscenze di base sui principi dell’organizzazione e del funzionamento dei calcolatori, sui linguaggi di programmazione di alto livello e sul linguaggio Python. Gli studenti che supereranno l’esame:

  • conosceranno i principi elementari dell’organizzazione hardware e software dei calcolatori
  • conosceranno gli elementi di base del linguaggio Python, comuni a tutti i linguaggi di programmazione di alto livello
  • sapranno formulare algoritmi per la risoluzione di semplici problemi di elaborazione di dati, e sapranno codificarli in programmi in linguaggio Python

Programma del corso

  • Organizzazione e funzionamento dei calcolatori, sistemi operativi (lezioni: 2 ore)
    Cenni storici. “Architettura di Von Neumann”, esecuzione dei programmi, linguaggio macchina. Principali funzioni e struttura dei sistemi operativi.
  • Codifica binaria dell’informazione (lezioni: 4 ore; esercizi in aula: 2 ore)
    Codifica analogica e numerica (“digitale”). Codifica dei numeri naturali, interi (segno e valore, complemento a due) e reali (virgola fissa, virgola mobile); cenni alla codifica di informazione non numerica (testi, immagini, filmati, suoni).
  • Concetti di base sugli algoritmi, sui linguaggi di programmazione di alto livello e sugli ambienti di programmazione (lezioni: 1 ora).
  • Il linguaggio Python (lezioni: 30 ore; esercizi in aula: 21 ore; esercitazioni di tutoraggio al calcolatore: 20 ore)
    • Principali tipi di dato Python: numeri interi, numeri reali, stringhe di caratteri, valori booleani. Tipi di dato strutturati: liste e dizionari. Operatori ed espressioni principali su tali tipi di dato: operatori di confronto; operatori logici andor e not; liste e stringhe: concatenazione, indicizzazione, sezionamento (slicing), operatori in e not in; dizionari: indicizzazione e inserimento di nuovi elementi.
    • Istruzioni e funzioni predefinite principali: assegnamento; condizionale (ifif-elseif-elif-else); iterativa (whilefor); le funzioni print e input; l’istruzione break.
    • Strutturazione dei programmi: le funzioni. Funzioni predefinite: la libreria standard di Python, le librerie math e random. Definizione di nuove funzioni: l’istruzione def, parametri, chiamata, argomenti; visibilità locale dei parametri e delle variabili di una funzione; l’istruzione return.
    • Accesso ai file: tipi di file; gestione dei file di testo; modalità di accesso; le funzioni openclosereadreadlinereadlineswrite.
    • Algoritmi di ricerca e ordinamento: ricerca binaria e sequenziale, ordinamento per selezione e per inserimento; codifica in linguaggio Python.

Testi di riferimento

Si consigliano due testi alternativi sull’organizzazione e il funzionamento dei calcolatori, i sistemi operativi e la codifica binaria:

  • S. Ceri, D. Mandrioli, L. Sbattella, P. Cremonesi, G. Cugola, Informatica: arte e mestiere, 4a ed., 2014, McGraw-Hill (o edizioni precedenti): capitoli 1-3, 12, 13, 20
  • Donatella Sciuto, Giacomo Buonanno, Luca Mari, Introduzione ai sistemi informatici, 5a ed., 2014, McGraw-Hill (o edizioni precedenti): capitoli 1-4, 6, 7

Per il linguaggio Python si suggerisce il testo seguente: C. Horstmann, R.D. Necaise, Concetti di informatica e fondamenti di Python, Maggioli, 2014: capitoli 1-8, 12 (esclusi § 2.6, 5.9, 6.7, 7.3-7.6, 8.1, 8.3.1, 12.4, 12.5).

Tutti i testi consigliati sono disponibili in più copie presso la Biblioteca della Facoltà di Ingegneria e Architettura.


Organizzazione e orario

Le lezioni per l’A.A. 2021/2022 inizieranno lunedì 27 settembre, e si svolgeranno secondo il seguente orario:

  • lunedì, 9-11, aula B_TC (ex C)
  • mercoledì, 11-13, aula L_TB (ex Z)
  • venerdì, 9-11, aula I_2A (ex U)

Le lezioni vengono anche trasmesse e registrate attraverso la piattaforma Teams, nel canale Fondamenti d'Informatica 1 – Lezioni del gruppo Ingegneria per l'Ambiente e il Territorio - 1° Anno (al quale possono accedere anche gli studenti di Ingegneria Civile). È consentita la visione delle registrazioni, ma non il loro scaricamento.

Le esercitazioni di tutoraggio inizieranno nella settimana del 19 ottobre, e si svolgeranno in modalità telematica sulla piattaforma Teams, in un canale dedicato il cui codice è riportato nel canale usato per le lezioni, secondo il seguente orario provvisorio:

  • lunedì, 18-20: Ing. Civile
  • martedì, 18-20: Ing. per l'Ambiente e il Territorio

Testo e soluzione di ogni esercitazione verranno resi disponibili nella sezione Materiale didattico di questa pagina web.


Materiale didattico

Nota bene: il materiale didattico disponibile in questa pagina non è in alcun modo sostitutivo dei testi di riferimento sopra indicati (o di altri testi equivalenti), che restano indispensabili per la comprensione di tutti gli argomenti del programma.

Lezioni

Esercitazioni di tutoraggio svolte nell’A.A. 2020/2021

Esempi di esercizi d’esame (aggiornati il 27/12/2020)

Ambienti di programmazione Python

Per la programmazione in linguaggio Python si userà l’ambiente di programmazione IDLE, disponibile per tutti i principali sistemi operativi. IDLE può essere saricato dal sito Web www.python.it, nella sezione Download. Nel corso verrà usata la versione 3 (attualmente 3.10). Gli studenti degli anni accademici 2018/2019 e precedenti potranno usare la versione 2, anche negli esami.

Registrazioni delle lezioni dell'A.A. 2020/2021

Le registrazioni delle lezioni svolte in Aula virtuale disponibili attraverso i link riportati qui sotto non sono state oggetto di post-produzione, ma sono la mera riproduzione della lezione svolta in modalità telematica. Le registrazioni sono disponibili esclusivamente per un uso strettamente personale e ad esclusivo fine di studio. Secondo quanto disposto nel Decreto Rettorale 341/2020 del 24/03/2020 (art. 4): “È fatto divieto agli studenti fruitori di registrare, fare copia, elaborare o diffondere in alcun modo, nonché di utilizzare per altre finalità diverse da quelle didattiche o comunque con altre finalità e modalità non consentite dalla normativa, il materiale in teledidattica messo a disposizione dall’Ateneo”.

  • 5/10/2020: Introduzione al corso. Organizzazione dei calcolatori: architettura di Von Neumann.
  • 8/10/2020: Organizzazione dei calcolatori: gerarchia di memorie. Il sistema operativo. Esempio di programma e sua esecuzione.
  • 12/10/2020: Formulazione di algoritmi e loro rappresentazione mediante diagrammi di flusso.
  • 15/10/2020: Formulazione di algoritmi e loro rappresentazione mediante diagrammi di flusso.
    (La registrazione non è andata a buon fine. Gli esercizi svolti a lezione hanno riguardato gli algoritmi per il calcolo delle radici di un’equazione di secondo grado e della somma di una sequenza di numeri, con l’introduzione dello schema di esecuzione iterativo. Le soluzioni e una loro descrizione sintetica sono disponibili nella traccia delle lezioni.)
  • 19/10/2020: Formulazione di algoritmi e loro rappresentazione mediante diagrammi di flusso.
  • 22/10/2020 (parte I, parte II): Linguaggi e ambienti di programmazione. Ambiente di programmazione IDLE per il linguaggio Python. Primi elementi di Python: istruzione di assegnamento, variabili, espressioni numeriche, stringhe di caratteri, la funzione print.
  • 26/10/2020: La funzione input. Principali funzioni predefinite: eval, len, abs.
  • 29/10/2020: La libreria standard di Python. La funzione type. La libreria math. L’istruzione from-import. Uso interattivo della shell. Espressioni condizionali: operatori di confronto, i valori logici (“booleani”) True e False.
  • 2/11/2020: Espressioni condizionali composte: gli operatori logici and, or e not. Istruzione condizionale: if-else, if; istruzioni condizionali nidificate.
  • 5/11/2020: Istruzione condizionale: le varianti if-elif-else e if-elif. Istruzione iterativa: while.
  • 9/11/2020 (parte I, parte II, parte III): Esempi di formulazione di algoritmi e loro codifica in programmi Python: massimo di una sequenza di numeri, fattoriale, massimo comun divisore (mediante ricerca a ritroso e mediante il Teorema di Euclide), primalità di un numero.
  • 12/11/2020 (parte I, parte II, parte III): Codifica binaria dell’informazione: codifica analogica e numerica, codifica numerica binaria; sistemi di numerazione posizionali, passaggio tra basi di numerazione diverse; codifica dei numeri interi: segno e valore.
  • 16/11/2020 (parte I, parte II, parte III): Codifica binaria dell’informazione: codifica dei numeri interi in complemento a due; codifica dei numeri frazionari in virgola fissa e in virgola mobile.
  • 19/11/2020 (parte I, parte II, parte III): Il tipo di dato lista: rappresentazione di valori di tipo lista, principali operatori (confronto, in e not in, concatenazione, indicizzazione) e funzioni predefinite (len). Costruzione di una lista per concatenazione.
  • 23/11/2020 (parte I, parte II, parte III): Accesso agli elementi di una lista mediante l’uso di variabili come indici. L’operatore di slicing. Modifica degli elementi di una lista mediante l’istruzione di assegnamento e l’operatore di indicizzazione. Variabili che si riferiscono a una stessa lista.
  • 26/11/2020 (parte I, parte II, parte III): I tipi di dato lista e stringa (sequenze): operatori e funzioni predefinite comuni; liste come dati mutabili, stringhe come dati immutabili. Sequenze nidificate all’interno di liste. L’istruzione break. L’istruzione iterativa for.
  • 30/11/2020 (parte I, parte II, parte III): Il tipo di dato dizionario: rappresentazione, principali operatori (confronto, in e not in, indicizzazione), la funzione predefinita len. Modifica degli elementi di un dizionario mediante l’istruzione di assegnamento e l’operatore di indicizzazione.
  • 3/12/2020 (parte I, parte II, parte III): Valori di tipi composti (stringhe, liste, dizionari) nidificati. Definizione di nuove funzioni: le istruzioni def e return, argomenti e parametri, meccanismo della chiamata di una funzione.
  • 7/12/2020 (parte I, parte II, parte III): Definizione di nuove funzioni: esempi d'uso dell'istruzione return; variabili locali; programmazione modulare: scomposizione di un programma in più funzioni. Accesso ai file della memoria secondaria: tipi di file, modalità di accesso (lettura e scrittura), le funzioni predefinite open e close per l'apertura di un file.
  • 10/12/2020 (parte I, parte II, parte III): Scrittura e lettura di dati da un file: le funzioni write, read, readline e readlines. Funzioni ausiliarie per l'elaborazione di stringhe: str e split.
  • 14/12/2020 (parte I, parte II): Presentazione delle modalità d'esame. Esercizi riepilogativi.
  • 17/12/2020 (parte I, parte II): Esercizi riepilogativi.

Esami

Modalità d’esame

Fino al mese di Marzo 2021, a causa dell’emergenza Covid-19, gli esami si sono svolti in modalità telematica, in accordo con le disposizioni dell’Ateneo (si veda la guida per gli esami), con le modalità d’esame specifiche per questo corso:

Dal mese di Giugno 2021 sono ripresi gli esami in presenza, garantendo la modalità a distanza agli studenti che, per giustificati motivi, non possono sostenere le prove d'esame in presenza, come disposto dall'Ateneo.

Nell'A.A. 2021/2022 gli esami in presenza consisteranno in una prova scritta sulla programmazione in linguaggio Python, e in una prova orale su tutti gli argomenti del corso. Alla prova orale saranno ammessi solo gli studenti che supereranno la prova scritta.

Qualunque sia la modalità d’esame, per raggiungere la sufficienza si dovrà dimostrare di possedere una conoscenza di base di tutti gli argomenti del corso. In nessuna prova scritta (telematica o in presenza) saranno proposti esercizi identici a quelli di appelli precedenti; ogni prova scritta presenterà lo stesso livello di difficoltà.

Appelli d’esame

In accordo con quanto stabilito dal Consiglio di Facoltà e dal Regolamento Didattico di Ateneo, si svolgeranno sette appelli d’esame all’anno (tre nel periodo di Giugno-Luglio, tre in quello di Gennaio-Febbraio e uno in quello di Settembre), e due appelli aggiuntivi nei periodi di lezione riservati agli studenti iscritti come fuori corso. Questi ultimi si svolgeranno in date utili per gli appelli di laurea fissati durante i periodi di lezione.

L’iscrizione agli appelli d’esame dovrà essere eseguita attraverso il portale Esse3 gestito dall’Ateneo, e sarà possibile a partire da dieci giorni prima della data di ciascun appello, fino alle 23:59 del secondo giorno precedente (non sarà possibile iscriversi nel giorno precedente l’appello). Chi si iscrivesse a un appello d’esame e successivamente decidesse di non presentarsi è pregato di comunicarlo appena possibile al docente.

Gli esiti di ciascun appello saranno resi disponibili nella pagina degli avvisi.

Giovedì 4 novembre 2021 si svolgerà un appello d'esame riservato agli studenti iscritti come fuori corso, presso l'aula IAI_TA (ex aula CD), con inizio alle ore 15.

Regole d’esame (in presenza)

  • Non saranno ammessi gli studenti privi della tessera universitaria e di un documento d’identità
  • Non è ammesso l’uso di appunti, libri, calcolatrici, telefoni cellulari, tablet, ecc.
  • Il compito deve essere svolto sui fogli forniti dal docente; eventuali fogli aggiuntivi saranno forniti su richiesta; tutti i fogli ricevuti dovranno essere riconsegnati al termine dell’esame
  • Durante l’esame non sarà consentito uscire dall’aula.

Valutazione del corso

Sono disponibili le schede di valutazione dell’insegnamento per i seguenti anni accademici:


Recapiti del docente

Per informazioni sul corso e per chiarimenti e spiegazioni sugli argomenti del programma il docente è disponibile ai seguenti recapiti:

  • telefono: 070 675 5754
  • e-mail: mio-cognome chiocciola unica punto it

Il ricevimento studenti si svolgerà su appuntamento, in presenza o mediante la piattaforma Teams.

Lo studio del docente si trova al terzo piano del Dipartimento di Ingegneria Elettrica ed Elettronica (DIEE), edificio M (via Is Maglias).


Ultimo aggiornamento: 14 ottobre 2021

Questionario e social

Condividi su: