Corso di Studi in
Informatica e Tecnologie per la Produzione del Software
Dipartimento di Informatica • Università degli Studi di Bari Linguaggi di Programmazione con Laboratorio [005745]Insegnamento tenuto fino all'AA 2014. NB Appelli (su Esse3) aperti su richiesta degli studentiIl sito per il nuovo insegnamento è sulla piattaforma e-learning ADA |
Ultime Notizie
18/05
Come anticipato, con il nuovo AA le modalità d'esame sono semplificate (vedi sez. in questa pagina). Le date saranno rese note via Esse3 e, indicativamente, dovrebbero coincidere con quelle del nuovo insegnamento (orari diversi).
16/02
Il nuovo insegnamento (AA 2015 e seguenti) ha denominazione, codice e programma diversi rispetto agli AAAA precedenti. Si raccomanda di prestare attenzione al codice insegnamento su Esse3
12/11
Si ricorda che le prove scritta e orale devono essere sostenute nel medesimo appello. Gli appelli di Nov./Apr. si devono svolgere entro il periodo di pausa dalle lezioni.
Si ricorda altresì che NON sono ammesse prenotazioni via email; in caso di problemi contattare personalmente il docente prima della chiusura delle prenotazioni. La prenotazione alla prova orale è già aperta per eventuali esonerati.
05/09
Avviso Importante.
Su delibera del S.A., a partire dall'8/9 p.v. la procedura di verbalizzazione subirà alcune variazioni: la pubblicazione del voto sarà immediata, con possibilità di accettare o rifiutare il voto entro la scadenza (3-7gg). L'opzione sarà esplicita con il rifiuto come default.
StrumentiMateriale del CorsoSi prega di non utilizzare per lo studio e la preparazione agli esami altro materiale se non i testi di seguito indicati. Materiale non verificato dal docente è vivamente sconsigliato
Programma e Testi
Programma 2014 [cfr. argomenti trattati sul Diario a fianco]
AA precedenti: 2013, 2012 Testi adottati / consigliati(i principali sono disponibili in biblioteca)Linguaggi di programmazione
Linguaggi Formalilimitatamente agli argomenti: ling. formali, ling. regolari e liberi, macchine per il loro riconoscimento (automi)
Compilatori
EsercitazioniTraccia: Data la grammatica di un (frammento di un) linguaggio di programmazione, mediante strumenti automatici (JavaCC), realizzare in linguaggio Java un programma che implementi: uno scanner per un linguaggio di programmazione di cui viene documentato formalmente il vocabolario; un parser ricorsivo discendente per un frammento di linguaggio di programmazione.
Le esercitazioni svolte per la parte di laboratorio vanno documentate:
eventuali assunzioni fatte, grammatiche EBNF,
specifiche JavaCC e test di esecuzione (specie i casi di errore).
Ogni gruppo (preferibilmente di 3 studenti)
dovrà produrre una soluzione originale del problema. A tal fine può essere utile registrare il proprio parser sul wiki. EsamiBacheca Appelli presso la segreteria Esse3 (colonna a destra, sezione Esami) NB non ci sono propedeuticità ma l'esame è propedeutico ad altri esami del II anno (vedere sezione relativa nel manifesto sul sito del corso) Modalità d'esame
Documenti
PrenotazioniAttraverso l'area studenti della segreteria Esse3
NB
Si prega di fare un uso corretto della comunicazione via email; in particolare:
|
Diario
FINE CORSO
06/06 II prova in itinere [rinviata su richiesta degli studenti] 29/05 Paradigma Funzionale Computazione senza stato: espressioni e funzioni, ricorsione, riduzione, fondamenti, semantica. Valutazione: valori, sostituzione senza cattura, strategie (per valore, per nome, lazy). Programmazione: Ambiente Locale, interattività, tipi, pattern matching, oggetti infiniti, aspetti imperativi 28/05 Paradigma Object-Oriented: Polimorfismo e tipi generici Polimorfismo di sottotipo, generici in JAVA, Segnaposto ? (wildcard). Sottotipi: generici e array. Overriding covariante e controvariante. Supertipi e viste 26/05 Paradigma Object-Oriented: Nozioni fondamentali: incapsulamento, oggetti, classi, delega, ereditarietà, sottotipi, selezione dinamica dei metodi.
22/05
Strutture dati
Equivalenza e compatibilità. Conversione: coercizione e cast. Polimorfismo: ad hoc, universale. di sottotipo. Tecniche per gestire dangling reference e garbage collection. 21/05 Strutture dati: tipi e sistemi di tipo: controlli. Tipi semplici: scalari, ordinali, enumerativi e intervallo. Tipi strutturati: Record/struct: varianti, union. Array. Insiemi. Puntatori. Tipi ricorsivi. 19/05 Astrazione sul controllo: astrazione funzionale: sottoprogrammi e modalità di passaggio parametri: per valore, riferimento, costante, risultato, valore-risultato, nome. Funzioni come parametri o valori di ritorno. Eccezioni. 16/05 JavaCC: analisi sintattica.. Regole di produzione. Dalla ricorsione all'iterazione. Punti di scelta. Lookahead globale, locale, sintattico, semantico Problemi. Esempi 14/05 Strutture di controllo: espressioni e loro valutazione. Notazioni: infissa, polacca, polacca inversa. Variabili. Comandi: effetti collaterali. Comandi per il flusso di controllo. Composizione. Salti. Condizionali. Iterazioni. Ricorsione. Ricorsione in coda.
12/05 Gestione della memoria: statica e dinamica. RDA per blocchi e sottoprogrammi. Liste libere singole e multiple. Implementazione: strutture dati per la gestione della mem. in regime di scope statico e dinamico.
07/05
Analisi sintattica:
Parsing ricorsivo discendente:
passaggio dalla grammatica al codice senza/con gestione degli errori. 05/05 Analisi sintattica: Introduzione ai metodi di parsing. Gestione errori. Analisi discendente (depth-first e breadth-first). Analisi deterministica predittiva. Lookahead. Grammatiche LL(k). Parsing discendente guidato da tabella. Insiemi FIRST e FOLLOW con grammatiche (strong) LL(1). Fattorizzazione ed eliminazione della ricorsione sinistra. 30/04 Linguaggi liberi: Altre prop. di chiusura. Automi a pila (PDA). Condizioni di accettazione. Esempi di PDA. Equivalenza tra ling. liberi e riconosciuti da PDA. Forme normali delle grammatiche libere (CNF, NLR, GNF). Predicati decidibili. Algoritmo CYK 28/04 Linguaggi liberi: Alberi di Derivazione e Derivazioni Canoniche. Ambiguità. Principio di sostituzione. Pumping Lemma per Linguaggi Liberi. Esercizi. Proprietà di Chiusura rispetto all’Unione, Prodotto, Iterazione. Altre Proprietà di Chiusura. 23/04 I prova in itinere 10/04 Esercizi con JavaCC: costruzione di semplici token manager 09/04 JavaCC: analisi lessicale: Stati lessicali. Azioni. Esempi di utilizzo del token manager (e debug). Regole SPECIAL_TOKEN e MORE. 07/04 Nomi e Ambiente: Binding, ambienti, blocchi, visibilità (scope). Scope statico e dinamico. 03/04 Esercizi con JavaCC: costruzione di semplici token manager 02/04 JavaCC: introduzione e analisi lessicale: token, espressioni regolari estese, file di specifica e file in output. Token manager senza parser [javacc A.Lex.]
31/03
Linguaggi e loro traduzione: struttura dei compilatori Analisi lessicale introduzione, token, gestione errori. implementazione.
27/04 Proprietà dei linguaggi regolari:
Predicatati decidibili. Teorema di Myhill-Nerode (enunciato). 20/04 Proprietà dei linguaggi regolari: Pumping Lemma per i ling. regolari. Algoritmi per la chiusura rispetto a: unione, prodotto, iterazione, complemento, intersezione. Altre prop. di chiusura 17/03 Linguaggi regolari: Teorema di Kleene. Algoritmi di trasformazione: grammatiche -- automi -- espr. regolari. Esercizi 13/03 Linguaggi regolari: Automi a stati finiti deterministici e non. Riconoscimento di stringhe. Linguaggio accettato. Classe dei ling. a stati finiti deterministici e non deterministici. Esempi. Teorema di equivalenza tra classi di linguaggi a stati finiti deterministici e non. Espressioni regolari e linguaggi regolari.
12/03
Introduzione ai linguaggi formali:
Gerarchia di Chomsky: tipi di grammatiche e linguaggi. Teorema della gerarchia. Automi: schema, transizioni, computazioni. Determinismo. Tipologie. 10/03 Introduzione ai linguaggi formali: Alfabeti e stringhe: prodotto, potenze e chiusure. Linguaggi formali e operazioni relative. Grammatiche generative: derivazioni, linguaggio generato.
03/03
Semantica operazionale (+ esempi) [approf. 2.1; blocco slide]
26/02 Descrizione dei ling. di programmazione: introduzione, grammatiche, EBNF, frasi, derivazione, alberi di derivazione, ambiguità. Compilazione: fasi.
24/02 Organizzazione del corso
—=< INIZIO CORSO >=—
|