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