FONDAMENTI DI INFORMATICA I

Insegnamento
FONDAMENTI DI INFORMATICA I
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
6.0
Ripartizione oraria
Ore Attività Frontale: 54.0
Anno accademico
2019/2020
Anno di erogazione
2019/2020
Anno di corso
1
Lingua
ITALIANO
Percorso
PERCORSO COMUNE
Docente responsabile dell'erogazione
EPICOCO Italo
Sede
Lecce

Descrizione dell'insegnamento

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. 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.

Conoscenze e comprensione
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).

Capacità di applicare conoscenze e comprensione
Gli studenti saranno in grado di applicare le conoscenze acquisite in diversi ambiti appicativi ed in generale per la risoluzione al computer di processi e sistemi. 

Autonomia di giudizio
Il corso favorisce l'autonomia di giudizio degli studenti attraverso l'analisi critica di problemi computazionali per i quali trovare soluzioni software in grado di risolverlo. Diverse soluzioni proposte dagli studenti sono poste a confronto e valutate criticamente dagli studenti stessi.

Abilità comunicative
È fondamentale che gli studenti siano in grado di comunicare con un pubblico vario e composito, non omogeneo culturalmente, in modo chiaro, logico ed efficace, utilizzando gli strumenti metodologici acquisiti e le loro conoscenze scientifiche e, in particolar modo, il lessico di specialità.
Il corso favorisce lo sviluppo delle abilità inerenti le capacità di esporre in termini precisi e formali le proprietà e le caratteristiche di aloritmi; le analisi su complessità computazionali di codice sorgente in linguaggio C; descrizione di possibili soluzioni algoritmiche a problemi reali.

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/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.

 

Sessione straordinaria Marzo 2020 - Esame On-Line

Solo per la sessione straordinaria di Marzo 2020 l'esame si svolera' online secondo le modalita' di seguito descritte:

 

Connessione
-----------
Per sostenere l'esame e' necessario collegarsi al Team appositamente creato per l'esame attraverso il seguente link

https://teams.microsoft.com/l/team/19%3adc47a9aec5154b69b3c984f5f32f6236@thread.tacv2/conversations?groupId=f6a6a806-3539-4462-a204-be5c73c34752&tenantId=8d49eb30-429e-4944-8349-dee009bdd7da

il Team e' aperto al pubblico e quindi tutti coloro che hanno il link potranno assistere all'esame.

All'orario prestabilito per l'esame si procede con l'appello degli studenti candidati (solo coloro che sono prenotati sul sistema ESSE3 potranno sostenere l'esame) nel seguente modo: il presidente della commissione contatterà' ad uno ad uno in una chiamata privata i singoli candidati che dovranno attivare microfono e telecamera, ed esibire documento di riconoscimento davanti alla telecamera. In caso di non riconoscimento del volto, l’esame non avrà luogo.

Dopo il riconoscimento si interrompe la chiamata privata e si procede con l'esame all'interno del Team e quindi alla "presenza" di tutti coloro che sono collegati.

Durante tutto lo svolgimento dell'esame e' richiesto che la telecamera e il microfono dei candidati restino sempre attivi, mentre coloro che assistono all'esame dovranno disabilitare microfono e telecamera.

Alla fine della seduta d’esame il docente comunicherà, sempre in chiamata privata, come nel caso del riconoscimento, il voto al candidato e procederà regolarmente con la verbalizzazione online.

NON E' ASSOLUTAMENTE CONSENTITA LA REGISTRAZIONE DELL'ESAME IN NESSUN MOMENTO.

Argomenti e svolgimento dell'esame
----------------------------------
L'esame si svolgerà' alla stessa stregua della prova pratica svolta in laboratorio, i candidati si dovranno collegare con un browser web al link, che verra' comunicato dal docente durante l'esame, dal quale scaricare la traccia di programmazione. Si ha a disposizione un'ora di tempo per realizzare un programma scritto in c che risponda al quesito della traccia. Durante tutto lo svolgimento dell'esame bisogna restare collegati al Team con videocamera e microfono attivati. La consegna del file sorgente in C avverrà' sempre attraverso la pagina web dell'esame; si procedera' quindi all'analisi degli elaborati e all'interrogazione dei candidati, uno alla volta in sessione pubblica.
 

 

Le date degli appelli d'esame sono disponibili al seguente link: calendario esami di profitto

- 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 (10 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 (6 ore)
- Algoritmi di ricerca: ricerca esaustiva, ricerca dicotomica (4 ore)

[1] B. W. Kernighan, D. M. Ritchie, “Il linguaggio C. Principi di programmazione e manuale di riferimento. Ediz. MyLab. Con Contenuto digitale per download e accesso on line”, ISBN-13: 978-8891908230
[2] Dino Mandrioli, Stefano Ceri, Licia Sbattella, Paolo Cremonesi, Gianpaolo Cugola, “Informatica: Arte e Mestiere  4° Ed.”, McGraw-Hill,, 2014. ISBN: 9788838668487.
[3] Dispense fornite dal docente all’indirizzo http://sara.unisalento.it/moodle

Semestre
Secondo Semestre (dal 02/03/2020 al 05/06/2020)

Tipo esame
Obbligatorio

Valutazione
Orale - Voto Finale

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

Scarica scheda insegnamento (Apre una nuova finestra)(Apre una nuova finestra)