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:339542 AR:170945)
- Lingua di insegnamento
- Inglese
- Modalità
- In presenza
- Crediti formativi universitari
- 6
- Livello laurea
- Laurea
- Settore scientifico disciplinare
- ING-INF/05
- Periodo
- 2° Periodo
- Anno corso
- 3
- Spazio Moodle
- Link allo spazio del corso
Inquadramento dell'insegnamento nel percorso del corso di studio
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.
Risultati di apprendimento attesi
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).
Prerequisiti
Contenuti
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
Testi di riferimento
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.
Modalità di verifica dell'apprendimento
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.
Modalità di esame
Metodi didattici
Gli studenti installeranno il software necessario con cui sperimentare i comandi illustrati e li utilizzeranno in prima persona.