Il 0% ha trovato utile questo documento (0 voti)
83 visualizzazioni5 pagine

Linguaggi Di Programmazione A INFBa

Caricato da

francesco
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
83 visualizzazioni5 pagine

Linguaggi Di Programmazione A INFBa

Caricato da

francesco
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 5

Principali informazioni

sull’insegnamento
Titolo insegnamento Linguaggi di Programmazione
Corso di studio Informatica triennale (L31) – sede di Bari
Crediti formativi 9
Denominazione inglese Programming Languages
Obbligo di frequenza No, ma la frequenza è fortemente consigliata
Lingua di erogazione Italiano

Docente responsabile Nome Cognome Indirizzo Mail


Giovanni Semeraro [email protected]
Luogo ed Orario di Ricevimento Ufficio 757 Martedì: 16:00-19:00
Dipartimento di
Informatica
Campus
Universitario
Via E. Orabona 4
70126 Bari

Dettaglio crediti formativi Ambito disciplinare SSD Crediti


Informatico INF/01 9

Modalità di erogazione
Periodo di erogazione Secondo semestre
Anno di corso Primo
Modalità di erogazione Lezioni frontali
Esercitazioni in aula

Organizzazione della didattica


Ore totali 225
Ore di corso 86
Ore di studio individuale 139

Calendario
Inizio attività didattiche 24/02/2020
Fine attività didattiche 29/05/2020

Syllabus
Prerequisiti Propedeuticità formali: nessuna
Propedeuticità culturali: programmazione (molto importante),
matematica discreta (molto importante)
Risultati di apprendimento previsti  Conoscenza e capacità di comprensione
(declinare rispetto ai Descrittori di Lo studente sarà in grado di comprendere:
Dublino) (si raccomanda che siano - l’associazione tra problemi, linguaggi formali e
coerenti con i risultati di apprendimento linguaggi di programmazione;
del CdS, compreso i risultati di - la relazione tra linguaggi formali e linguaggi di
apprendimento trasversali) programmazione;
- le tecniche di analisi e traduzione dei linguaggi di
programmazione;
- i fondamenti teorici alla base delle componenti di
analisi e traduzione dei linguaggi di programmazione
(analizzatore lessicale o scanner, analizzatore
sintattico o parser).
 Conoscenza e capacità di comprensione applicate
Lo studente sarà in grado di:
- classificare un linguaggio formale nella gerarchia di
Chomsky;
- generare, descrivere e riconoscere meccanicamente
un linguaggio formale.
 Autonomia di giudizio
Lo studente sarà in grado di:
- valutare la correttezza della sintassi di un linguaggio di
programmazione;
- comprendere la natura dei messaggi di errore
prodotti dalle componenti di analisi e traduzione dei
linguaggi di programmazione (analizzatore lessicale o
scanner, analizzatore sintattico o parser).
 Abilità comunicative
Lo studente sarà in grado di:
- descrivere la semantica denotazionale di un linguaggio
formale;
- generare un linguaggio formale attraverso opportune
regole (sintassi);
- costruire macchine (automi) per il riconoscimento di
un linguaggio formale.
 Capacità di apprendere
- Lo studente apprenderà la capacità di descrivere
formalmente sintassi e semantica di linguaggi di
programmazione.
Contenuti di insegnamento 1. Introduzione ai linguaggi di programmazione ed ai
linguaggi formali:
Problemi, Macchine di Turing, cenni a calcolabilità
e linguaggi di programmazione. Interpretazione e
compilazione. Gerarchia di linguaggi di
programmazione e di macchine astratte. Aree di
ricerca dell'informatica teorica, panoramica su e
relazioni tra sintassi e semantica, alberi di
derivazione. Regole di produzione, esempi di
linguaggi formali.
Ore lezione frontale: 11
2. Grammatiche generative:
Linguaggi formali e monoidi liberi generati da un
insieme. Generazione e riconoscimento di
linguaggi formali. Grammatiche generative.
Esempi di grammatiche generative. Derivazioni.
Correttezza di una grammatica.
Ore lezione frontale: 11
Ore esercitazione in aula: 1
3. Linguaggi liberi da contesto e linguaggi dipendenti
da contesto:
Definizione ed esempi di linguaggi liberi da
contesto. Definizione ed esempi di linguaggi
dipendenti da contesto. Grammatiche e linguaggi
monotoni. Relazione tra le classi di linguaggi liberi
da contesto, dipendenti da contesto e monotoni.
Ore lezione frontale: 3
Ore esercitazione in aula: 1
4. Linguaggi liberi da contesto:
Alberi di derivazione. Principio di sostituzione di
sottoalberi. Pumping lemma per i linguaggi liberi
da contesto. Ambiguità di grammatiche e
linguaggi.
Ore lezione frontale: 8
Ore esercitazione in aula: 10 (comprensive di ore
per la preparazione e revisione della prova in
itinere)
5. Grammatiche e macchine:
Classificazione delle grammatiche secondo
Chomsky. Teorema della Gerarchia di Chomsky.
Lemma della stringa vuota. Operazioni sui
linguaggi e proprietà di chiusura delle classi di
linguaggi rispetto alle operazioni.
Ore lezione frontale: 11
Ore esercitazione in aula: 6
6. Automi:
Automi a stati finiti deterministici e non
deterministici. Linguaggi a stati finiti.
Ore lezione frontale: 3
Ore esercitazione in aula: 3
7. Linguaggi regolari ed espressioni regolari:
Definizioni e proprietà delle espressioni regolari.
Teorema di Kleene. Pumping lemma per i
linguaggi regolari.
Ore lezione frontale: 5
Ore esercitazione in aula: 9 (comprensive di ore
per la preparazione alla prova scritta finale)
8. Modello del compilatore:
Analizzatore lessicale o scanner, analizzatore
sintattico o parser, analizzatore semantico,
generazione e ottimizzazione del codice. Linking e
loading. Tabella dei simboli.
Ore lezione frontale: 2
9. Linguaggi di programmazione:
Sintassi e semantica di un linguaggio di
programmazione. Cenni all’evoluzione dei
linguaggi di programmazione. Cenni ai paradigmi
di programmazione.
Ore lezione frontale: 2

Programma
Testi di riferimento 1) G. Semeraro, Elementi di teoria dei linguaggi formali,
ilmiolibro.it (2017),
http://ilmiolibro.kataweb.it/libro/informatica-e-
internet/317883/elementi-di-teoria-dei-linguaggi-formali/
2) M. Gabbrielli, S. Martini, Linguaggi di Programmazione,
Principi e paradigmi. 2/ed., McGraw-Hill (2011).
Note ai testi di riferimento Le trasparenze mostrate a lezione, dispense integrative e
tracce di esempio delle prove d’esame sono rese disponibili
nella piattaforma di e-learning del Dipartimento di
Informatica:
https://elearning.di.uniba.it/
Metodi didattici Lezioni frontali: 56 ore
Esercitazioni in aula: 30 ore
Metodi di valutazione (indicare almeno la 1) Appelli d'esame (al termine dell'insegnamento) -
tipologia scritto, orale, altro) L'esame consta di una prova scritta articolata come
segue: esecuzione di esercizi sulla teoria dei linguaggi
formali, enunciazione di definizioni, dimostrazione di
teoremi della teoria dei linguaggi formali, quesiti su
linguaggi di programmazione e compilatori. La durata
della prova varia in base alla tipologia dei quesiti da
risolvere, non superando comunque i 90 minuti.
Durante la prova è ammessa esclusivamente la
consultazione di: tavola relativa alle proprietà di
chiusura dei linguaggi; elenco delle proprietà delle
espressioni regolari.
2) Prova intermedia (durante lo svolgimento
dell'insegnamento) - E' prevista una prova scritta
intermedia, articolata su una specifica parte del
programma indicata dal docente prima
dell’interruzione delle lezioni prevista da calendario
accademico. Il superamento della prova intermedia
esonera lo studente dallo svolgimento di una parte
della prova d’esame, purché essa sia sostenuta nel
primo appello di giugno.
Criteri di valutazione (per ogni risultato di Nella prova scritta lo studente dovrà dimostrare di aver
apprendimento atteso su indicato, acquisito la capacità di:
descrivere cosa ci si aspetta lo studente - classificare un linguaggio formale nella gerarchia di
Chomsky, mediante la costruzione di una
conosca o sia in grado di fare e a quale dimostrazione formale;
livello al fine di dimostrare che un risultato - generare, descrivere e riconoscere un linguaggio
di apprendimento è stato raggiunto e a formale, mediante la costruzione di grammatiche
quale livello) generative, la definizione di espressioni regolari, la
progettazione di opportune macchine (automi).
- descrivere le tecniche di analisi e traduzione dei
linguaggi di programmazione.
La valutazione della prova è espressa in trentesimi. La prova
intermedia è superata con un minimo di 16/30, conseguito
svolgendo correttamente almeno uno dei quesiti posti. La
prova d’appello è superata con un minimo di 18/30. Per gli
studenti non esonerati, il voto finale d’esame è quello
riportato nella prova scritta d’appello. Per gli studenti
esonerati il voto finale d’esame è la media delle valutazioni
riportate nella prova intermedia ed in quella del primo appello
di giugno.
La determinazione del voto tiene conto dei seguenti aspetti:
1) correttezza della soluzione o della dimostrazione
formale proposta;
2) completezza della soluzione o della dimostrazione
formale proposta;
3) logica seguita dallo studente nel proporre la soluzione
o dimostrazione formale;
4) utilizzo di un adeguato formalismo per la descrizione
della soluzione o della dimostrazione proposta.
Per superare la prova d’esame o la prova intermedia, lo
studente deve essere in grado di proporre una soluzione che
soddisfi almeno l’aspetto 1). I voti superiori al minimo
vengono attribuiti agli studenti la cui soluzione soddisfi anche
gli altri aspetti.
Altro Si consiglia fortemente la partecipazione alle lezioni di
esercitazione, che prevedono lo svolgimento in aula di
esercizi tratti da precedenti prove d’esame. Per gli studenti
non frequentanti, si suggerisce di svolgere gli esercizi di
preparazione alla prova d’esame messi a disposizione dal
docente nella piattaforma di e-learning e di utilizzare lo
strumento del ricevimento per verificare la correttezza delle
soluzioni proposte.

Potrebbero piacerti anche