 |
Nicola BICOCCHI
Professore Associato Dipartimento di Ingegneria "Enzo Ferrari"
|
Insegnamento: Programmazione di Sistema
Ingegneria informatica (D.M.270/04) -Sede di Mantova (Offerta formativa 2022)
Obiettivi formativi
L'insegnamento introduce alla gestione ed alla programmazione di ambienti Unix utilizzando sia la shell Bash che il linguaggio C. L'obiettivo dell'insegnamento è fornire allo studente le competenze necessarie a utilizzare, manutenere, ed automatizzare un moderno sistema Unix.
Prerequisiti
L'insegnamento non prevede propedeuticità specifiche; si auspicano tuttavia conoscenze di base riguardo l'architettura dei calcolatori e la rappresentazione dell'informazione.
Programma del corso
Sistemi Unix
- Architettura interna dei sistemi operativi (scheduler, memoria virtuale, filesystem) (1 CFU)
- Installazione e gestione di un sistema Ubuntu Linux (gestore dei pacchetti, comandi principali) (1 CFU)
- Shell Bash (variabili locali e d’ambiente, costrutti iterativi e condizionali, funzioni, invocazione e passaggio dei parametri) (2 CFU)
Linguaggio C
- Tipi di dati semplici, variabili, costrutti condizionali e iterativi (1 CFU)
- Tipi di dati derivati (array multi-dimensionali, struct) (1 CFU)
- Funzioni, passaggio di parametri, valori di ritorno (1 CFU)
- Aritmetica dei puntatori, allocazione dinamica della memoria (1 CFU)
- Sistema di input/output (1 CFU)
Il contenuto dettagliato dell'insegnamento è visibile a questo indirizzo:
https://github.com/nbicocchi/operatingsystemsbsc
Metodi didattici
L’insegnamento è organizzato in moduli organizzati su base settimanale. Ogni modulo tratta un argomento specifico e prevede una parte di laboratorio. L’insegnamento viene erogato mediante lezioni frontali ed esercitazioni in presenza che vengono svolte con l’ausilio di slides proiettate. La frequenza alle lezioni in presenza non è obbligatoria. L’insegnamento è erogato in lingua italiana.
Testi di riferimento
Dispense e codice forniti dal docente. Per approfondire è suggerito l'utilizzo di un libro per ogni linguaggio.
Jason Bacon, Lars Olson - Unix User's Guide
Facchinetti, Larizza, Rubini - Programmare in C
Verifica dell'apprendimento
L'insegnamento prevede una prova orale in cui saranno verificate sia le conoscenze in ambito Unix/Bash (15/30) che quelle relative al linguaggio C (15/30) attraverso due esercizi (uno per ogni argomento) al calcolatore e relativa discussione.
Risultati attesi
Conoscenza e capacità di comprensione:
Conoscenze riguardo l'architettura dei sistemi operativi
Capacità di installare, utilizzare, e manutenere un moderno sistema Unix
Capacità di leggere e scrivere software scritto in Bash o C
Autonomia di giudizio:
Capacità di modellare un problema e fornirne un'implementazione in Bash o C. Particolare rilevanza è attribuita alla stimolazione della capacità dello studente di selezionare gli opportuni metodi e strumenti per risolvere problemi specifici.
Abilità comunicative:
Al termine dell'insegnamento lo studente deve essere in grado di esporre e rielaborazione i concetti appresi, con particolare attenzione al lessico e alla proprietà di linguaggio.
Capacità di apprendimento:
Al termine dell'insegnamento lo studente deve essere in grado di risolvere problemi specifici legati alla manutenzione o alla programmazione di un sistema Unix utilizzando i linguaggi Bash o C. E' inoltre auspicabile la capacità di approfondire in modo autonomo aspetti collaterali degli argomenti proposti.