Classe delle lauree in: Ingegneria dell`informazione (classe 9
Transcript
Classe delle lauree in: Ingegneria dell`informazione (classe 9
Classe delle lauree in: Ingegneria dell’informazione (classe 9) Tipo di attività formativa: Ambito disciplinare: Caratterizzante Ingegneria Informatica Corso di laurea in: Ingegneria Informatica Settore scientifico disciplinare: Sistemi di Elaborazione delle Informazioni (ING-INF/05) Tipo di insegnamento: obbligatorio Anno accademico: 2008 - 2009 CFU: 6 Codice dell’insegnamento: Titolo dell’insegnamento: Anno: Semestre: Fondamenti di informatica 2 80609 1 secondo DOCENTE: Prof. Giovanni Pascoschi ARTICOLAZIONE IN TIPOLOGIE DIDATTICHE: Il corso comprende 34 ore di lezioni teoriche, 20 ore di esercitazioni/laboratorio per un totale di 54 ore CONOSCENZE PRELIMINARI: Principi della programmazione strutturata, modellazione di algoritmi, strutture di controllo fondamentali OBIETTIVI FORMATIVI: Il corso si prefigge di fornire gli elementi fondamentali necessari per l’implementazione di programmi applicativi in C++, in particolare attraverso la programmazione orientata agli oggetti, anche con l’ausilio della progettazione UML. A tale scopo, le lezioni teoriche sono corredate da numerosi esempi di applicazioni/esercitazioni PROGRAMMA: • Tipi di dati predefiniti,variabili,costanti,stringhe in C++,operatori aritmetici/relazione/logici,istruzioni predefinite I/O e manipolatori, programmazione strutturata, verifica dell’input, strutture di ripetizione (pre, post, enumerativa), struttura di scelta multipla (4 ore) • Programmazione modulare (top-down), funzioni, visibilità delle variabili(scope rules), memorizzazione delle variabili (storage), passaggio di parametri (valore/referenza) in C++, algoritmo di swap, namespace e librerie di inclusione, funzione main (passaggio parametri), funzione inline, function overload, ricorsione (4 ore) • Esercitazione di Laboratorio 1:Visual C++2008 Express Ed.(principali funzionalità),debug di un programma, esercitazioni (2 ore) • Array, passaggio array nelle funzioni, array di caratteri, array multidimensionali, algoritmi fondamentali sugli array, strutture di dati, tabelle di dati (2 ore) • Esercitazione di laboratorio 2: algoritmi di ordinamento (per scambio,selection sort, inserimento, bubblesort, shell, quicksort),(2 ore) • Complessità computazionale (efficienza degli algoritmi,calcolo della complessità,comportamento asintotico,notaz. asintotica) (2 ore) • Puntatori, corretto uso dei puntatori (aritmetica dei puntatori), confronto tra reference e puntatori, gestione della memoria, allocazione dinamica della memoria in C++, gestione overflow memoria in C++ (2 ore) • Esercitazione di laboratorio 3: indicazioni sul debug di un programma in Visual C++, esercitazioni (2 ore) • Gestione dei file (C–like), file di testo e binari, operazioni su file con accesso sequenziale, operazioni su file con accesso diretto, file di record a lunghezza variabile (2 ore) • Esercitazione, debug di programmi in Visual C++, analisi esercizi risolti (2 ore) • Strutture di dati complesse (array di puntatori, pila, coda, lista semplicemente linkata, lista doppiamente linkata) (2 ore) • Esercitazione di laboratorio 4 , analisi progetti su pila, coda e lista semplice. Analisi e debug esercizi degli studenti (2 ore) • Astrazione, progettazione del software OOPP, classi ed oggetti in C++, membri pubblici/privati, costruttori/distruttori (2 ore) • Esercitazione, organizzazione dei file C++ (2 ore) • Operatore this, membri statici/dinamici, funzioni friend, ereditarietà, polimorfismo, funzioni virtuali (2 ore) • Esercitazione di laboratorio 5: indicazioni sul progetto d’anno,esercitazioni (2 ore) • Introduzione al linguaggio UML, cenni sul ciclo di vita dello sviluppo del software, principali diagrammi UML (2 ore) • Esercitazione di laboratorio 6: regole di passaggio da diagrammi UML a C++, caso di studio di un progetto d’anno, compilazione condizionale (2 ore) • Overloading degli operatori, templates di funzioni e classi, gestione delle eccezioni (2 ore) • Gestione dell’I/O in C++, gerarchia delle classi di I/O, classi istream/ostream, gestione dei file in C++ (accesso sequenziale e diretto), output su stampante (2 ore) • Esercitazione di laboratorio 7: file di include per i template, pila e coda tramite liste linkate (2 ore) • Libreria STL, contenitori (vector,list,map,string), iteratori, algoritmi (find, sort, ecc), ulteriori chiarimenti su funzioni virtuali (2 ore) • Esercitazione di laboratorio 8, elementi sulle interfacce grafiche, analisi di 3 progetti con Windows Forms (2 ore) • Elementi di programmazone web e linguaggi di script : il web, il linguaggio HTML, principali TAG nel linguaggio HTML, form HTML, linguaggi di script, script CGI (metodi linea di comando, get, post) (4 ore) METODI DI INSEGNAMENTO: Lezioni/Esercitazioni in aula supportate da lucidi e videoproiettore, tutoraggio in forma di assistenza individuale con supporto email. CONOSCENZE E ABILITÀ ATTESE: Acquisire competenze per affrontare la progettazione di programmi (fasi di analisi e progetto seguendo i principi della modellazione orientata agli oggetti) ed apprendimento di un linguaggio di programmazione orientato agli oggetti (C++) SUPPORTI ALLA DIDATTICA: Oltre ai testi indicati dal docente, lo studente puo’ fare riferimento al materiale didattico presente nel sito: www.primeeng.it nella sezione “materiale didattico” (slide/dispense/esercizi/risoluzione di esercizi) CONTROLLO DELL’APPRENDIMENTO E MODALITÀ D’ESAME: Prova scritta e orale (presentazione progetto d’anno su tematiche concordate con il docente). TESTI DI RIFERIMENTO PRINCIPALI: Lucidi-dispense del corso Deitel, Deitel-“C++ Corso completo di programmazione”, Apogeo 2003 Deitel, Deitel-“C++ Tecniche avanzate di programmazione”, Apogeo 2003 ULTERIORI TESTI SUGGERITI: Bjarne Stroustrup, “C++ Linguaggio, libreria standard, principi di programmazione, Pearson - Addison Wesley 2000 Main field(s) of study for the qualification: First degree course: Academic year: Information engineering Information Engineering 2008 - 2009 Type of formative activity: Discipline: Scientific Discipline Sector: ECTS Credits: Characteristic subject Information engineering Computer Science (ING-INF/05) 6 Title of subject: Code: Semester: Type of subject: Year: Foundation of Computer 2nd semester compulsory subject 1st year Science II LECTURER: Prof. Giovanni Pascoschi THEORY, NUMERICAL APPLICATIONS, LABORATORY ACTIVITY, SEMINARS, …: Total number of hours: 54. Theory: 34 hours. Programming/Laboratory applications: 20 hours. PREREQUISITES: Structured programming basic principles, algorithms modelling, basic control structures AIMS: To teach principles of OO programming in C++ and modelling by using UML. Theoretical lessons are followed by several practical applications of programming PROGRAMME: • Types of data predefined, variables, constants, strings in C++, arithmetic/relation/logical operators, pre-defined I/O instructions and manipulators, structured programming, input validation, repetition structures (pre, post, enumeration), switch (4 hours) • Modular programming (top-down), functions, visibility of variables (scope rules), storage of variables, passing of parameters (value/reference) in C++, swap algorithm, namespace and libraries, main function (passing of parameters), inline function, function overload, recursion (4 hours) • Practical training/laboratory 1:Visual C++2008 Express Ed.(main functionalities), debugging, practical training (2 hours) • Array, passing of array in function, array of char, multi-dimensional array, fundamental algorithms on array, structures of data, tables of data (2 hours) • Practical training/laboratory 2: sort algorithms (swap, selection sort, insertion, bubblesort, shell, quicksort (2 hours) • Computational complexity (algorithm efficiency, complexity calculation, asymptotic behaviour, asymptotic notation) (2 hours) • Pointer, right use of pointers (arithmetic of pointers), comparison by reference and pointers, handling of memory, dynamic allocation of memory in C++, handling of memory overflow in C++ (2 hours) • Practical training/laboratory 3: debugging of a program in Visual C++, practical training (2 hours) • File handling (C–like), text and binary files, operations on files by sequential access, operations on files by random access, files with records of variable length (2 hours) • Practical training, debugging of programs in Visual C++, analysis of solved exercises (2 hours) • Complex data structures (array of pointers, stack, queue, simple linked list, double linked list) (2 hours) • Practical training/laboratory 4:analysis of projects on stack, queue and linked list. Analysis and debug of students exercises (2 hours) • Abstraction, software design OOPP, classes and objects in C++, public/private members, constructor/destroyer (2 hours) • Practical training, file organisation in C++ (2 hours) • This operator, static/dynamic members, friend function, inheritance, polymorphism, virtual functions (2 hours) • Practical training/laboratory 5: guidelines on final projects, practical training (2 hours) • Introduction to UML language, concepts on life-cycle of software projects, main UML diagrams UML (2 hours) • Practical training/lab. 6:rules to passing from UML diagrams to C++,study case of a final project,conditional compilation (2 hours) • Operator overloading, templates of function and classes, exceptions handling (2 hours) • I/O handling in C++, hierarchy of I/O classes, istream/ostream classes, file handling in C++ (sequential and random access), output on printer (2 hours) • Practical training/laboratory 7: include files for templates, stack and queue by means of linked lists (2 hours) • STL Library, contenitors (vector,list,map,string), iterators, algorithms (find, sort, etc), virtual functions (2 hours) • Practical training/laboratory 8, basic concepts on graphical interfaces, analysis of 3 projects with Windows Forms (2 hours) • Basic concepts of web programming and script languages : the web, HTML language, main TAGs in HTML language, HTML form, script language, script CGI (methods by command line, get, post) (2 hours) TEACHING METHODS: Lectures, supported by transparencies and projector, practical training, personalized feedback and coaching to improve every aspect of the student's work, also by email EXPECTED KNOWLEDGES AND SKILLS: At the end of the course, student should have acquired skills in C++ and OO programming and UML designing TEACHING AIDS: The student can refer to the didactic materials published on websiste www.primeeng.it in the section “materiale didattico” (slides/documentation/exercises/solved exercises) EXAMINATION METHOD: Written and oral examination (presentation of a final project about thematics agreed with the teacher). BIBLIOGRAPHY: Slides-documentation of the course (on website) Deitel, Deitel-“C++ Corso completo di programmazione”, Apogeo 2003 Deitel, Deitel-“C++ Tecniche avanzate di programmazione”, Apogeo 2003 FURTHER BIBLIOGRAPHY: Bjarne Stroustrup, “C++ Linguaggio, libreria standard, principi di programmazione, Pearson - Addison Wesley 2000