Università degli Studi di Napoli "Parthenope"

Scheda dell'insegnamento

Anno accademico: 
2018/2019
Tipologia di insegnamento: 
Caratterizzante
Tipo di attività: 
Obbligatorio
Corso di afferenza: 
Corso di Corso di Laurea Magistrale in INFORMATICA APPLICATA (MACHINE LEARNING E BIG DATA)
Sede: 
Napoli
Settore disciplinare: 
INFORMATICA (INF/01)
Lingua: 
Italiano
Crediti: 
6
Anno di corso: 
2
Docenti: 
Ciclo: 
Secondo Semestre
Ore di attivita' frontale: 
48

Obiettivi

l corso è un’introduzione alla programmazione di applicazioni in ambiente cloud computing con riferimenti anche allo high performance computing, al calcolo distribuito, alla computazione al bordo e all'internet delle cose. Il corso contiene un’introduzione alle principali tecnologie per cloud computing di tipo Infrastructure as a Service, Platform as a Service e Software as a Service. Una parte del corso è dedicata all’introduzione ai servizi offerti da Amazon Web Services e l'interfacciamento con single board computer e microcontrollori di tipo Arduino o similari. Nel corso delle lezioni sono fatti continui riferimenti alle tecnologie per lo sviluppo di applicazioni web, mobile e mobile ibride multipiattaforma, alla gestione e rappresentazione dei dati spaziali e ai sistemi pervasivi distribuiti/indossabili.
Il corso contiene una introduzione al linguaggio Python, utilizzato per lo sviluppo di progetti software e hardware nelle attività (singole o di gruppo) in Laboratorio che sono parte integrante del corso. Il corso ha una impostazione tipicamente pratico/applicativa finalizzata alla risoluzione di problemi concreti e allo sviluppo di software effettivamente utilizzabile.
Conoscenza e capacità di comprensione: Lo studente deve dimostrare di conoscere e saper comprendere i fondamenti delle tecnologie direttamente o indirettamente collegate al cloud computing e dell’internet of things, con particolare riguardo alle applicazioni distribuite, le metodologie di sviluppo e di analisi di applicazioni basate su servizi web, il linguaggio di programmazione Python e il suo contesto applicativo, le metodologie e le tecniche dello sviluppo software in tale contesto.
Capacità applicative: Lo studente deve dimostrare di saper utilizzare la propria conoscenza acquisita per risolvere problemi computazionali come applicazioni distribuite su cloud che scalano dinamicamente da sviluppare in contesti concreti, per sviluppare soluzioni progettuali e analizzarle dal punto di vista dell’architettura e dell’usabilità, per usare in modo consapevole uno o più linguaggi di programmazione al fine di implementare un’applicazione web complessa. Tali capacità si estrinsecano anche in un uso approfondito e consapevole degli strumenti offerti dat differenti framework applicativi (sviluppo basato su piattaforme).
Autonomia di giudizio: Lo studente deve essere in grado di sapere valutare in maniera autonoma i risultati ottenuti dalla applicazione sviluppata sia in termini progettuale che dell’implementazione software valutandone l’efficacia e l’efficienza.
Abilità comunicative: Lo studente deve essere in grado di redigere una relazione di presentazione di un progetto e di documentare la sua implementazione, anche lavorando in gruppo, servendosi di strumenti avanzati di scrittura/documentazione con particolare riferimento all’uso degli strumenti di produttività per sviluppatori come sistemi per la redazione condivisa di documenti (Google Drive), di collaborazione remota (Slack), di gestione della produzione (Trello), di gestione dei repository online (GitHub), di infrastrutture cloud come servizio (Amazon AWS) usando correttamente la terminologia delle tecnologie web anche in lingua inglese.
Capacità di apprendimento: Lo studente deve essere in grado di aggiornarsi e approfondire in modo autonomo argomenti e applicazioni specifiche di tecnologie cloud, anche accedendo a banche dati, repository on-line di documenti, software e librerie applicative e altre modalità messe a disposizione dalla rete.

Prerequisiti

Dimestichezza con la programmazione
Conoscenza di elementi di reti di calcolatori
Familiarità con architetture di calcolatori.

Contenuti

Gestione dei dati nella cloud
Calcolo utilizzando risorse di cloud computing
Il cloud computing come una piattaforma
Costruire una propria cloud privata
La sicurezza nel cloud e argomenti ancillari

Metodi didattici

Lezioni frontali
Seminari
Imitazione di casi reali
Progetti didattici

Verifica dell'apprendimento

L’obiettivo della procedura di verifica consiste nel quantificare il livello di raggiungimento degli obiettivi formativi precedentemente indicati.
La procedura di verifica è indicata precisamente nella piattaforma di e-learning del Dipartimento di Scienze e Tecnologie. In sintesi: a circa 1/3 del corso gli studenti sottomettono una proposta di progetto rafforzata da una presentazione composta da non più di 3 slide e della durata non superiore ai 3 minuti. La proposta può essere individuale o di un gruppo composto da non più di 3 studenti. La proposta viene emendata dal docente, rigettata o assegnata come progetto di esame. A circa 2/3 del corso è organizzata una presentazione dei progetti in cui ciascuno studente o gruppo di studenti illustra lo stato dell’arte del progetto e discute con docenti e altri studenti di potenzialità e debolezze dello stesso. A fine corso è organizzata una presentazione finale che non ha valore di esame ma momento comunicativo del lavoro svolto. Il progetto deve essere rilasciato in open source preferibilmente con licenza Apache 2.0 su di un repository pubblico come, ad esempio, GitHub almeno 2 giorni prima della data di esame e deve essere funzionante online ameno fino alla conclusione dell’esame. La procedura di verifica consiste in un esame orale individuale (60% del voto), la presentazione della parte di progetto di propria competenza (20% del voto), dimostrazione del progetto (20% del voto). Sono previste 2 Prove Intercorso (40% del voto dell’esame orale) + 2 HomeWork (20% del voto dell’esame orale) individuali.

Testi

Cloud Computing for Science and Engineering di Ian Foster e Dennis B. Gannon - MIT Press - https://cloud4scieng.org

Altre informazioni