INFORMATICA E COMPUTAZIONE

INFORMATICA E COMPUTAZIONE

_
iten
Codice
86755
ANNO ACCADEMICO
2020/2021
CFU
9 cfu al 2° anno di 8719 INGEGNERIA INFORMATICA (L-8) GENOVA
SETTORE SCIENTIFICO DISCIPLINARE
ING-INF/05
LINGUA
Italiano
SEDE
GENOVA (INGEGNERIA INFORMATICA )
periodo
2° Semestre
materiale didattico

PRESENTAZIONE

Il corso studia i principali modelli teorici dell'informatica (grammatiche, automi, macchine di Turing). Tale parte teorica è complementata da esercitazione in linguaggio JAVA dove vengono implementato problemi relativi agli argomenti introdotti nella parte teorica.

OBIETTIVI E CONTENUTI

OBIETTIVI FORMATIVI

Il corso introduce, nella prima parte, concetti relativi a logica proposizionale e induzione. Poi, nella seconda parte, vengono presentati i principali modelli di computazione per l'informatica: Automi, grammatiche, macchine di Turing. Parallemente a questi argomenti è svolta una parte pratica nella quale, dopo una introduzione al linguaggio JAVA, i modelli e le metodologie studiate vengono mostrati attraverso applicazioni.

OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO

Lo scopo dell'insegnamento è fornire conoscenze e competenze relative ai seguenti argomenti: 

- logica proposizionale: sintassi e semantica

- grammatiche e linguaggi

- automi a stati finiti, deterministici e non-deterministici

- macchine di Turing

- programmazione in JAVA

Nello specifico lo studente sarà in grado di:

- capire la sintassi e definite la semantica delle formule proposizionali mediante le metodologie definite a lezione

- dato un linguaggio, capire quale tipologia di grammatica/automa/macchina di Turing può riconoscerlo, e definire una   grammatica/automa/macchina di Turing che lo risconosca

- implementare in JAVA problemi relativi agli argomenti trattati nel corso, es.: (a) data una formula proposizionale, stabilire se essa è soddisfacibile o meno; (b) implementare un parser per una data grammatica che riconosce un certo linguaggio; (c) implementare dei (semplici) simulatori di automi e macchine di turing.

PREREQUISITI

Dal testo di un problema essere in grado di definire un algoritmo per la sua risoluzione. Concetti base sui linguaggi di programmazione (es. C)

Modalità didattiche

L’insegnamento si compone di lezioni di teoria, per un totale di 42 ore circa, e di una parte pratica, di 32 ore circa. Tutte le lezione saranno tenute  dai docenti titolari dell’insegnamento, possibilmente co-adiuvati da tutor per quanto riguarda le lezioni pratiche.

PROGRAMMA/CONTENUTO

Il programma del corso prevede la presentazione e discussione dei seguenti argomenti:

- Introduzione al corso

- Logica Proposizionale: Sintassi e Semantica

- Induzione Matematica: Induzione, stringhe e formule ben formate

- Grammatiche lineari, contestuali e non contestuali

- Linguaggi:

- Automi a stati finiti deterministici, non deterministici, automi a pila

- Macchine di Turing

- Programmazione in JAVA: introduzione, elementi principali, elementi propri della programmazione orientata agli oggetti

- Implementazione in JAVA di problemi relativi agli argomenti del corso

TESTI/BIBLIOGRAFIA

Tutte le slides utilizzate durante le lezioni e altro materiale didattico (es. esercizi) saranno disponibili su aul@web. In generale, gli appunti presi durante le lezioni e il materiale su aul@web sono sufficienti per la preparazione dell'esame.


I libri sotto indicati sono suggeriti come testi di appoggio:

(Teoria) L.C. Aiello, F. Pirri. Strutture, Logica, Linguaggi. Pearson / Addison Wesley editore

(Pratica) C.S. Horstmann, G. Cornell. Core JAVA 2 Volume I – Fondamenti. Pearson / Prentice Hall editore

 

 

DOCENTI E COMMISSIONI

Ricevimento: Durante il periodo del corso verrà concordato un orario di ricevimento, a secondo degli impegni didattici dei docenti e degli studenti. Ad ogni modo, è sempre possibile prendere appuntamento tramite una richiesta via e-mail.

Commissione d'esame

MARCO MARATEA (Presidente)

ALESSIO MERLO

CARMINE DODARO

LEZIONI

Modalità didattiche

L’insegnamento si compone di lezioni di teoria, per un totale di 42 ore circa, e di una parte pratica, di 32 ore circa. Tutte le lezione saranno tenute  dai docenti titolari dell’insegnamento, possibilmente co-adiuvati da tutor per quanto riguarda le lezioni pratiche.

INIZIO LEZIONI

In corrispondenza del secondo semestre.

ESAMI

Modalità d'esame

L’esame si compone di una prova scritta, una prova orale ed un progetto.

Lo scritto è sugli argomenti di “teoria” del corso, principalmente esercizi, più almeno un esercizio su JAVA (dispense NON consultabili).

L'orale è su tutti gli argomenti del corso. All'orale si accede con una valutazione positiva dello scritto, e previa consegna e verifica di correttezza di una esercitazione in JAVA.

Modalità di accertamento

I dettagli sulle modalità di preparazione per l’esame e sul grado di approfondimento di ogni argomento verranno dati nel corso delle lezioni.


L’esame scritto verificherà l’effettiva acquisizione delle conoscenze, competenze ed abilità tramite (principalmente) lo svolgimento di esercizi sugli argomenti del corso.

L'esame orale invece verificherà l’effettiva acquisizione delle conoscenze, competenze ed abilità su un più ampio spettro comprendente teoria, esercizi e la loro interazione.