Nuova ricerca

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.