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