Scheda programma d'esame
PROGRAMMING PARADIGMS
GIAN-LUIGI FERRARI
Academic year2021/22
CourseCOMPUTER SCIENCE
Code733AA
Credits9
PeriodSemester 1
LanguageItalian

ModulesAreaTypeHoursTeacher(s)
PARADIGMI DI PROGRAMMAZIONEINF/01LEZIONI72
GIAN-LUIGI FERRARI unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

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

 
Knowledge

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.

Modalità di verifica delle conoscenze

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.

Assessment criteria of knowledge

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.

Capacità

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,.
Skills

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.
Modalità di verifica delle capacità

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.

Assessment criteria of skills

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.

Comportamenti

Abilità nel lavoro di gruppo (team work)

Behaviors

Skill in team work

Modalità di verifica dei comportamenti

Verra' valutata la corretteza e la desriziomne delle domande della prova scritta.

Assessment criteria of behaviors

The correctness and design of the questions in the written test will be assessed.

Prerequisiti (conoscenze iniziali)

Conoscenza della programmazione e delle tecniche algoritmiche di base.

Prerequisites

Knowledge of programming and basic algorithmic techniques.

Indicazioni metodologiche

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.

Teaching methods

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.

Programma (contenuti dell'insegnamento)

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

 

Syllabus

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

 

Bibliografia e materiale didattico

 

  • 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: 

Bibliography
  • 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

Modalità d'esame
  • 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.
Assessment methods

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.

Altri riferimenti web

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

Additional web pages

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

Updated: 19/11/2021 16:04