91161 - NETWORKS, SECURITY AND DATA BASES

Anno Accademico 2022/2023

  • Docente: Paolo Felli
  • Crediti formativi: 6
  • SSD: INF/01
  • Lingua di insegnamento: Inglese
  • Moduli: Paolo Felli (Modulo 1) Davide Barbarossa (Modulo 2)
  • Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
  • Campus: Bologna
  • Corso: Laurea in Genomics (cod. 9211)

Conoscenze e abilità da conseguire

l’insegnamento ha come scopo quello di fornire allo studente conoscenze specialistiche nell’ambito delle scienze computazionali permettendogli/le di acquisire maggior consapevolezza circa il potenziale dei più recenti sistemi informatici e di comunicazione. Nello specifico saranno forniti concetti circa i sistemi operativi, le reti informatiche, la sicurezza informatica e le banche dati.

Contenuti

Il corso consiste di due moduli e fornisce un'introduzione ad alcuni dei principali temi dell'informatica.

Nel primo modulo saranno discusse le basi dei calcolatori con focus su una specifica architettura, ed il modello per database relazionali con un corrispondente linguaggio di query.

Nel secondo modulo saranno discussi alcuni concetti fondamentali della teoria della complessità computazionale e la loro applicazione per l'analisi dei protocolli crittografici e di algoritmi di apprendimento automatico.

Al termine del corso gli studenti saranno in grado di discutere diversi temi teorici e di risolvere alcuni problemi pratici utilizzando concetti e strumenti delle discipline menzionate.

 

MODULO 1:

Elementi di logica

- Logica Proposizionale

- Modelli di calcolo basati sui circuiti e Algebra Booleana

Calcolatori

- Organizzazione dei sistemi di calcolo e rappresentazione dell'informazione

- Porte logiche e circuiti. Memorie, CPU e bus

- Il livello ISA e la programmazione Assembly

Databases

- Modello relazionale ed Algebra Relazionale

- Relational DBMS e il linguaggio di interrogazione SQL

 

MODULO 2:

Complessità:

- Modelli di calcolo, la macchina di Turing

- Notazione asintotica, classi di complessità, il problema P=NP

- Discussione di alcuni problemi intrattabili (fattorizzazione, logaritmo discreto)

Crittografia:

- Cenni di aritmetica modulare

- Panoramica generale sulla crittografia (funzioni one-way, crittosistemi, sistemi a chiave pubblica/privata)

- Esempi di crittosistemi a chiave pubblica (RSA, DHKE)

Machine Learning:

- Il modello PAC della complessità dell'apprendimento automatico

- Stime della complessità di alcuni problemi di apprendimento (funzioni Booleane, Support Vector Machines, reti neurali)

Testi/Bibliografia

Saranno distribuite le slides delle lezioni. Per ulteriore approfondimento suggeriamo i seguenti testi:

- Andrew S. Tanenbaum - Todd Austin. Structured Computer Organization 6th edition. Pearson. 2013.

- Database System Concepts (4th edition). Silberschatz, Korth, Sudarshan. McGraw Hill, 2002.

- Sipser, M. Introduction to the theory of computation. Second Edition. Thomson Course Technology, USA, 2006.

- Paar, C. and Pelzl, J. Understanding Cryptography. Springer-Verlag, Berlin-Heidelberg, 2010.

- Mohri, M., Rostamizadeh, A., Talwalkar, A. Foundations of Machine Learning, MIT Press, Cambridge, Massachussets 2018.

Metodi didattici

Lezioni frontali.

Modalità di verifica e valutazione dell'apprendimento

L'esame consiste in prove scritte (comprendente sia domande teoriche aperte che esercizi) e di un progetto facoltativo intermedio sulla realizzazione di un calcolatore. Gli scritti vengono poi discussi in una breve prova orale successiva. 

Nel caso l'esame sia online le domande teoriche verranno riservate per la prova orale.

Strumenti a supporto della didattica

Saranno distribuite le slides delle lezioni. 

Orario di ricevimento

Consulta il sito web di Paolo Felli

Consulta il sito web di Davide Barbarossa