B1459 - ARTIFICIAL INTELLIGENCE, BLOCKCHAIN E CRIPTOVALUTE NELLO SVILUPPO SOFTWARE

Anno Accademico 2024/2025

  • Docente: Giancarlo Succi
  • Crediti formativi: 6
  • SSD: INF/01
  • Lingua di insegnamento: Italiano

Conoscenze e abilità da conseguire

L'insegnamento si propone di formare gli studenti, affinché alla fine del corso: • conoscano i principali modelli cognitivi che possano spiegare come le persone sviluppano il software • siano consapevoli delle opportunità e dei limiti dell’applicazione degli strumenti dell’intelligenza artificiale per lo sviluppo del software • acquisiscano familiarità a come i principi di ingegneria del software possano guidare lo sviluppo di sistemi basati sull’intelligenza artificiale • padroneggino i principi del blockchain e le sue applicazioni • comprendano il ruolo e le potenzialità delle criptovalute, e le problematiche ad esse associate nello sviluppo di sistemi software • riescano costruire complessi modelli di produzione e di prodotto combinando i vari settori di punta degli odierni produttivi, con particolare rilevanza all’intelligenza artificiale, ai sistemi blockchain e alle criptovalute

Contenuti

Negli ultimi anni si è assistito ad un sostanziale cambio di paradigma nello sviluppo del software che ha portato a ripensare processi ed ambiti applicativi. In particolare, è emerso un rinnovato interesse per l’intelligenza artificiale, con un forte interesse all’applicazione dell’apprendimento automatico nei modelli di predizione e qualità, e nell’uso di modelli cognitivi per orientare i processi di produzione. D’altro canto, è emerso un forte bisogno di identificare strumenti software adatti per gestire le piattaforme di analisi dati, che sono sempre più complesse e generano sistemi che in prima battuta sembrano di notevole portata ma poi sono difficili da far evolvere. In aggiunta a tutto questo il settore è stato permeato da una sempre maggiore distribuzione delle applicazioni e dei processi di sviluppo, intrecciato con le nuove modalità di gestione degli aspetti e delle applicazioni relative all’introduzione dei sistemi a blockchain e alle criptovalute.

    Prerequisiti:

    Pur non avendo alcun prerequisito formale, il corso si caratterizza come corso di ingegneria del software e quindi non presenterà gli aspetti fondanti dell’intelligenza artificiale e dell’apprendimento automatico; all’uopo si raccomanda agli studenti che non abbiano tali competenze di seguire preventivamente il corso di Deep Learning, cod. 91250, del prof. Asperti.

    Conoscenze e abilità da conseguire:

    Questo è un corso di ingegneria del software che si propone di formare gli studenti, affinché alla fine del corso:

    • conoscano i principali modelli cognitivi che possano spiegare come le persone sviluppano il software
    • siano consapevoli delle opportunità e dei limiti dell’applicazione degli strumenti dell’intelligenza artificiale per lo sviluppo del software
    • acquisiscano familiarità a come i principi di ingegneria del software possano guidare lo sviluppo di sistemi basati sull’intelligenza artificiale
    • padroneggino i principi del blockchain e le sue applicazioni
    • comprendano il ruolo e le potenzialità delle criptovalute, e le problematiche ad esse associate nello sviluppo di sistemi software
    • riescano costruire complessi modelli di produzione e di prodotto combinando i vari settori di punta degli odierni produttivi, con particolare rilevanza all’intelligenza artificiale, ai sistemi blockchain e alle criptovalute

    Contenuti di massima:

    • Modelli cognitivi per lo sviluppo software (approcci sistemici e modelli impulsivo-riflessivo)
    • Applicazioni di intelligenza artificiale nello sviluppo software (testing, predizione, valutazione, ...)
    • Uso dei principi software nello sviluppo dei sistemi di intelligenza artificiale
    • Blockchain (principi, Distributed Ledger Technology, smart contract, piattaforme)
    • Criptovalute (principi di valute centralizzate e distribuite, transazioni, consensus algorithm, panoramica sulle valute esistenti)

    Testi/Bibliografia

    Data la novità del temi e la loro continua evoluzione, non c’è un testo ufficiale del corso, ma il docente provvederà a fornire una lista di letture rilevanti per il corso.


    Metodi didattici

    • Lezioni frontali
    • Esercitazioni guidate
    • Discussioni
    • Presentazioni di esperti
    • Presentazioni da parte degli studenti

    Modalità di verifica e valutazione dell'apprendimento

    • Nella prima sessione di esame, lo studente in corso può scegliere tra un orale onnicomprensivo e un progetto (eventualmente da svolgersi in gruppo) sui temi del corso ed assegnato dal docente.
    • Nelle successive sessioni, la valutazione si baserà su un orale onnicomprensivo.

    Strumenti a supporto della didattica

    Il corso utilizza strumenti usuali per le attività didattiche ed una piattaforma sperimentale unica basata sull'integrazione di LLMs, reti semantiche, e HPC (https://research.constructor.tech/) gentilmente fornita dal pionieristico Constructor Group (https://constructor.tech).

    Il docente raccomanda caldamente l'uso della carta e della penna/matita per la partecipazione alle attività in aula, e, quando richiesto, di un portatile con accesso ad internet anche per accedere alla menzionata piattaforma. Sistemi e applicativi con licenza aperta sono preferiti.


    Orario di ricevimento

    Consulta il sito web di Giancarlo Succi