LAB OF SOFTWARE PROJECT DEVELOPMENT

Anno accademico
2021/2022 Programmi anni precedenti
Titolo corso in inglese
LAB OF SOFTWARE PROJECT DEVELOPMENT
Codice insegnamento
ET7018 (AF:304962 AR:170945)
Modalità
In presenza
Crediti formativi universitari
6
Livello laurea
Laurea
Settore scientifico disciplinare
INF/01
Periodo
2° Periodo
Anno corso
3
Spazio Moodle
Link allo spazio del corso
Ogni azienda moderna dipende dallo sviluppo di software specifici, i quali possono essere prodotti internamente o esternalizzati. Il Digital Manager deve avere consapevolezza delle basi teoriche, delle tecniche e degli strumenti necessari impiegati per sviluppare un progetto software completo. Grazie a questo insieme di conoscenze trasversali, il Digital Manager avrà una migliore capacità di rapportarsi direttamente con gli sviluppatori e una miglior comunicazione con il cliente.

L'unico modo per raggiungere questa consapevolezza è partecipare ad un progetto di sviluppo software in cui lo studente metta in pratica sia gli strumenti organizzativi che il processo di sviluppo.

L'obiettivo di questo corso è fornire agli studenti le basi sugli strumenti e sulle piattaforme di sviluppo software più comuni per creare e gestire il proprio progetto software.
Mettendo in pratica le principali fasi di sviluppo di un progetto software, al termine del corso lo studente dovrà avere familiarità con gli strumenti illustrati durante il corso ed utilizzati per lo svolgimento del progetto.
Durante il corso lo studente acquisirà le seguenti conoscenze e abilità:

Conoscenze:
- le metodologie più comuni per lo sviluppo del software: waterfall, agile, open o closed source;
- le basi della creazione di un software Python: struttura, documentazione, pubblicazione;
- elementi di predictive analytics;
- sviluppo test-driven.


Abilità:
- familiarità con sistemi di versioning del software: git;
- familiarità con piattaforme di hosting / sviluppo software: github, kanban;
- creazione, sviluppo, documentazione e pubblicazione di un progetto Python;
- familiarità con tool per l'analisi dei dati e l'apprendimento automatico (numpy, pandas, scikit-learn).
Familiarità con il linguaggio di programmazione Python, acquisito attraverso il corso "Introduction to coding".
Il corso è strutturato in 5 topic principali. Ciascun topic viene trattato a livello teorico e pratico attraverso una sessione di laboratorio. Il programma non è inteso per essere immutabile, può cambiare in base all'interesse ed al feedback degli studenti.

1) introduzione ai progetti software:
- Ingegneria del software: gestione e sviluppo del progetto. Processi waterfall, evolutionary, agile. Licenze, Open source Vs closed source.
- Strumenti per il controllo delle versioni del software e lo sviluppo in team: git e github.

2) progetti Python
- Struttura del progetto
- Documentazione del progetto
- Convenzioni
- Pubblicazione del progetto

3) Moduli Python di interesse
- argparse, logging, JSON...

4) elementi di prescriptive analytics
- caricamento dei dati, analisi descrittiva
- machine learning supervisionato e non supervisionato (clustering)
- numpy, pandas, scikit-learn

5) sviluppo guidato dai test:
- Cosa significa fare test
- Test con Python
- Integrazione con github
Il corso si basa su diverse fonti, la maggior parte delle quali disponibili on-line. Le slides ed il materiale del corso conterranno riferimenti precisi per ogni topic trattato. Lo studio delle fonti e delle slides è sufficiente per gli studenti che seguono il corso.

Alcune delle fonti sono:
- Pro Git Book: https://git-scm.com/book/en/v2
- Ian Sommerville, Software Engineering.
- Dive Into Python: https://www.diveinto.org/python3/table-of-contents.html

a queste si aggiunge la documentazione dei progetti open source che saranno oggetto delle esercitazioni.
La valutazione consiste in una prova scritta più un progetto di gruppo accompagnato da una breve discussione.
Il test scritto sarà composto da domande a scelta multipla e domande aperte relative ai problemi ed alle tecniche analizzati durante le lezioni.
Durante il corso gli studenti riceveranno incarichi da integrare come parte del loro progetto software.
La maggior parte delle lezioni alterneranno lezioni frontali e sessioni pratiche. Durante queste ultime verranno illustrati i tool principali che saranno poi utilizzati per lo svolgimento del progetto.
Gli studenti installeranno il software necessario con cui sperimentare i comandi illustrati e li utilizzeranno in prima persona.
Inglese
scritto e orale
Il programma è ancora provvisorio e potrà subire modifiche.
Data ultima modifica programma: 25/10/2021