CdSINFORMATICA E NETWORKING
Codice301AA
CFU9
PeriodoPrimo semestre
LinguaInglese
Moduli | Settore/i | Tipo | Ore | Docente/i | |
ADVANCED PROGRAMMING | INF/01 | LEZIONI | 72 |
|
Gli obiettivi del corso sono:
- di fornire agli studenti una conoscenza approfondita di come concetti e metafore ad alto livello dei linguaggi di programmazione si traducono in sistemi eseguibili e quali siano i loro costi e limiti
- di familiarizzare gli studenti con i moderni principi, tecniche e migliori pratiche per la costruzione di software sofisticato
- di introdurre tecniche di programmazione a livelli di astrazione più elevata, in particolare programmazione basata su componenti e programmazione funzionale
- di presentare frameworks allo stato dell’arte che incorporano queste tecniche.
Il corso in particolare si focalizza su questioni di qualità relative al progetto dettagliato ed alla codifica, quali l’affidabilità, le prestazioni, l’adattabilità e l’integrabilità in sistemi più ampi.
The objectives of this course are:
- to provide the students with a deep understanding of how high level programming concepts and metaphors map into executable systems and which are their costs and limitations
- to acquaint the students with modern principles, techniques, and best practices of sophisticated software construction
- to introduce the students to techniques of programming at higher abstraction levels, in particular component programming and functional programming
- to present state-of-the-art frameworks incorporating these techniques.
This course focuses on the quality issues pertaining to detailed design and coding, such as reliability, performance, adaptability and integrability into larger systems.
Esame orale finale.
Final oral exam.
Alla fine del corso gli studenti avranno una precisa comprensione e un’esperienza pratica diretta di:
- ambiente di esecuzione e supporto a runtime dei linguaggi di programmazione
- costrutti di programmazione avanzati, principalmente di linguaggi di programmazione funzionali e orientati agli oggetti
- frameworks per lo sviluppo di software basato su componenti, anche con supporto all’interoperabilità tra linguaggi di programmazione distinti.
At the end of the course students will have a precise understanding and hand-on practical experience of
- the execution environment and runtime support of programming languages
- advanced programming constructs and idioms, mainly of functional and object-oriented programming languages
- frameworks for the component based development of software, also supporting interoperability among different programming languages.
Valutazione di piccoli progetti di programmazione assegnati durante il corso e esame finale orale.
Evaluation of programming assignments during the course and final oral exam.
Conoscenza a livello undergraduate di almeno un linguaggio di programmazione orientato agli oggetti (come Java, C++, C# o altri) e di almeno un linguaggio di programmazione funzionale (come Haskell, OCaml, Scheme o altri).
Undergraduate level knowledge of at least one object-oriented programming language (like Java, C++, C# or others) and of at least one functional programming language (like Haskell, OCaml, Scheme or others).
- Il corso è insegnato in Inglese.
- Un questionario verrà proposto all’inizio del corso per confermare il possesso dei prerequisiti. Agli studenti che non abbiano i prerequisiti verranno date indicazioni per colmare le lacune individuate.
- Le lezioni frontali si svolgono con uso di slide.
- Le esercitazioni si svolgono in aula: gli studenti svolgono degli esercizi, anche in gruppo, sotto la supervisione del docente e dell’assistente
- L'interazione con il docente avviene con colloqui (in orario di ricevimento o su appuntamento) e tramite posta elettronica.
- Sulla pagina web del corso vengono pubblicati progressivamente i lucidi presentati in ogni lezione, con riferimenti ai corrispondenti argomenti in documenti disponibili online. Vengono anche pubblicati i testi degli esercizi proposti per le esercitazioni.
- The course is taught in English.
- An entry questionnaire will be proposed at the beginning of the course to check the background knowledge. Students missing some prerequisites will be instructed on how to fill the identified gaps
- Frontal lessons are performed using slides
- Exercises take place in the classroom: students practice exercises, even in groups, under the supervision of the lecturer and of the tutor
- Interaction with the teacher is done through interviews (on fixed office hours or by appointment) and by e-mail.
- On the web page of the course, the slides presented in each lesson are published progressively, with references to corresponding reading material available online.
- Pragmatica dei Linguaggi di Programmazione
- Supporto Run Time e Ambienti di Esecuzione: la Java Virtual Machine
- Programmazione basata su componenti e Frameworks
- Polimorfismo: classificazione ed esempi in vari linguaggi
- Linguaggi funzionali, Haskell, e concetti avanzati
- Stream API e espressioni lambda in Java
- Ownership e Borrowing in Rust
- Linguaggi di Scripting e Python
- Programming Language Pragmatics
- Run Time Support and Execution Environments: the Java Virtual Machine
- Components based programming and Frameworks
- Polymorphism: a classification and examples in several languages
- Linguaggi funzionali, Haskell, e concetti avanzati
- Stream API and lambda-expressions in Java
- Ownership and Borrowing in Rust
- Scripting Languages and Python
Reading material that will be indicated during the course, and linked from the web page.
Reading material that will be indicated during the course, and linked from the web page.
Gli studenti non frequentanti possono trovare sulla pagina web del corso l'elenco degli argomenti presentati per ogni singola lezione, con le slide proiettate e i riferimenti al materiale didattico rilevante. Le modalità d'esame per gli studenti non frequentanti sono identiche a quelle per gli studenti frequentanti.
Non-attending students can find on the course web page the list of topics presented for each lesson, with the slides and references to the relevant reading material. Examination methods for non-attending students are identical to those for attending students.
Valutazione di piccoli progetti di programmazione assegnati durante il corso e esame finale orale.
Evaluation of programming assignments during the course and final oral exam.
Pagina web AA 2023/24:
Web page for Academic Year 2023/24:
https://pages.di.unipi.it/corradini/Didattica/AP-23/