Nuova ricerca

Vittorio CUCULO

Ricercatore t.d. art. 24 c. 3 lett. A
Dipartimento di Ingegneria "Enzo Ferrari"

Insegnamento: Programmazione di Sistema

Ingegneria informatica (MN) (Offerta formativa 2024)

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

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.