Afferisce al dipartimento FIM e si concentra sugli aspetti scientifici e matematici dell'informatica. Fornisce basi teoriche solide in algoritmi, linguaggi di programmazione e strutture dati, con ampio spazio alle attività di laboratorio.
Insegnamento di base che copre il calcolo matriciale, i sistemi di equazioni lineari, gli spazi vettoriali, le applicazioni lineari, gli autovalori/autovettori e la geometria analitica nello spazio, fondamentali per la modellizzazione ingegneristica.
Corso fondamentale focalizzato sul calcolo differenziale e integrale per funzioni di una variabile reale. Gli argomenti principali includono i numeri reali e complessi, successioni e serie numeriche, limiti, continuità, derivate e loro applicazioni, sviluppi di Taylor e metodi di integrazione definiti e indefiniti.
Introduzione ai fondamenti della programmazione e della risoluzione di problemi (problem solving). Il corso copre la rappresentazione dell'informazione, le strutture di controllo (iterazione, selezione), i tipi di dato fondamentali e avanzati (liste, dizionari, record), le funzioni e la gestione della memoria. A seconda del corso di studi, l'insegnamento utilizza linguaggi quali Python (per l'analisi dati e la modellazione) o C (per una comprensione approfondita dell'architettura del calcolatore).
Insegnamento mirato al raggiungimento del livello di competenza linguistica B1/B2 (QCER) in ambito scientifico. Il corso si focalizza sullo sviluppo delle quattro abilità linguistiche (ascolto, parlato, lettura, scrittura) con particolare attenzione al lessico specialistico della biologia, delle bioscienze e alla comprensione di testi accademici e pubblicazioni internazionali.
Studio del funzionamento hardware dei calcolatori elettronici. Il programma si articola in tre aree principali: reti logiche (combinatorie e sequenziali), architettura del processore (Instruction Set Architecture, datapath, controllo e pipelining) e gerarchia di memoria (cache, memoria virtuale e sistemi di I/O). Il corso include esercitazioni pratiche di programmazione in linguaggio Assembly e simulazione di circuiti digitali.
Fondamenti della progettazione e analisi di algoritmi efficienti. Vengono trattate la complessità asintotica (notazione O-grande), le strutture dati classiche (liste, pile, code, alberi binari, heap, tabelle hash), gli algoritmi di ordinamento e ricerca, e la teoria dei grafi (visite, cammini minimi, alberi ricoprenti). Il corso introduce inoltre strategie di progettazione quali Divide-et-Impera, Programmazione Dinamica e algoritmi Greedy.
Approfondimento delle metodologie di sviluppo software e introduzione a nuovi paradigmi di programmazione. Il corso tratta la programmazione orientata agli oggetti (classi, ereditarietà, polimorfismo), la gestione avanzata della memoria (puntatori, allocazione dinamica), il testing e debugging, e la realizzazione di applicazioni complesse. Vengono utilizzati linguaggi quali C++ o Java per illustrare i concetti di astrazione, incapsulamento e qualità del software.
Corso sui principi della fisica classica applicati ai settori dell'agricoltura e dell'industria alimentare. Il programma approfondisce la meccanica dei solidi e dei fluidi (fondamentale per lo studio dell'irrigazione), la termodinamica per la conservazione e trasformazione degli alimenti e i concetti base di elettromagnetismo, fornendo il metodo sperimentale necessario per la modellizzazione dei fenomeni naturali.
Strumenti matematici per la modellizzazione dell'incertezza e l'analisi dei dati. Il programma include il calcolo delle probabilità (variabili aleatorie discrete e continue, teoremi limite), la statistica descrittiva e l'inferenza statistica (teoria della stima, intervalli di confidenza, test di ipotesi e regressione lineare). Il corso fornisce le basi quantitative fondamentali per l'ingegneria dei dati, il machine learning e l'analisi dei sistemi complessi.
Introduce i principi di progettazione e gestione delle basi di dati relazionali. Tratta il modello entità-relazione, la normalizzazione, l'algebra relazionale, il linguaggio SQL, la gestione delle transazioni e i fondamenti dei DBMS. Fornisce competenze per progettare schemi efficienti, interrogare i dati e sviluppare applicazioni che interagiscono con database.
Fornire la basi delle tecniche di Ricerca Operativa
Insegnamento avanzato focalizzato sugli algoritmi di ottimizzazione numerica e l'algebra lineare computazionale. Fornisce i metodi stocastici e numerici necessari per l'addestramento e lo sviluppo di modelli di apprendimento automatico.
Corso di laurea magistrale internazionale focalizzato sulla progettazione di sistemi autonomi complessi. Il programma copre il Machine Learning, il Deep Learning, la Computer Vision, l'Internet of Things (IoT) e l'analisi dei Big Data. L'approccio è interdisciplinare e combina solide basi matematiche con competenze tecniche informatiche avanzate e riflessioni etico-giuridiche sull'uso dell'IA.
Studio delle architetture avanzate dei calcolatori e del pipelining. Il corso approfondisce la gerarchia di memoria (cache e memoria virtuale), i sistemi di input/output e le architetture parallele per il calcolo moderno.
Evoluzione verso il paradigma Object-Oriented (OOP). Il corso approfondisce i concetti di incapsulamento, ereditarietà, polimorfismo, astrazione e interfacce, utilizzando Java come linguaggio di riferimento. Vengono inoltre trattati temi quali la gestione delle eccezioni, il Collection Framework, la programmazione multithread (concorrenza) e la creazione di interfacce grafiche (GUI).
Studia l'architettura e i meccanismi di funzionamento dei moderni sistemi operativi. Tratta gestione dei processi, scheduling, sincronizzazione, memoria virtuale, file system, I/O e concetti di sicurezza. Fornisce competenze teoriche e pratiche per comprendere come il software di sistema gestisce le risorse hardware e supporta l'esecuzione concorrente delle applicazioni.
Corso mirato allo sviluppo di competenze pratiche nella risoluzione di problemi computazionali complessi. L'obiettivo è imparare a selezionare, adattare e implementare algoritmi avanzati per sfide tratte da casi reali. Il programma approfondisce tecniche ricorsive, strutture dati gerarchiche, algoritmi su grafi e strategie di ottimizzazione dinamica e greedy.
Corso mirato al calcolo multi-variabile essenziale e allo studio delle serie. Il programma approfondisce i limiti, la continuità e la differenziabilità per funzioni di più variabili reali, i problemi di ottimizzazione (massimi e minimi), gli integrali doppi, e le serie di funzioni (serie di potenze e di Fourier), fornendo gli strumenti analitici necessari per la modellizzazione in ambito informatico e fisico.
Studio dei principi e delle architetture delle reti di calcolatori. Il programma copre i modelli di riferimento OSI e TCP/IP, i protocolli dei livelli applicativo (HTTP, DNS, SMTP), trasporto (TCP, UDP) e rete (IP, routing). Il corso include esercitazioni pratiche su sistemi Linux per l'analisi del traffico e la configurazione di servizi di rete.
Basi teoriche e pratiche per la progettazione e l'implementazione di compilatori e interpreti. Il corso analizza le fasi di analisi lessicale (espressioni regolari e automi), analisi sintattica (grammatiche context-free e parser), analisi semantica (controllo tipi), generazione del codice intermedio e ottimizzazione del codice target per l'esecuzione su macchina.
Tecniche moderne per la gestione, memorizzazione e ricerca di informazioni in domini complessi. Il corso si focalizza sul trattamento di dati non strutturati e semistrutturati (Web, Social Network), approfondendo i motori di ricerca (Information Retrieval), il Web Semantico e l'utilizzo di tecnologie data-centric per l'organizzazione efficiente dei dati.
Insegnamento dedicato alle metodologie per lo sviluppo di sistemi software complessi. Il corso copre la specifica dei requisiti (UML, standard IEEE 830), il ciclo di vita del software, l'uso di Design Patterns per la risoluzione di problemi ricorrenti e i principi della modularità e qualità del codice. L'obiettivo è fornire strumenti modellistici e pratici per gestire la complessità e la manutenzione del software come prodotto industriale.
Sviluppo di applicazioni web moderne, analizzando sia il lato client (frontend) che il lato server (backend). Vengono trattati i linguaggi HTML5, CSS3 e JavaScript (ES6+), il protocollo HTTP/HTTPS, l'interazione con il DOM, la creazione di API RESTful e l'integrazione con database SQL/NoSQL. Il corso include lo studio di framework moderni e delle principali vulnerabilità di sicurezza web.
Introduzione alle tecnologie avanzate di intelligenza artificiale e machine learning. Il corso analizza algoritmi di apprendimento supervisionato e non supervisionato, reti neurali, computer vision e sistemi esperti. L'approccio è orientato all'integrazione di moduli intelligenti in soluzioni software reali, affrontando problemi di modellazione, gestione dei dati e ottimizzazione in ambiti quali la robotica e l'analisi dati.
Panoramica sui diversi modelli di computazione oltre la programmazione imperativa e a oggetti. Il corso si focalizza sulla programmazione funzionale (es. Haskell, OCaml), esplorando inoltre i paradigmi logico (Prolog), reattivo e data-flow. Gli studenti apprendono le basi teoriche dei linguaggi e le tecniche per l'implementazione di interpreti, comprendendo la semantica e i limiti logici dei diversi approcci.