CODICE 104779 ANNO ACCADEMICO 2025/2026 CFU 2.5 cfu anno 2 INTERNET AND MULTIMEDIA ENGINEERING 10378 (LM-27) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE ING-INF/03 LINGUA Inglese SEDE GENOVA PERIODO 2° Semestre MODULI Questo insegnamento è un modulo di: INTERNET PROGRAMMING AND AUTONOMOUS SYSTEMS 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 General overview of Unix / Linux Operating Systems Multi - Process / Multi - Thread paradigm Main techniques of IPC (Inter Process Communications) / ITC (Inter Thread Communications) Socket Programming TCP UDP Security with TSL and SSL REST API Introduction Architectural Constraints Design Error Handling Patterns Handling Change - Versioning Patterns Cache Control Patterns REST Security Introduction Basic Authentication Tokens & JWT Keys & Secret OAuth 2.0 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 ALESSANDRO CARREGA Ricevimento: Ogni martedì dalle 14:00 alle 16:00. Per eventuali appuntamenti fuori da questo orario contattare il docente via email all'indizzo: alessandro.carrega@unige.it. LEZIONI INIZIO LEZIONI https://easyacademy.unige.it/portalestudenti/index.php?view=easycourse&include=attivita&anno=2024&attivita[]=EC104779&date=18-02-2025 Orari delle lezioni CLOUD AND NETWORK PROGRAMMING 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).