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 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.
L'insegnamento sarà svolto attraverso delle lezioni frontali (per un totale di 72 ore) in cui verranno presentati i contenuti del corso, anche attraverso delle dimostrazioni pratiche di programmazione in aula. Lo studente avrà a disposizione ulteriori ore di lezione frontale da svolgere con un tutor didattico, durante le quali avrà la possibilità di perfezionare la propria preparazione o colmare eventuali lacune. Inoltre lo studente avrà a disposizione una piattaforma di apprendimento attraverso la quale sarà possibile esercitarsi durante le ore di studio e autovalutarsi sui contenuti appresi a lezione. La medesima piattaforma fornisce un valido strumento per la preparazione all'esame.
L'insegnamento sarà svolto attraverso delle lezioni frontali (per un totale di 72 ore) in cui verranno presentati i contenuti del corso, anche attraverso delle dimostrazioni pratiche di programmazione in aula. Lo studente avrà a disposizione ulteriori ore di lezione frontale da svolgere con un tutor didattico, durante le quali avrà la possibilità di perfezionare la propria preparazione o colmare eventuali lacune. Inoltre lo studente avrà a disposizione una piattaforma di apprendimento attraverso la quale sarà possibile esercitarsi durante le ore di studio e autovalutarsi sui contenuti appresi a lezione. La medesima piattaforma fornisce un valido strumento per la preparazione all'esame.
Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.
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 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
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 Introduttiva (0.5 CFU): Ripasso e approfondimento di concetti ntrodotti nel corso di Programmazione 1
Parte 2 (2 CFU): Cenni di complessità e tecniche ricorsive: applicazione all’ordinamento e alla selezione.
Parte 3 (1.5 CFU): Programmazione avanzata a oggetti - ripasso ed approfondimento
Parte 4 (5 CFU): Strutture dati elementari e loro implementazione in C++
Esercitazione (0.5 CFU): Risoluzione guidata di specifici problemi.
Il Programma didatico è diviso nelle seguenti parti:
Parte Introduttiva (0.5 CFU): Ripasso e approfondimento di concetti ntrodotti nel corso di Programmazione 1
Parte 2 (2 CFU): Cenni di complessità e tecniche ricorsive: applicazione all’ordinamento e alla selezione.
Parte 3 (1.5 CFU): Programmazione avanzata a oggetti - ripasso ed approfondimento
Parte 4 (5 CFU): Strutture dati elementari e loro implementazione in C++
Esercitazione (0.5 CFU): Risoluzione guidata di specifici problemi.
Libro di testo.
Fondamenti di Programmazione in C++
Algoritmi, strutture dati e oggetti
Autore: Luis Joyanes Aguilar
Casa Editrice: McGraw-Hill
sito web del libro
Questo volume introduce ai principi della programmazione scegliendo come linguaggio didattico proprio il C++, nonostante non lo si possa certamente definire tale. Il motivo che ci spinge in questa direzione è il desiderio di ridurre i tempi di formazione del programmatore, facendolo applicare, fin dai primi algoritmi, su un linguaggio professionale realmente utilizzato in grandi suite software.
|
Libri consigliati.
Effective C++ e More Effective C++
Algoritmi, strutture dati e oggetti
Autore: Scott Meyers
Casa Editrice: Addison-Wesley
sito dei libri
Il testo è consigliato agli studenti che intendono approfondire il tema della programmazione C++ avanzata. Ogni capitolo del libro è costituito da più "temi" presentati sotto forma di brevi trattazioni indipendenti che forniscono consigli specifici, spiegazioni sulle sottigliezze del C++ ed esempi di codice esaurienti. La descrizione articolata di ogni tema rende chiaro cosa fare, cosa non fare e perché.
Libro di testo.
Fondamenti di Programmazione in C++
Algoritmi, strutture dati e oggetti
Autore: Luis Joyanes Aguilar
Casa Editrice: McGraw-Hill
sito web del libro
Questo volume introduce ai principi della programmazione scegliendo come linguaggio didattico proprio il C++, nonostante non lo si possa certamente definire tale. Il motivo che ci spinge in questa direzione è il desiderio di ridurre i tempi di formazione del programmatore, facendolo applicare, fin dai primi algoritmi, su un linguaggio professionale realmente utilizzato in grandi suite software.
|
Libri consigliati.
Effective C++ e More Effective C++
Algoritmi, strutture dati e oggetti
Autore: Scott Meyers
Casa Editrice: Addison-Wesley
sito dei libri
Il testo è consigliato agli studenti che intendono approfondire il tema della programmazione C++ avanzata. Ogni capitolo del libro è costituito da più "temi" presentati sotto forma di brevi trattazioni indipendenti che forniscono consigli specifici, spiegazioni sulle sottigliezze del C++ ed esempi di codice esaurienti. La descrizione articolata di ogni tema rende chiaro cosa fare, cosa non fare e perché.
Altro materiale didattico (slides, codice, ecc) verrà condiviso tramite la piattaforma Studium: https://studium.unict.it/dokeos/2021/courses/syllabus/?cid=22849/
http://www.dmi.unict.it/catalano/programmazione-ii/
PROGRAMMAZIONE II | ||
Argomenti | Riferimenti testi | |
1 | 1. Sistemi numerici. | Testo 1 |
2 | 2. Limiti delle funzioni di una variabile reale. | Testi 1 & 3 |
3 | 3. Funzioni Continue. | Testi 1 & 3 |
4 | 4. Calcolo Differenziale. | Testi 1 & 3 |
5 | 5. Esercizi | Testi 2 - 4 - 5 |
LABORATORIO | ||
Argomenti | Riferimenti testi | |
1 | Array. | Capitolo 6 del testo di riferimento |
2 | Puntatori e riferimenti | Capitolo 8 del testo di riferimento |
3 | Allocazione dinamica della memoria | Capitolo 9 del testo di riferimento |
4 | Introduzione alla complessità computazionale | Dispense fornite dal docente |
5 | Ordinamento e ricerca | Capitolo 11 del testo di riferimento |
6 | Ricorsione | Capitolo 18 del testo di riferimento |
7 | Classi e oggetti | Capitolo 12 del testo di riferimento |
8 | Classi derivate: ereditarietà e polimorfismo | Capitolo 13 del testo di riferimento |
9 | Template | Capitolo 14 del testo di riferimento |
10 | Sovraccaricamento degli operatori | Capitolo 20 del testo di riferimento |
11 | Liste | Capitolo 16 del testo di riferimento |
12 | Pile e Code | Capitolo 17 del testo di riferimento |
13 | Alberi | Capitolo 19 del testo di riferimento |
14 | Grafi | Dispense fornite dal docente |
L'esame si svolegrà in due prove. La prima prova di laboratorio consiste nello sviluppo di un programma in C++ che prevede l'implementazione di alcune tre le strutture dati previste dal corso e/o la risoluzione di alcuni problemi computazionali di livello intermedio. La seconda prova consiste in un esame orale sui contenuti del corso.
L'esame si svolegrà in due prove. La prima prova di laboratorio consiste nello sviluppo di un programma in C++ che prevede l'implementazione di alcune tre le strutture dati previste dal corso e/o la risoluzione di alcuni problemi computazionali di livello intermedio. La seconda prova consiste in un esame orale sui contenuti del corso.
La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.
I testi delle prove di laboratorio in C++ saranno disponibili sul sito internet dei docenti. Inoltre lo studente avrà a disposizione una piattaforma di apprendimento attraverso la quale sarà possibile
esercitarsi durante le ore di studio e autovalutarsi sui contenuti appresi a lezione. La medesima piattaforma fornisce un valido strumento per la preparazione all'esame.
I testi delle prove di laboratorio in C++ saranno disponibili sul sito internet dei docenti. Inoltre lo studente avrà a disposizione una piattaforma di apprendimento attraverso la quale sarà possibile
esercitarsi durante le ore di studio e autovalutarsi sui contenuti appresi a lezione. La medesima piattaforma fornisce un valido strumento per la preparazione all'esame.