Dipartimento: DIMES
Corso di Laurea Magistrale: INGEGNERIA INFORMATICA
Indirizzo Internet Corso di Laurea: www.dimes.unical.it
Nome insegnamento: Ambienti di programmazione per il software di base
Condivisione: corso di laurea triennale in ingegneria informatica
Articolazione in moduli:
Settore Scientifico Disciplinare: ING-INF/05
Docente responsabile
Folino Gianluigi
Posizione docente responsabile:
Docente a contratto
Crediti formativi universitari: 6
Numero ore lezioni: 36
Numero ore riservate attività didattiche assistite: 57
Numero ore esercitazioni: 21
Numero ore riservate studio individuale: 93
Tipologia: a scelta
Lingua di insegnamento: ITALIANO
Collocazione: II ANNO, II SEMESTRE
Prerequisiti: Fondamenti di Informatica
Il modulo approfondisce l'utilizzo pratico degli ambienti di programmazione per lo sviluppo del software di base con
riferimento ad un sistema operativo GNU/Linux.
Competenze da acquisire:






comprensione dei concetti di base sul funzionamento dei sistemi operativi e sullo sviluppo del software di base
abilità ad impostare la risoluzione di problemi di amministrazione di sistema: installazione e configurazione di sistema
operativi, applicazioni e servizi
abilità ad implementare soluzioni per la gestione di un sistema GNU/Linux basate su script di shell
abilità ad implementare algoritmi in Python ed in C
abilità a sviluppare soluzioni software modulari basate su codice multi-linguaggio
capacità di saper sfruttare le conoscenze acquisite nella risoluzione di problematiche
Argomenti delle lezioni:
Introduzione ai sistemi operativi Unix-like.
Storia dei sistemi operativi Unix. Richiamo dei concetti di base sul ruolo e sul funzionamento dei sistemi operativi. Cenni
all'architettura dei sistemi operativi monolitici e micro-kernel. I sistemi operativi basati su kernel Linux. Le distribuzioni GNU/Linux. La
distribuzione Ubuntu.
Cenni alle problematiche di amministrazione di sistemi GNU/Linux
Installazione e configurazione di una distibuzione GNU/Linux. Installazione e configurazione di applicazioni e servizi locali e di rete.
Amministrazione remota di Linux. I processi e i demoni. La gestione del file system. Le quote utente. I file system condivisi: Samba e
NFS.
Programmazione della shell
Introduzione all'utilizzo della shell BASH. I comandi per la gestione del file-system e dei processi attivi. La redirezione dell’input/output
e le pipe. Programmazione di semplici script di shell. Script per l'avvio e l'arresto dei servizi, Le variabili utente e di sistema. Il file
.bashrc. Cicli e istruzioni condizionali. Espressioni regolari
Fondamenti di programmazione in Pyhton
Introduzione al linguaggio Python. L’interprete Python. . Input/output in Python. I tipi, le variabili e gli operatori. Cicli e istruzioni
condizionali. Le stringhe e i metodi correlati. I moduli e le funzioni in Python. Le stringhe di documentazione. Le liste. Le tuple. I
dizionari. Utilizzo e gestione dei file. Le classi in Python.
Elementi di programmazione in C
La sintassi del linguaggio C. Sviluppo di semplici programmi in C. Utilizzo della suite gcc (GNU Compiler Collection). I tipi di base.
L’input/output in C. Le stringhe in C. Utilizzo dei puntatori. Vettori e matrici dinamici in C. Le funzioni nel linguaggio C. Semantica del
trasferimento del flusso di controllo tra funzioni: funzionamento dello stack, record di attivazione, passaggio dei parametri.
Realizzazione di librerie statiche e dinamiche.
Argomenti delle esercitazioni:
• Sperimentazione pratica con i concetti presentati a lezione con particolare attenzione alle problematiche di amministrazione di
sistema ed utilizzo delle applicazioni per lo sviluppo di software .
Modalità di frequenza: OBBLIGATORIA
Modalità di svolgimento delle lezioni:
In aula, con metodologie tradizionali e con l’uso di trasparenze e proiettore collegato al PC.
Modalità di svolgimento delle esercitazioni:
In aula, con metodologie tradizionali e proiettore collegato al PC.
Metodi di valutazione:
Prova scritta e prova orale obbligatoria.
Testi di riferimento:
 Linux Documentation Project, http://sunsite.unc.edu/linux
 "Guida completa Linux" - Peterson, MC Graw Hill.
 Amministrare Gnu/Linux, Simone Piccardi, scaricabile online: https://labs.truelite.it/projects/truedoc/documents
 Pensare da informatico: Imparare con Python, scaricabile online: http://www.python.it/doc/libri/
 Dive Into Python - Python per programmatori esperti, scaricabile online: http://www.python.it/doc/libri/
Orario e aule lezioni:
Calendario prove valutazione:
www.dimes.unical.it