Corso di Linguaggi di Programmazione

Anno Accademico 2021/2022
Docente: Pietro Cenciarelli

Ultima modifica: 3 ottobre 2021


Introduzione

Nel corso di Linguaggi di Programmazione viene approfondito lo studio di alcune nozioni fondamentali nell'ambito dei linguaggi di programmazione: dalle più elementari, come quella di variabile, o di parametro, a concetti più complessi come quello di polimorfismo o di sottotipo, che hanno particolare rilevanza nella verifica di proprietà di correttezza e sicurezza dei programmi. Queste nozioni assumono forme diverse nei diversi paradigmi di programmazione. In particolare, nella prima parte del corso vengono considerati e messi a confronto il paradigma imperativo, funzionale e ad oggetti, facendo riferimento rispettivamente a linguaggi Algol-like, ad ML ed a Java. Mentre si assumono esperienza nella programmazione imperativa (ad esempio in "C") e rudimenti di Java, non è richiesta alcuna conoscenza preliminare di ML.

Scopo del corso non è quello di insegnare nuovi linguaggi, ma di guidare lo studente alla comprensione dei fondamenti teorici che stanno alla base dei moderni linguaggi di programmazione. A tale scopo, nella parte di corso relativa ai paradigmi di programmazione, viene utilizzata la semantica operazionale, che consente di definire formalmente i diversi meccanismi di scoping e passaggio dei parametri. Analogamente, i concetti di funzione di ordine superiore, polimorfismo e sottoclasse vengono spiegatiti mediante altrettanti sistemi formali dei tipi. Il corso comprende infine un nutrito programma di esercitazioni ed attività di programmazione da svolgere in laboratorio.

Linguaggi di Programmazione è formalmente equiparato al corso di Linguaggi di Programmazione I: Paradigmi del vecchio ordinamento. Il corso è fortemente consigliato per chi, intendendo proseguire nella Laurea Magistrale, volesse scegliere il curriculum di Metodi Formali per il Software, o fosse comunque interessato a gettare uno sguardo sui fondamenti teorici dell'informatica.

Gli argomenti trattati nel corso di Linguaggi di Programmazione sono descritti, insieme a molti altri, in questa mappa concettuale interattiva.

Il corso si avvale di un supporto di e-learning basato su piattaforma Moodle, al quale è fortemente consigliato iscriversi. Lì troverete i forum del corso, avvisi importanti (che potrebbero non essere riportati in questa pagina web), registrazioni di eventi telematici, incluse le lezioni registrate in era Covid, e molto altro. Trovate le istruzioni per iscrivervi nella sezione Miscellanea.

Programma del corso

Programmi svolti nei passati anni accademici:

Materiale e testi di consultazione

Altri testi
Programming Languages, Principles and Paradigms, A. Tucker e R. Noonan, McGraw-Hill 2002.
Programming Languages Design and Implementation (Fourth Edition), T.W. Pratt e M.V. Zelkowitz, Prentice-Hall, 2001.
The Java Programming Language, K.Arnold e J.Gosling. Addison-Wesley 1998. Esistono numerosi tutorial su Java in rete, per esempio sul sito della Sun (dove si può scaricare anche il compilatore).
LISP Primer, Colin Allen, Maneesh Dhagat: un breve corso introduttivo al Lisp sotto forma di ipertesto.

Letture consigliate

Orari

Modalità d'esame

Il corso prevede attività di verifica dell'apprendimento e di approfondimento: due prove di esonero (la prima a novembre, la seconda prima della prova orale) ed un progetto da svolgere in gruppo. L'esame consite in una prova scritta (solo per chi non ha svolto, o non intende far valere, gli esoneri) ed una orale, nel corso della quale verranno discussi anche esoneri (o scritto) e progetto (se svolto).

Prove scritte, esoneri, progetti

Esercitazioni

Torneo dei tipi

Nel torneo dei tipi i concorrenti si sfidano ponendosi reciprocamente problemi di tipaggio di termini ML. Il torneo funziona ad eliminazione diretta. La finale si celebra il giorno del primo appello orale. Il vincitore verbalizza immediatamente un 30 senza dover sostenere prova scritta né orale. Può comunque chiedere di sostenere l'orale per avere la lode.

Valutazione del corso

Ecco come gli studenti hanno valutato questo corso (sono file .slk, un formato per spreadsheet che si apre con Excel, o con Open Office.) Istruzioni per la compilazione del modulo di rilevazione delle opinioni

Miscellanea

Registrazione al supporto di e-learning del corso di Linguaggi basato su piattaforma Moodle. Praticamente obbligatorio iscriversi! E' necessario avere un accout sulla piattaforma Moodle di Sapienza (gli studenti Sapienza ce l'hanno automaticamente; altrimenti, per crearlo, è necessario impostare una password e fornire un indirizzo di posta elettronica, al quale riceverete un messaggio dal sistema di supporto e-learning Sapienza contenente un collegamento da clickare per completare la registrazione). Una volta in possesso di un account dovete cercare il corso di Linguaggi di Programmazione (selezionando facoltà e corso) e finalmente clickare su iscrivimi. Se non siete studenti di Sapienza è necessaria una chiave di iscrizione (contattatemi nel caso), altrimenti no. Se desiderate potete procedere modificando il vostro profilo.

Avvisi

Nell'anno accademico 2020-21 il corso è erogato in modalità mista (presenza e telematica). Link e credenziali di accesso per partecipare in modalità telematica (riunione in Zoom) sono pubblicate sulla bacheca del docente accessibile dal catalogo dei corsi di studio: https://corsidilaurea.uniroma1.it/it/users/pietrocenciarelliuniroma1it