INFORMATICA

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 macrocategorie legate ad aspetti teorici e aspetti pratici, come descritti di seguito. Aspetti teorici Comprendere: 1) il concetto di "Computational Thinking" in relazione a diversi contesti, in particolare relativamente alle scienze economico sociali; 2) il concetto di algoritmo; 3) i principi fondamentali della programmazione e la Codifica binaria; 4) la combinazione di componenti hardware e software che è alla base dei dispositivi digitali utilizzati soprattutto in ambito aziendale; 5) le principali caratteristiche delle moderne reti di comunicazione, l’architettura del web, ed il fenomeno del cloud computing; 6) il concetto del mobile computing, le mobile app e il fenomeno “Internet of Things” (IoT); 7) il fenomeno dei social network con cenni alla teoria dei grafi; 8) il concetto di database e le potenzialità dei Big Data come strumento di supporto alle decisioni; 9) i concetti chiave della sicurezza informatica, acquisendo consapevolezza dei rischi che derivano dall’uso di software malevolo e dall’esposizione di informazioni sensibili sia aziendali sia personali; 10) i concetti di base del machine learning e delle valute digitali. Aspetti pratici: introdurre lo studente alle attività̀ di coding (utilizzando Python) 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

Conoscenza e comprensione: Al termine del percorso gli studenti avranno appreso le nozioni fondamentali per comprendere i principi di funzionamento delle moderne tecnologie digitali. Gli studenti svilupperanno, tramite tecniche di programmazione, il pensiero computazionale, quale processo logico-creativo che permette di risolvere problemi complessi in maniera efficiente. Capacità di applicare conoscenza e comprensione: Al termine della 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: Al termine del percorso gli studenti matureranno la capacità di analizzare i sistemi digitali e il modo in cui possono essere utilizzati all'interno di un'organizzazione. Saranno in grado di discutere e valutare gli elementi essenziali di un'infrastruttura tecnologica. Abilità comunicative: Al termine del percorso gli studenti matureranno 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 ambiente informatizzato). I contenuti di ciascuna parte sono descritti di seguito. Parte teorica: - Introduzione al corso e Computational thinking; Perché digitale? - Introduzione agli algoritmi - Algoritmi, Strutture dati, diagrammi di flusso (laboratorio sull’uso FLOWGORITHM) e linguaggi di programmazione (laboratorio su Scratch) - Codifica binaria (Cisco binary game) ed unità di misura - Risorse di rete, cloud computing e ricerca di informazioni sul Web - I dispositivi mobili (comprese le app) e l'IoT (Internet of Things) - Social networks e introduzione alla teoria dei grafi - Database/DBMS e Big Data - Sicurezza delle informazioni e privacy - Blockchain - Valute Digitali - Intelligenza Artificiale e Machine Learning - Riepilogo Parte pratica: - Introduzione a Python - Tipi semplici e strutture dati - Costanti, variabili, operatori, stringhe - Strutture di controllo: if e loop (for e while) - Liste e Dizionari - Funzioni - Scrittura e lettura File - Uso delle librerie - Esempi di utilizzo di Python in Finance

Testi Di Riferimento

Il materiale di studio è reso disponibile sulla piattaforma di e-learning all’interno della quale gli studenti troveranno dispense, slide e scripts Python e le indicazioni del testo di riferimento.

Metodologie Didattiche

Di seguito le metodologie didattiche utilizzate durante il corso: Lezioni tradizionali per la parte teorica Esercitazioni di laboratorio

Modalità di verifica dell'apprendimento

La valutazione dello studente avverrà tramite una prova finale che si svolgerà al computer (in una delle aule informatiche) e che comprenderà due parti distinte: - una parte di programmazione, che incide per il 40% sul voto finale: in questa parte si intende testare principalmente le conoscenze e la capacità di comprensione dei principi fondamentali di programmazione e della sintassi del linguaggio Python; - una parte di teoria, che incide per il rimanente 60% sul voto finale: in questa parte si intende testare principalmente le conoscenze e la capacità di comprensione delle nozioni teoriche del corso. È necessario riportare la sufficienza in entrambe le parti della prova. La parte di teoria consisterà in un questionario di domande a risposta multipla e/o domande a risposta aperta, in cui lo studente dovrà dimostrare di conoscere le nozioni teoriche dell'insegnamento, saperle applicare a casi pratici dimostrando di aver conseguito il metodo di studio e la capacità di apprendimento necessari a proseguire anche in autonomia l'approfondimento della materia. La numerosità delle domande di ciascuna di tali tipologie verrà decisa dal docente nel corso dello svolgimento dell'insegnamento e comunicato agli studenti prima dell'esame. La parte di programmazione consisterà in una serie di esercizi da svolgere nel linguaggio di programmazione Python, in cui lo studente dovrà dimostrare di aver recepito i principi fondamentali della programmazione e di aver acquisito la giusta praticità nell'applicarli tramite il linguaggio Python. Il mancato raggiungimento di un punteggio pari a 18/30 comporta il mancato superamento dell'esame. La risposta corretta alle domande a risposta multipla, la dimostrazione di una buona conoscenza nelle domande a risposta aperta (teoria) e la corretta esecuzione degli esercizi (laboratorio) comportano l'attribuzione di un punteggio coerente con l'incidenza delle due parti sul punteggio finale. Durante il corso il docente si riserva la facoltà di applicare una Valutazione in Itinere previa comunicazione agli studenti.

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 Computational thinking

Settimana 2

Introduzione al corso e Computational thinking Perché digitale? Introduzione agli algoritmi Esercitazione di Laboratorio

Settimana 3

Algoritmi, strutture dati e linguaggi di programmazione (prima parte) Esercitazione di Laboratorio

Settimana 4

Algoritmi, strutture dati e linguaggi di programmazione (FLOWGORITHM e Scratch) (seconda parte) Esercitazione di Laboratorio

Settimana 5

Codifica binaria ed unità di misura Esercitazione di Laboratorio (Cisco binary game)

Settimana 6

Risorse in rete, cloud computing e ricerca di informazioni sul Web Esercitazione di Laboratorio

Settimana 7

Social networks e introduzione alla teoria dei grafi Esercitazione di Laboratorio

Settimana 8

Analisi dei grafi Esercitazione di Laboratorio

Settimana 9

Database/DBMS e Big Data Esercitazione di Laboratorio

Settimana 10

Sicurezza delle informazioni e Privacy Esercitazione di Laboratorio

Settimana 11

Blockchain - Valute Digitali – Riepilogo argomenti trattati durante il corso Esercitazione di Laboratorio

Settimana 12

Intelligenza Artificiale e Machine Learning Esercitazione di Laboratorio