Il corso di Programmazione 2 ha lo scopo di fornire gli strumenti per la risoluzione di semplici problemi connessi all'uso di alcune strutture dati elementari attraverso l'utilizzo della programmazione ad oggetti. In particolare il corso parte dall'introduzione del concetto di modello di dati astratto per poi introdurre ed approfondire diversi modelli dei dati quali: pile, code, liste e alberi e grafi.
Verranno inoltre studiati i principali algoritmi di gestione delle strutture dati. In particolare i principali algoritmi di ordinamento, tra cui bubble sort, insertion sort, quicksort e mergesort.
Il linguaggio C++ verrà usato come strumento principale per presentare le implementazioni delle strutture dati e degli algoritmi.
Obiettivi formativi generali dell'insegnamento in termini di risultati di apprendimento attesi.
Il laboratorio sarà utilizzato per fornire agli studenti una forte preparazione in C ++, il linguaggio di programmazione OO utilizzato per implementare algoritmi e strutture di dati.
Come risultato del completamento di questo corso, gli studenti
L'insegnamento verrà svolto attraverso lezioni frontali (per un totale di 48 ore) durante le quali verranno presentati i contenuti del corso, anche attraverso dimostrazioni pratiche.
L'insegnamento verrà svolto attraverso lezioni frontali (per un totale di 24 ore) durante le quali verranno presentati i contenuti del corso, anche attraverso dimostrazioni pratiche.
Lo studente che accede al corso di Porgrammazione II dovrà conoscere i fondamenti della programmazione ad oggetti e del paradigma di programmazione imperativa. per poter sostenere l'esame è obbligatorio aver già superato l'esame di Programmazione I
Lo studente che accede al corso di Laboratorio di Porgrammazione II dovrà conoscere i fondamenti della programmazione ad oggetti e del paradigma di programmazione imperativa.
La frequenza delle lezioni non è obbligatoria ma è fortemente consigliata.
La frequenza delle lezioni non è obbligatoria ma è fortemente consigliata.
Il Programma didatico è diviso nelle seguenti parti:
Parte 1 (2 CFU): Cenni di complessità e tecniche ricorsive: applicazione all’ordinamento e alla selezione.
Parte 2 (4 CFU): Strutture dati elementari e loro implementazione in C++
Il Programma didatico è diviso nelle seguenti parti:
Parte Introduttiva (0.5 CFU): Ripasso e approfondimento di concetti ntrodotti nel corso di Programmazione 1
Parte 3 (2.5 CFU): Programmazione avanzata a oggetti - ripasso ed approfondimento
Libro di testo.
Thomas H. Cormen. Charles E. Leiserson. Ronald L. Rivest. Clifford Stein. Introduction to Algorithms. Third Edition. The MIT Press
Nessun testo di riferimento specifico.
Su Studium
Il materiale didattico relativo al corso sarà pubblicato su Studium.
PROGRAMMING 2 | ||
Argomenti | Riferimenti testi | |
1 | Introduction to Algorithms. Iterative sorting algorithms. | Ch. 1-2 |
2 | Recursive Algorithms. Mergesort. Analysis of Algorithms. | Ch. 2-4 |
3 | Asymptotic growth of functions. Divide and Conquer and some examples of Algorithms. | Ch. 3-4 |
4 | Quicksort and basic probabilities, | Ch. 5,7 |
5 | Linked Lists. Elementary Data structures: Stacks, Queues. | Ch. 10. |
6 | Queues and Trees. | Ch. 10. |
7 | Graphs and some elementary algorithms on graphs. | Ch. 22 |
LABORATORY | ||
Argomenti | Riferimenti testi | |
1 | Array: initialization of an array, array of characters and text strings, multidimensional arrays, vectors as parameters. | |
2 | Pointers and references: References, pointers, null pointers, pointer to pointers, pointers and arrays, pointer arrays, string pointers, pointer arithmetic, constant pointers, pointers as function arguments, function pointers, pointers to structures. | |
3 | Dynamic memory allocation: Dynamic memory management, new operator, delete operator, memory overflow management, C ++ memory types. | |
4 | Classes and objects: member functions, set methods, get and predicates, standard constructors and destructors, overloading and overriding member functions, other constructors. | |
5 | Derived classes: inheritance and polymorphism: Derived classes, inheritance types, destructors, multiple inheritance and composition, bindings, virtual functions, polymorphism, advantages of polymorphism. | |
6 | Template: Genericity, C ++ template, function template, class templated. | |
7 | Overloading of operators: Overloading of unary and binary operators, overloading of operators + and - and of the assignment operator, overloading of the insertion, extraction, new and delete operators, conversion of data and forced conversion of types. |
Students will work on a programming project in C++ and will discuss it (along with the underlying theoretical concepts) in a final oral exam.
See information on final exam for Programming Module.