LAB OF COMPUTER SKILLS

LAB OF COMPUTER SKILLS

Luigi Laura

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).