CdSINFORMATICA
Codice733AA
CFU9
PeriodoPrimo semestre
LinguaItaliano
Moduli | Settore/i | Tipo | Ore | Docente/i | |
PARADIGMI DI PROGRAMMAZIONE | INF/01 | LEZIONI | 72 |
|
L'insegnamento si propone di fornire un modell concettuale per confrontare e analizzare la moltitudine di linguaggi di programmazione, e paradigmi nel panorama della programmazione modern. aAl termine dell'insegnamento lo studente avrà acquisito conoscenze relative allla progettazione, realizzazione e uso dei lin guaggi di progreammazione
The course seeks to provide a conceptual model on how to compare and analyze the multitude of programming languages and paradigms in the modern programming landscape. At the end of the course studenst will have acquired basic knowledge and skills on the design, implementation and use of programming languages.
Per l'accertamento delle conoscenze saranno svolte delle prove scritte che includurenni anche aspetti di sperimentazione sulla progettazione e uso di molteplici paradigmi linguistici di programmazione.
For the assessment of knowledge, written tests will be carried out. This written tests will also include experimental activities on the design and use of multiple programming language paradigms.
Al termine del corso
- lo studente avra' maturato e competenze utilizzare modelli datti a comprendere le caratteristiche dei diversi paradigmi di programmazione
- lo studente avra' le maturato le competenze indispensabili per imparare a utilizzare i linguaggi di progrmmazione e quali sono le tecniche per la realizzazione dei linguaggi di programmazione,.
At the end of the course
- students will have acquired the skills to exploit conceptual models to understand the characteristics of the different programming paradigms
- studentswill have acquired the necessary skills to learn how to use programming languages and what techniques are used to implement programming languages.
Durante le attività di esercitazione saranno svolte sia attività pratiche di programamzione che attivita' atte alla modelizzazione foirmale dei linguaggi di programmazione. Nella prova scritta gli studenti saranno chiamati a preparare semplici relazioni sulla modellazione formale di concetti di programmazione.
Training activities will address exprimental programming tasks as well as tasks aimed at formal modelling of programming language concepts.The written exam will require that students prepare and submit written reports on formal modelling of programming concepts.
Abilità nel lavoro di gruppo (team work)
Skill in team work
Verra' valutata la corretteza e la desriziomne delle domande della prova scritta.
The correctness and design of the questions in the written test will be assessed.
Conoscenza della programmazione e delle tecniche algoritmiche di base.
Knowledge of programming and basic algorithmic techniques.
Lo studio dei linguaggi di programmazione è isuddiviso sistematicamente bilanciando teoria e pratica. La comprensione rigorosa della struttura e della semantica del linguuaggio di programmazione permette un ragionamento formale sul comportamento e le proprietà dei sistemi complessi del mondo reale.
La frequenza non e' obbligatoria ma e' fortemente consigliata. Il corso e' pensato ed organizzato per una frequenza attiva e continua.
The study of programming languages is equal parts systems and theory, looking at how a rigorous understanding of the syntax, structure, and semantics of computation enables formal reasoning about the behavior and properties of complex real-world systems.
Attendance is not compulsory but strongly recommended. The course is designed and organised for active and continuous attendance.
Modelli formali dei linguaggi di programmazione: il lambda calcolo
Il lambda calcolo: semantica operazionale
Il lambda calcolo tipato semplice
Il paradigma funzionale: concetti e caratteristiche di base.
Un caso di studio: il linguaggio OCAML
I sistemi di tipo nel linguaggi di programmazione.
Polimorfismo e inferenza di tipo
Il paradigma orientato a oggetti: concetti e caratteristiche di base.
Linguaggi Object-based e class based.
Esempi: Javascript, Ocaml
Un caso di Studio: Java
Eredetarieta' singola e multipla
Il paradigma della programmazione concorrente. Concetti e caratteristiche di base,
Esempi
Un caso di studio: Rust
Formal models of programming languages: the lambda calculus
The lambda calculus: operational semantics
The simple typed lambda calculus
The functional paradigm: basic concepts and characteristics.
A case study: the OCAML language
Type systems in programming languages.
Polymorphism and type inference
The object-oriented paradigm: concepts and basic characteristics.
Object-based and class-based languages.
Examples: Javascript, Ocaml
A case study: Java
Single and multiple inheritance
The paradigm of concurrent programming. Basic concepts and characteristics,
Examples
A case study: Rust
- M. Gabbrielli and S. Martini, Linguaggi di Programmazione: Principi e Paradigmi, McGraw-Hill, 2006
- Benjamin C. Pierce, Types and Programming Languages, MIT Press
- Ulteriore materiale didattico e' indicato e reso disponibile dai docenti nella descrizione degli argomenti trattati a lezione
Ulteriore materiale didattico e' disponibile nella classroom dell'insegnamento:
- M. Gabbrielli and S. Martini, Linguaggi di Programmazione: Principi e Paradigmi, McGraw-Hill, 2006
- Benjamin C. Pierce, Types and Programming Languages, MIT Press
- Further teaching material will be made available by teachers for the topics covered in the lecture.
Further teaching material ia available in the classromm associted to teh course
- L'esame è composto da una prova scritta e una discussione orale.
- La prova scritta consiste in una serie di esercizi sia pratici che di modellizazione formale.
The final assessment consists of a written test and an oral discussion.
The written test consists of a series of practical and formal modelling exercises.
Non e' presente una pagina web ma una classroom
https://teams.microsoft.com/l/team/19%3aEikjQ7EGlCVE5JlQkFVL3idgEr8Os17EuIpfTMg5px01%40thread.tacv2/conversations?groupId=32fd2f18-eac5-4578-8f1a-8e933cbcbcf9&tenantId=c7456b31-a220-47f5-be52-473828670aa1
The course classroom
https://teams.microsoft.com/l/team/19%3aEikjQ7EGlCVE5JlQkFVL3idgEr8Os17EuIpfTMg5px01%40thread.tacv2/conversations?groupId=32fd2f18-eac5-4578-8f1a-8e933cbcbcf9&tenantId=c7456b31-a220-47f5-be52-473828670aa1