Salta al contenuto principale
CODICE 104779
ANNO ACCADEMICO 2025/2026
CFU
SETTORE SCIENTIFICO DISCIPLINARE ING-INF/03
LINGUA Inglese
SEDE
  • GENOVA
PERIODO 2° Semestre
MODULI Questo insegnamento è un modulo di:
MATERIALE DIDATTICO AULAWEB

PRESENTAZIONE

OBIETTIVI E CONTENUTI

OBIETTIVI FORMATIVI

Le lezioni sono progettate come un mix coordinato di elementi teorici e pratici su sistemi operativi, processi, programmazione socket, API (Application Program Interface) REST e relativi meccanismi di sicurezza. Il coordinamento di questi concetti mira a fornire agli studenti le competenze necessarie per comprendere come sviluppare semplici applicazioni di rete, ad esempio Cloud Computing e/o Internet of Things (IoT). La frequenza, la partecipazione attiva alle lezioni e lo studio individuale consentiranno agli studenti: - apprezzare i vantaggi/opportunità derivanti dall'utilizzo di applicazioni Internet Multi Thread; - progettare e implementare applicazioni Internet Multi Thread; - progettare e realizzare applicazioni Client/Server; - progettare e implementare API REST; - utilizzare, progettare e implementare protocolli e meccanismi di sicurezza per applicazioni Client/Server e API REST.

OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO

Le lezioni sono progettate come un mix coordinato di elementi teorici e pratici su sistemi operativi, processi, programmazione socket, programmazione di architetture REST API e qualche concetto legato alla sicurezza di queste implementazioni. Il coordinamento di questi concetti mira a fornire agli studenti le competenze necessarie per comprendere come sviluppare semplici applicazioni di rete, ad esempio Cloud Computing e/o Internet of Things (IoT).

La frequenza, la partecipazione attiva alle lezioni e lo studio individuale consentiranno agli studenti di:

  • apprezzare i vantaggi/opportunità derivanti dall'utilizzo della comunicazione inter-processo (IPC) e inter-thread (ITC);
  • comprendere le principali tecniche per sfruttare l'IPC e l'ITC;
  • scrivere codice per implementare applicazioni Client/Server basate su Socket (TCP e UDP) e quelle basate su REST API con relativi concetti di sicurezza per la protezioni di queste applicazioni.
  • conoscere i principali strumenti per lo sviluppo, test e deployment di applicazioni Client/Server basate su Socket (TCP e UDP), e quelle su REST API.

MODALITA' DIDATTICHE

Lezioni in presenza (salvo specifiche restrizioni dovute all'emergenza Covid-19).

Le lezioni sono principalmente legate alla programazione e includono qualche possibile esercitazione pratica.

Ulteriori informazioni disponibili sulla pagina AulaWeb e sul canale Microsoft Teams dedicato al corso.

PROGRAMMA/CONTENUTO

  1. General overview of Unix / Linux Operating Systems
    1. Multi - Process / Multi - Thread paradigm
    2. Main techniques of IPC (Inter Process Communications) / ITC (Inter Thread Communications)
  2. Socket Programming
    1.  TCP
    2. UDP
    3. Security with TSL and SSL
  3. REST API
    1. Introduction
    2. Architectural Constraints
    3. Design
      1. Error Handling Patterns
      2. Handling Change - Versioning Patterns
      3. Cache Control Patterns
    4. REST Security
      1. Introduction
      2. Basic Authentication
      3. Tokens & JWT
      4. Keys & Secret
      5. OAuth 2.0
      6. Functional Attack

TESTI/BIBLIOGRAFIA

Registrazioni delle lezioni con particolare attenzione allo svilluppo del codice spiegato punto per punto.

Libri di riferimento

  • Vasudevan, S. K., Muralidharan, S., Sundaram, M. N., e Suresh, C. (2015), "Essentials of internet programming", I.K. International Publishing House.
  • Stevens, W. R. (1990), "UNIX Network Programming", Prentice Hall.
  • Stevens, W. R. (1998), "UNIX Network Programming, Volume 2: Interprocess Communications (2° ed.)", Prentice Hall.
  • Rochkind, M. J. (2004), "Advanced UNIX Programming (2° ed.)", Addison-Wesley Educational.
  • Goerzen, J., Bower, T., e Rhodes, B. (2010). "Foundations of Python Network Programming: The comprehensive guide to building network applications with Python (2° ed.)", APress.
  • Jose Manuel Ortega (2023), "Python for Security and Networking: Leverage Python modules and tools in securing your network and applications (3° ed.)", Packt.
  • Subramanian, H., e Raj, P. (2019), "Hands-On RESTful API Design Patterns and Best Practices: Design, develop, and deploy highly adaptable, scalable, and secure RESTful web APIs", Packt Publishing.

DOCENTI E COMMISSIONI

LEZIONI

ESAMI

MODALITA' D'ESAME

Scritto. Prova orale aggiuntiva per possibile miglioramento della valutazione finale.

MODALITA' DI ACCERTAMENTO

L'esame scritto con possibile successiva prova orale è finalizzato a valutare le capacità di sintesi, di ragionamento e di critica degli studenti sugli argomenti trattati a lezione.

ALTRE INFORMAZIONI

Gli studenti con disabilità o disturbi dell'apprendimento possono usufruire di modalità e supporti specifici che saranno determinati caso per caso, in accordo con il Delegato dei corsi di Ingegneria presso la Commissione per l'Inclusione degli Studenti con Disabilità. Gli studenti sono invitati a contattare il docente di questo corso e a inviare copia del Delegato (https://unige.it/commissioni/comitatoperlinclusionedeglistudenticondisabilita.html).