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: