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 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]) 10 15 6 31 11
Esame: organizzazione 30-40 min 2-2,5 h lab, Java lab, C <=1h 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 calcolatore studio 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 nome.cognome@unife.it Telefono 0532-97-4894 E inoltre... Tutor per il laboratorio: Tommaso Berlose nome.cognome@student.unife.it Giuseppe Cota nome.cognome@unife.it 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. Argomenti del main. 19
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