Università degli Studi di Ferrara
Dipartimento di Ingegneria
Fondamenti di Informatica
modulo B
Corso di Laurea triennale
in Ingegneria Elettronica e Informatica
Prof. Evelina Lamma
Anno Accademico 2015-16
1
OBIETTIVI (modulo B)
•  Approfondire l’uso del linguaggio C rispetto a quanto
noto dal modulo A (propedeutico)
•  Presentare le principali strutture di dato utilizzate per
applicazioni informatiche e gli algoritmi associati
(discutendone la complessità)
•  Introdurre il concetto di componente software (modulo,
tipo di dato astratto, classe e oggetto)
•  Presentare i principi della programmazione a oggetti e il
linguaggio Java
•  Sperimentare librerie di componenti Java per le strutture
di dato (JCF)
2
Chi ha superato il parziale modulo A?
3
OBIETTIVO: COMPLETARE
L’ESAME A GIUGNO-LUGLIO
4
E’ NOSTRO OBIETTIVO CHE
ACQUISIATE CFU!
•  Fondamenti di Informatica
vale 12 CFU
•  Lezioni e ricevimento
•  Tutorato (esercizi, passo
passo)
5
LEZIONI e RICEVIMENTO
•  Mercoledì, h. 11-13.30 Aula 1 (o Lab)
•  Giovedì, h. 11-13.30 Aula 1 (o Lab)
alcune lezioni si terranno in Laboratorio di
Informatica Grande (vedi orario lezioni,
settimanalmente)
•  Ricevimento, nel II semestre:
–  Mercoledì, h. 14-15 (altri giorni e orari su
appuntamento)
–  Dip. di Ingegneria, III piano – tel. interno 4894
6
SITO DEL MODULO B
http://www.unife.it/ing/informazione/fond-info-modulo-b"
Riferimento per:
•  materiale didattico (lucidi delle lezioni, esercizi,
programmi svolti)
•  struttura e modalità d’esame
•  testi dei compiti d’esame e loro soluzione
•  Per lezioni che si svolgeranno in Laboratorio, si
veda sito orario lezioni, settimanalmente
7
TUTORATO
•  Attività di esercitazione assistita da
tutore
•  Esercizi proposti a lezione e risolti
individualmente, con il supporto dei
tutori
•  Due turni, almeno per le prime due
sedute Giovedì 3 e 10 Marzo,
•  Iscriversi a una delle liste
create come appelli in data
3 Marzo, nel turno preferito
(h. 11 oppure h. 12.45),
entro oggi!!!!
Grazie!
8
TUTOR
•  Studente iscritto alla LM Ingegneria
Informatica e dell’Automazione
•  Studente iscritto al Dottorato di
Ricerca in Scienze dell’Ingegneria
Partecipate!
•  Supporto in aula, per le lezioni in
Laboratorio
9
ESAME
•  In due parti (A e B separati), alla fine di ogni
modulo
•  Voto finale = media delle prove parziali
•  Solo per chi ha già superato il parziale modulo A
(vi esortiamo a superare la parte B entro il 2015!)
•  In un'unica parte (A+B), alla fine di tutto il corso
10
ESAME – parziale B [o A+B]
•  Una prova Java di programmazione in laboratorio
•  Scrittura di un semplice programma in linguaggio Java
10
•  Occorre dimostrare di saper effettivamente produrre un
programma eseguibile
•  Una prova C (in laboratorio)
•  Sintesi di un programma C che verte sulle strutture dati
(liste, alberi, tavole), compilato ed eseguito correttamente
[A+B ha una funzione in più, solitamente su vettori che
vale 20 punti su 31 della parte A, 10 punti su 30 la teoria
scritta]
•  Una prova di teoria (scritta)
•  Esercizi (teoria della parte B: analisi di complessità,
risposte a domande aperte su OOP e Java, [+ teoria della
parte A se non già superato il parziale])
15
6
___
31 11
Esame: organizzazione
30-40
min
2-2,5 h
<=1h
lab, Java
lab, C
scritto, teoria
E’ facoltativo richiedere un esame orale
Non è possibile consultare appunti o testi durante le prove
(sia scritte sia pratiche).
13
APPELLI D’ESAME
•  Date e liste d’esame pubblicate prossimamente
sul portale:
http://studiare.unife.it
•  16 Giugno 2016
•  Altre due date a Luglio 2016 (date indicative: 7 e
21 Luglio)
•  Ore 9 prova pratica in Lab. di Informatica, a
seguire prova C (e scritto nel pomeriggio)
14
Prova in itinere
•  Solo per chi segue in questo A.A. e ha già
superato il modulo A a Gennaio 2016, c’è
la possibilità di sostenere una prova parziale
in itinire
•  In Laboratorio il 26 Aprile, h. 8.30
•  Programmazione C su strutture dati, e
domanda su complessità
•  L’esame (parte Java) va completato entro
Luglio 2016! Questo è tassativo e non
derogabile.
15
PREREQUISITI...
•  Modulo A (almeno studiato
e assimilato se non
superato il parziale …)
•  per affrontare e superare
l’esame è indispensabile
fare costantemente esercizi
al calcolatore
Esercizi al
studio
calcolatore
LABORATORIO/TUTORATO
•  Attività di esercitazione assistita da tutore
•  Attività di esercitazione libera
16
INFORMAZIONI UTILI
•  Orario di Ricevimento
•  Mercoledì h. 14-15 c/o Dipartimento di Ingegneria, III piano (blu)
ufficio 324.
•  Posta elettronica
[email protected]
•  Telefono 0532-97-4894
•  E inoltre...
•  Tutor per il laboratorio:
•  Tommaso Berlose
•  Giuseppe Cota
[email protected]
[email protected]
17
Modulo A - recap
•  Architettura dei sistemi di elaborazione.
–  Struttura generale di un calcolatore elettronico, macchina di Von
Neumann.
•  Software di base per sistemi di elaborazione: il sistema operativo.
–  Il sistema operativo Window, il file system.
•  Metodi per l'analisi di un problema.
–  Algoritmi e programmi.
•  I linguaggi di programmazione e cenni alla loro evoluzione.
–  Ambienti di programmazione: editor, debugger, compilatori ed
interpreti; fasi di sviluppo di un programma. Sviluppo top-down e
bottom-up.
18
Modulo A – recap (2)
•  Il linguaggio C.
–  Alfabeto e sintassi del C, Tipi di dato primitivi in C, Tipi di dato scalari e
strutturati (array e struct).
–  Espressioni.
–  Dichiarazione di costanti, variabili e loro tipo.
–  Istruzioni di assegnamento e di ingresso/uscita, composte, condizionali
e cicli.
–  Funzioni e procedure, record di attivazione. Ricorsione e ricorsione
tail
–  Tecniche di passaggio dei parametri, Regole di visibilità e tempo di vita.
–  Librerie standard.
–  Gestione di file binari e di testo.
–  Il preprocessore C, il linker.
–  Progetti su più file.
19
–  Argomenti del main.
PROGRAMMA DEL MODULO B
• Algoritmi e strutture di dati:
–  Cenni sulle tecniche per la gestione di tabelle, liste,
alberi e loro realizzazione in C. Algoritmi di ricerca su
tali strutture dati. Complessità degli algoritmi (applicata
alle strutture dato presentate e agli algoritmi per esse).
Algoritmi di ordinamento.
•  Approfondimenti sul linguaggio C:
–  Funzioni come parametri. Variabili statiche. Altri
costrutti C: switch case. Programmazione “modulare”
in C. File header e file implementazione.
20
PROGRAMMA DEL MODULO B
• 
La programmazione a oggetti e il linguaggio
Java:
–  Il concetto di componente software. Progettare per
astrazioni. Incapsulamento e protezione. Classi ed
ereditarietà.
–  Il linguaggio Java: classe, costruzione e distruzione di
oggetti, oggetti semplici e oggetti composti. Package e
Package di I/O. Ereditarietà, Classi Astratte, Interfacce.
Eccezioni. Le librerie grafiche AWT e Swing.
Realizzazione di Applet. Java e la rete. Strutture dati in
Java: la Java Collections Framework (JCF).
21
Testi e materiale consigliato
• 
Per la parte sul linguaggio C:
–  Copie dei lucidi mostrati a lezione (sono scaricabili dal
sito del corso)
–  A. Ciampolini, E. Lamma. Esercizi di programmazione
– Linguaggio C, Progetto Leonardo, 1999.
–  C. Demetrescu, I. Finocchi, G.F. Italiano, Algoritmi e
strutture dati, McGraw-Hill, 2008
–  S. Ceri, D. Mandrioli, L. Sbattella, Informatica
Programmazione, McGraw-Hill, 2° edizione (Cap 10)
–  Qualsiasi testo su C e strutture dati
22
Testi e materiale consigliato
• 
Per la parte sul linguaggio Java, qualsiasi testo
introduttivo a tale linguaggio, tra questi
segnaliamo:
–  Cay S. di Horstmann, Concetti di informatica e
fondamenti di Java - 4a ed., Apogeo, Milano.
–  H. M. Deitel, P. J. Deitel. Java Fondamenti di
Programmazione, 3a ed., Apogeo, Milano.
–  J. Lewis,W. Loftus, Java - Fondamenti di
progettazione software, Pearson, 2001.
23
Risorse per la programmazione
•  Ambienti di programmazione utilizzati nel
corso disponibili in Laboratorio di Informatica:
–  MS VisualStudio
–  Eclipse
24
For foreign students
•  It is possible to give the exam in English,
provided that I am asked 1 week in advance
•  If you have problems with Italian, you may
consider buying a textbook for Java in your
own language
25