Seguici su
Cerca

PROGRAMMAZIONE II M - Z

Anno accademico 2018/2019 - 1° anno
Docente: Simone FARO
Crediti: 9
Organizzazione didattica: 225 ore d'impegno totale, 153 di studio individuale, 36 di lezione frontale, 36 di esercitazione
Semestre:

Obiettivi formativi

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.

Conoscenza e capacità di comprensione (knowledge and understanding): saranno acquisite le conoscenze relative ai principali paradigmi di programmazione e al funzionamento e all'implementazione delle principali stutture dati analizzate a lezione. Saranno inoltre acquisite le nozioni di base relative alla complessità asintotica di un algoritmo.
Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): saranno acquisite le capacità di implementazione e di progettazione di soluzioni algoritmiche attraverso l'uso dei principali paradigmi di programmazione. Lo studente sarà in grado di utilizzare l'iterazione e la ricorsione per la risoluzione di problemi computazionali di livello intermedio.
Autonomia di giudizio (making judgements): Lo studente sarà in grado di giudicare l'efficacia della propria implementazione e del proprio lavoro progettuale.
Capacità di apprendimento (learning skills): lo studente sarà in grado di adattare le soluzioni analizzate durante le lezioni anche ad altri contesti.


Modalità di svolgimento dell'insegnamento

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 alcune 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.


Prerequisiti richiesti

Lo studente che accede al corso di Porgrammazione II dovrà conoscere i fondamenti della programmazione ad oggetti e del paradigma di programmazione imperativa.


Frequenza lezioni

La frequenza delle lezioni e fortemente consigliata.


Contenuti del corso

Il corso parte dall'introduzione del concetto di modello di dati astratto per poi introdurre ed approfondire diversi modelli di dati quali: pile, code, liste, alberi e grafi. In connessione alle strutture dati saranno forniti i concetti di base relativi alla complessità computazionale.
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.


Testi di riferimento

IL testo di riferimento è "Fondamenti di programmazione in C++", di Luis Joyanes Aguilar e pubblicato dalla casa editrice. McGraw-Hill. Il 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.



Programmazione del corso

 ArgomentiRiferimenti testi
1FunzioniCapitolo 5 del testo di riferimento 
2ArrayCapitolo 6 del testo di riferimento 
3Puntatori e riferimentiCapitolo 8 del testo di riferimento 
4Allocazione dinamica della memoriaCapitolo 9 del testo di riferimento 
5StringheCapitolo 10 del testo di riferimento 
6Ordinamento e ricercaCapitolo 11 del testo di riferimento 
7RicorsioneCapitolo 18 del testo di riferimento 
8Flussi e FileCapitolo 15 del testo di riferimento 
9Classi e oggettiCapitolo 12 del testo di riferimento 
10Classi derivate: ereditarietà e polimorfismoCapitolo 13 del testo di riferimento 
11TemplateCapitolo 14 del testo di riferimento 
12Sovraccaricamento degli operatoriCapitolo 20 del testo di riferimento 
13ListeCapitolo 16 del testo di riferimento 
14Pile e codeCapitolo 17 del testo di riferimento 
15AlberiCapitolo 19 del testo di riferimento 
16GrafiDispense fornite dal docente 

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

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.


Esempi di domande e/o esercizi frequenti

I testi delle prove di laboratorio in C++ saranno disponibili sul sito internet del docente. 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.