FONDAMENTI DI INFORMATICA

Insegnamento
FONDAMENTI DI INFORMATICA
Insegnamento in inglese
FOUNDATION OF COMPUTER SCIENCE
Settore disciplinare
ING-INF/05
Corso di studi di riferimento
INGEGNERIA DELL'INFORMAZIONE
Tipo corso di studio
Laurea
Crediti
7.0
Ripartizione oraria
Ore Attività frontale: 63.0
Anno accademico
2017/2018
Anno di erogazione
2017/2018
Anno di corso
1
Lingua
ITALIANO
Percorso
PERCORSO COMUNE
Docenti responsabili dell'erogazione
BOCHICCHIO Mario Alessandro
EPICOCO Italo
Sede
Lecce

Descrizione dell'insegnamento

Nessuno

Nell'ambito del corso di Fondamenti di Informatica tenuto dal prof. Italo Epicoco, erogo un modulo didattico relativo ai principi della modellazione concettuale di sistemi software e dell'ingegneria dei dati. Il modulo include 3 lezioni:

1. Ingegneria e modellazione concettuale, logica e fisica di sistemi informatici

2. introduzione alle principali strutture dati

3. database relazionali e non relazionali: introduzione

I corsisti impareranno a leggere e tracciare semplici diagrammi UML ed Entity-Relationship. Impareranno inoltre a riconoscere le principali strutture dati in linguaggio C.

Lezioni frontali ed esercizi.

Come specificato dal prof. Epicoco per il corso di Fondamenti di Informatica

Ricevimento studenti: martedì e giovedì pm. 14.30-16.30 o su appuntamento da fissare via mail.

Fare riferimento al programma del corso del prof. Italo Epicoco.

Materiale didattico distribuito a lezione.

Non vi è alcuna propedeuticità.

Per l'analisi della complessità computazionele degli algoritmi sono richieste conoscenze di analisi matematica quali:
- studio di funzioni e analisi asintotica,
- serie numeriche.

Il corso mira a fornire sia elementi di teoria dell’informatica che i principi e le basi per la programmazione. Partendo dal concetto di macchina programmabile in grado di svolgere operazioni seguendo una sequenza codificata di istruzioni elementari si passa alla strutturazione di un algoritmo e quindi alla competenze che permettono di scomporre un problema “complesso” per la macchina in una sequenza di operazioni “elementari”. Durante il corso verranno inoltre studiati gli algoritmi di ordinamento e di ricerca più noti con l’obiettivo di illustrare come differenti scelte nella risoluzione di uno stesso problema possano incidere sull’efficienza di un algoritmo e sui tempi di esecuzione al calcolatore.

Strutturare i dati in modo opportuno è uno dei principali fattori che influenzano l’efficienza di un algoritmo. Durante il corso si studieranno le strutture dati base quali le liste e gli alberi. Infine il corso fornirà gli strumenti per lo sviluppo di applicazioni attraverso ambienti di programmazione integrati IDE utilizzando il linguaggio C e alcuni cenni sull’analisi della complessità computazionale degli algoritmi.

I risultati attesi di apprendimento prevedono che al termine del corso gli studenti siano in grado di:

1) illustrare le principali caratteristiche dell’architettura di un calcolatore;
2) comprendere le metodologie di rappresentazione e codifica dell’informazione;
3) progettare e implementare un algoritmo;
4) riconoscere ed applicare gli elementi caratterizzanti un linguaggio di programmazione procedurale strutturato (tipi dato, strutture di controllo, funzioni e procedure, gestione dei file e strutture dinamiche);
5) riconoscere le principali strutture dati dinamiche (liste, code, alberi) e i principali algoritmi di oridnamento e di ricerca;
6) effettuare l'analisi della complessità computazionale di un algoritmo;
7) analizzare, interpretare, comprendere e produrre listati di codice in linguaggio C utilizzando degli appositi ambienti di programmazione (IDE).

Le lezioni teoriche si svolgeranno in aula utilizzando slide con esempi alla lavagna. Le esercitazioni si svolgeranno in laboratorio informatico con esercizi svolti direttamente al computer inerenti la programmazione in linguaggio C.

Le slide del corso saranno disponibili sulla piattaforma moodle all'indirizzo: http://sara.unisalento.it/moodle
Utilizzare l'accesso "come ospite" e password "fondainfo"

L’esame è composto da una prova scritta durante la quale si verificheranno le capacità acquisite nella progettazione di un algoritmo, nel riconoscimento delle principali strutture dati e degli algoritmi di base visti a lezione e nell'analisi della complessità computazionale di un algoritmo oltre agli aspetti teorici affrontati nel corso. Durante la prova scritta non sarà consentito l’uso di manuali nè altro materiale di supporto.

Oltre alla prova scritta ci sarà una prova orale e di programmazione alla quale si accede solo dopo aver superato la prova scritta. Durante la prova di programmazione verrà valutata la capacità pratica nello sviluppare un semplice programma eseguibile al calcolatore in linguaggio C. La prova di programmazione dura 1 ora, il programma realizzato durante la prova di programmazione verra’ quindi discusso appena terminata la prova. Durante la prova di programmazione si può usare il proprio computer e tutti i manuali e le fonti online utili a risolvere l’esercizio assegnato.

- Macchina di Turing, architettura di Von Neumann, concetto di algoritmo, macchina astratta (4 ore)
- Rapresentazione delle informazioni (10 ore)
- Strutturare un algoritmo (6 ore)
- Costrutti del linguaggio C, variabili e tipi di dato, funzioni, array puntatori e gestione dinamica della memoria (12 ore)
- Funzioni ricorsive (2 ore)
- Tipi di dato astratto: Pila, Coda, Lista (8 ore)
- Cenni su analisi della complessità computazionale (4 ore)
- Algoritmi di ordinamento: insertion sort, selection sort, bubble sort, merge sort, quick sort (8 ore)
- Algoritmi di ricerca: ricerca sequenziale, ricerca dicotomica (4 ore)
- Alberi binari di ricerca (2 ore)
- Alberi Heap (3 ore)

Semestre
Secondo Semestre (dal 01/03/2018 al 01/06/2018)

Tipo esame
Obbligatorio

Valutazione
Orale - Voto Finale

Orario dell'insegnamento
https://easyroom.unisalento.it/Orario

Scarica scheda insegnamento (Apre una nuova finestra)