CODING LAB
Obiettivi formativi
Il corso fornisce le nozioni fondamentali per comprendere i principi di funzionamento delle moderne tecnologie digitali ed alcune implicazioni nel loro utilizzo quotidiano da parte di utenti e organizzazioni. In particolare gli obiettivi del corso possono suddividersi in due macro categorie legate ad aspetti teorici o aspetti pratici, come descritti di seguito. - Aspetti teorici: comprendere il concetto di "computational thinking" in relazione a diversi contesti, in particolare relativamente alle scienze economico sociali; comprendere il concetto di algoritmo; comprendere alcuni principi di programmazione; comprendere la combinazione di componenti hardware e software che è alla base dei dispositivi digitali utilizzati soprattutto in ambito aziendale; comprendere le principali caratteristiche delle moderne reti di comunicazione, l’architettura del web, ed il fenomeno del cloud computing; comprendere il concetto del mobile computing, le mobile app e il fenomeno “Internet of Things”; comprendere il fenomeno dei social network; comprendere il concetto di database e le potenzialità dei Big Data come strumento di supporto alle decisioni; comprendere i concetti chiave della sicurezza informatica; essere consapevole dei rischi che derivano dall’uso di software malevolo e dall’esposizione di informazioni sensibili sia aziendali sia personali; comprendere i concetti di base del machine learning e delle valute digitali. - Aspetti pratici: introdurre lo studente alle attività di coding di livello base, utili sia a sviluppare un approccio alternativo alla risoluzione di problemi sia a comprendere meglio i principi basilari della programmazione da utilizzare poi nel campo della matematica finanziaria e statistica.
Risultati di apprendimento attesi
Alla fine del corso lo studente comprenderà i principi base di funzionamento delle moderne tecnologie digitali. In più
svilupperà competenze logiche e capacità di problem solving attraverso attività di coding di livello base.
Conoscenza e comprensione:
il corso fornisce le nozioni fondamentali per comprendere i principi di funzionamento delle moderne tecnologie digitali e permette agli studenti di sviluppare, tramite tecniche di programmazione, il pensiero computazionale, processo logico-creativo che permette di risolvere problemi complessi in maniera efficiente.
Capacità di applicare conoscenza e comprensione:
Nella parte pratica del corso gli studenti avranno modo di comprendere il funzionamento di un programma software e saranno in grado di scrivere (semplici) programmi in linguaggio Python. In particolare, gli studenti saranno in grado di:
- riconoscere ed analizzare le componenti principali di un'infrastruttura software.
- identificare minacce e rischi nell'utilizzo delle reti come Internet.
- progettare e creare semplici programmi software.
- scrivere programmi che usano cicli per ripetere l'esecuzione di blocchi di codice.
Autonomia di giudizio:
gli studenti matureranno capacità di analizzare i sistemi digitali e il modo in cui vengono utilizzati all'interno di un'organizzazione. Saranno in grado di discutere e valutare gli elementi essenziali di un'infrastruttura tecnologica.
Abilità comunicative:
lo studente avrà maturato la capacità di comprendere e utilizzare i principali termini e concetti relativi ai sistemi digitali. Gli studenti saranno in grado di comunicare le proprie idee, proposte, analisi e ragionamenti critici legati alle tematiche del mondo digitale in modo più efficace e appropriato.
Capacità di apprendimento:
questo corso contribuisce a potenziare le capacità di comprensione degli studenti fornendo loro gli strumenti per capire come funzionano i sistemi digitali ed i principi alla base della programmazione. Gli studenti riusciranno a sviluppare le capacità di problem solving tramite risoluzione di semplici problemi utilizzando il linguaggio di programmazione Python.
Contenuti Del Corso
Il programma è composto da una parte teorica (lezioni tradizionali) e da una parte pratica (lezioni in aula informatizzata). I contenuti di ciascuna parte sono descritti di seguito.
Parte teorica
- Intro corso e Computational thinking;
Perché digitale? (notazione binaria ed unità di misura); introduzione agli algoritmi
- Algoritmi, Strutture dati e linguaggi di programmazione
- Fondamenti HW/SW
- Fondamenti di reti e protocolli (in particolare quelli applicativi)
- Risorse in rete (cloud computing e ricerca di informazioni)
- I dispositivi mobili (comprese le app) e l'IoT
- Social networks e introduzione ai grafi
- Database/DBMS e Big Data
- Sicurezza delle informazioni e privacy
- Machine learning
- Valute Digitali - recap
Parte pratica
- Introduzione a Python
- Tipi e strutture dati
- Costanti e variabili
- Strutture di controllo: if e loop
- Funzioni
- Funzioni ricorsive
- Algoritmi di Ricerca
- Algoritmi Numerici
Testi Di Riferimento
Il materiale è reso disponibile sulla piattaforma di e-learning all’interno della quale gli studenti troveranno dispense e slide aggiornate e le indicazioni del testo di riferimento.
Metodologie Didattiche
Di seguito le metodologie didattiche utilizzate durante il corso:
- didattica frontale
- didattica online
- esercizi in laboratorio
Modalità di verifica dell'apprendimento
La valutazione può essere scritta o orale sulla base del numero di studenti. È prevista una valutazione intermedia basata su una prova di programmazione in linguaggio Python.
Criteri per l’assegnazione dell’elaborato finale
L’elaborato finale sarà assegnato a tutti gli studenti, previa specifica richiesta inoltrata al docente, che dimostrano un serio e motivato interesse ad approfondire le tematiche affrontate dal programma del corso.
Settimana 1
Introduzione al corso e al pensiero computazionale.
Settimana 2
Perché digitale? (notazione binaria ed unità di misura); intro algoritmi
Esercitazione in Laboratorio (le parti pratiche, relative al "saper fare" saranno svolte principalmente on campus).
Settimana 3
Algoritmi, Strutture dati e linguaggi di programmazione
Esercitazione in Laboratorio (le parti pratiche, relative al "saper fare" saranno svolte principalmente on campus).
Settimana 4
Fondamenti Hardware e Software
Esercitazione in Laboratorio (le parti pratiche, relative al "saper fare" saranno svolte principalmente on campus).
Settimana 5
Fondamenti di reti e protocolli (soprattutto quelli applicativi)
Esercitazione in Laboratorio (le parti pratiche, relative al "saper fare" saranno svolte principalmente on campus).
Settimana 6
Risorse in rete (cloud computing e ricerca di informazioni)
Esercitazione in Laboratorio (le parti pratiche, relative al "saper fare" saranno svolte principalmente on campus).
Settimana 7
I dispositivi mobili (comprese le app) e l'IoT
Esercitazione in Laboratorio (le parti pratiche, relative al "saper fare" saranno svolte principalmente on campus).
Settimana 8
Social networks e introduzione ai grafi
Esercitazione in Laboratorio (le parti pratiche, relative al "saper fare" saranno svolte principalmente on campus).
Settimana 9
Database/DBMS e Big Data
Esercitazione in Laboratorio (le parti pratiche, relative al "saper fare" saranno svolte principalmente on campus).
Settimana 10
Sicurezza delle informazioni e privacy
Esercitazione in Laboratorio
Settimana 11
Machine learning e Deep Learning
Esercitazione in Laboratorio (le parti pratiche, relative al "saper fare" saranno svolte principalmente on campus).
Settimana 12
Valute Digitali, con particolare focus su Bitcoin ed Ethereum.
Smart Contract sulla blockchain di Ethereum. Ricapitolazione argomenti trattati durante il corso
Esercitazione in Laboratorio (le parti pratiche, relative al "saper fare" saranno svolte principalmente on campus).