View syllabus
ADVANCED PROGRAMMING
ANDREA CORRADINI
Academic year2021/22
CourseCOMPUTER SCIENCE AND NETWORKING
Code301AA
Credits9
PeriodSemester 1
LanguageEnglish

ModulesAreaTypeHoursTeacher(s)
ADVANCED PROGRAMMINGINF/01LEZIONI72
ANDREA CORRADINI unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

Gli obiettivi del corso sono:


  1. 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

  2. di familiarizzare gli studenti con i moderni principi, tecniche e migliori pratiche per la costruzione di software sofisticato
  3. di introdurre tecniche di programmazione a livelli di astrazione più elevata, in particolare programmazione basata su componenti 
e programmazione funzionale
  4. 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.

Knowledge

The objectives of this course are:


  1. 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

  2. to acquaint the students with modern principles, techniques, and best practices of sophisticated software construction

  3. to introduce the students to techniques of programming at higher abstraction levels, in particular component programming and functional programming
  4. 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.

Modalità di verifica delle conoscenze

Esame orale finale.

Assessment criteria of knowledge

Final oral exam.

Capacità

Alla fine del corso gli studenti avranno una precisa comprensione e un’esperienza pratica diretta di:

  1. ambiente di esecuzione e supporto a runtime dei linguaggi di programmazione
  2. costrutti di programmazione avanzati, principalmente di linguaggi di programmazione funzionali e orientati agli oggetti
  3. frameworks per lo sviluppo di software basato su componenti, anche con supporto all’interoperabilità tra linguaggi di programmazione distinti.
Skills

At the end of the course students will have a precise understanding and hand-on practical experience of

  1. the execution environment and runtime support of programming languages
  2. advanced programming constructs and idioms, mainly of functional and object-oriented programming languages
  3. frameworks for the component based development of software, also supporting interoperability among different programming languages.

 

Modalità di verifica delle capacità

Valutazione di piccoli progetti di programmazione assegnati durante il corso e esame finale orale.

Assessment criteria of skills

Evaluation of programming assignments during the course and final oral exam.

Prerequisiti (conoscenze iniziali)

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).

Prerequisites

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).

 

Indicazioni metodologiche
  • Il corso è insegnato in Inglese.
  • Un test d’ingresso verrà proposto all’inizio del corso per verificare il possesso dei prerequisiti. Agli studenti che non superino il test verranno date indicazioni per colmare le lacune individuate.
  • Le lezioni frontali si svolgono con uso di slide e della lavagna.
  • 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 nei libri di testo. Vengono anche pubblicati i testi degli esercizi proposti per le esercitazioni.

 

Teaching methods
  • The course is taught in English.
  • An entry test will be proposed at the beginning of the course. Students who will not pass the test will be instructed on how to fill the identified gaps
  • Frontal lessons are performed using slides and blackboard
  • 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 topics in the textbooks.

 

Programma (contenuti dell'insegnamento)
  1. Pragmatica dei Linguaggi di Programmazione
  2. Supporto Run Time e Ambienti di Esecuzione
  3. Programmazione Generica
  4. Librerie di Classi e Framework
  5. Interoperabilità tra Linguaggi
  6. Programmazione Basata su Componenti
  7. Linguaggi di Scripting
Syllabus
  1. Programming Language Pragmatics
  2. Run Time Support and Execution Environments
  3. Generic Programming
  4. Class Libraries and Frameworks
  5. Language Interoperability
  6. Component Based Programming
  7. Scripting Languages
Bibliografia e materiale didattico

Slides presented during the lectures and other reference material that will be indicated during the course.

 

Bibliography

Slides presented during the lectures and other reference material that will be indicated during the course.

Indicazioni per non frequentanti

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 info

Non-attending students can find on the course web page the list of topics presented for each lesson, with the projected slides and references to the relevant teaching material. Examination methods for non-attending students are identical to those for attending students.

Modalità d'esame

Valutazione di piccoli progetti di programmazione assegnati durante il corso e esame finale orale.

Assessment methods

Evaluation of programming assignments during the course and final oral exam.

Altri riferimenti web

Pagina web AA 2020/21:

https://pages.di.unipi.it/corradini/Didattica/AP-20/

Additional web pages

Web page for Academic Year 2020/21:

https://pages.di.unipi.it/corradini/Didattica/AP-20/

Updated: 13/09/2021 23:24