Nome insegnamento: AMBIENTI DI SVILUPPO DEL SOFTWARE
Articolazione in moduli: Ambienti di programmazione per il software di base (6CFU) + Piattaforme
software per applicazioni su web(6CFU)
Settore Scientifico Disciplinare: ING-INF/05
Docente responsabile
Ambienti di programmazione per il Folino Gianluigi (docente a Contratto)
software di base
Crediti formativi universitari
Ambienti di programmazione per il
software di base: 6
Docente responsabile
Piattaforme software per
Flesca Sergio
applicazioni su web
Crediti formativi universitari
Piattaforme software per
applicazioni su web: 6
Numero ore lezioni: 36
Numero ore riservate attività didattiche assistite
Ambienti di programmazione per il software di base: Numero ore esercitazioni: 21
57
Numero ore attività di laboratorio:
Numero ore lezioni: 36
Numero ore riservate attività didattiche assistite
Numero ore esercitazioni: 21
Piattaforme software per applicazioni su web: 57
Numero ore attività di laboratorio:
Tipologia di attività formativa (TAF): Attività Caratterizzante
Lingua di insegnamento: Italiano
Anno di corso e Periodo didattico di erogazione: - Ambienti di programmazione per il software di
base - Modulo I: III ANNO I SEMESTRE - Piattaforme software per applicazioni su web - Modulo II:
III ANNO II SEMESTRE
Insegnamento/i Propedeutico/i: : Fondamenti di Informatica
Risultati d’apprendimento previsti e competenze da acquisire – modulo Ambienti di
programmazione per il software di base:
Il modulo approfondisce l'utilizzo pratico degli ambienti di programmazione per lo sviluppo del
software di base con riferimento ai sistemi 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 – modulo Ambienti di programmazione per il software di base:
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 - modulo Ambienti di programmazione per il software di base:
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 erogazione della didattica – modulo Ambienti di programmazione per il software di
base:
In aula, con metodologie tradizionali e con l’uso di trasparenze e proiettore collegato al PC.
Testi di riferimento e materiale didattico utilizzato e consigliato – modulo Ambienti di
programmazione per il software di base:





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/
Adams, Calcolo Differenziale 2, Casa Editrice Ambrosiana
Risultati d’apprendimento previsti e competenze da acquisire – modulo Piattaforme software
per applicazioni su web:
L’obiettivo è quello di introdurre gli studenti alle problematiche relative allo sviluppo di
applicazioni web con architettura a tre livelli. In particolare è analizzata l’architettura Java
Enterprise e il suo supporto allo sviluppo di applicazioni web.
Argomenti delle lezioni – modulo Piattaforme software per applicazioni su web:
Architetture web a tre livelli in java.
Strato di presentazione: HTML, Sevlet, Java Server Pages, Java Server Faces
Strato di business: Enterprise Java beans, Stateless e Statefull Session Beans, Message Driven
Beans, Gestione dichiarativa delle transazioni;
Strato di persistenza: JDBC, Architettura JPA (Java Persistence architecture)
Argomenti delle esercitazioni– modulo Piattaforme software per applicazioni su web:
Piattaforme per lo sviluppo di applicazioni web
Sviluppo di applicazioni web di esempito
Modalità di erogazione della didattica- modulo Piattaforme software per applicazioni su web:
Lezioni frontali
Testi di riferimento e materiale didattico utilizzato e consigliato– modulo Piattaforme software
per applicazioni su web:
Enterprise JavaBeans 3.1, 6th Edition
Andrew Lee Rubinger, Bill Burke
O'Reilly Media
Metodi di valutazione:
 esame scritto obbligatorio e esame orale obbligatorio e installazione facoltativa di una
distribuzione Linux
 esame scritto e realizzazione e discussione di un progetto
Criteri di valutazione dell’apprendimento
 Lo studente deve essere in grado di utilizzare in maniera approfondita e installare il sistema
operativo Linux e avere conoscenze di base di amministrazione del sistema stesso. Deve
inoltre essere in grado di progettare e implementare soluzioni per la gestione di un sistema
GNU/Linux basate su script di shell ed avere le abilità ad implementare algoritmi in Python
ed in C
 Deve essere in grado di sviluppare applicazioni web con architettura a tre livelli utilizzando
la specifica J2EE
Criteri di misurazione dell’apprendimento– modulo Piattaforme software per applicazioni su
web:
voto finale
Criteri di attribuzione del voto finale:
Viene misurato il grado di conoscenza dell’architettura e la capacità di utilizzarla per lo sviluppo di
applicazioni web
Orario e aule lezioni:
http://www.dimes.unical.it/index.php/didattica
Calendario prove valutazione: