Università degli Studi di Napoli "Parthenope"

Scheda dell'insegnamento

Anno accademico: 
2019/2020
Tipologia di insegnamento: 
Caratterizzante
Tipo di attività: 
Obbligatorio
Corso di afferenza: 
Corso di Laurea triennale (DM 270) in INFORMATICA
Settore disciplinare: 
INFORMATICA (INF/01)
Lingua: 
Italiano
Crediti: 
6
Anno di corso: 
1
Ciclo: 
Secondo Semestre
Ore di attivita' frontale: 
48

Obiettivi

I due moduli integrati approfondiscono alcuni aspetti fondamentali legati alle metodologie di sviluppo ed analisi di algoritmi, organizzazione logica dei dati e relativa implementazione nel linguaggio C. Essi inoltre introducono i concetti fondamentali della programmazione ad oggetti nel linguaggio C++.
Conoscenza e capacità di comprensione
Gli studenti devono dimostrare di conoscere e saper comprendere:
• concetti di base della metodologia di sviluppo di algoritmi e delle strutture dati astratte;
• il linguaggio di programmazione C.
Capacità di applicare conoscenza e comprensione
Gli studenti devono dimostrare di:
• saper utilizzare la propria conoscenza acquisita per progettare algoritmi che risolvano particolari problemi, anche quando essi appaiono in contesti concreti e in altre discipline applicative;
• saper usare in modo consapevole il linguaggio C per implementare un algoritmo.
Tali capacità si estrinsecano anche in un uso approfondito e consapevole degli strumenti di calcolo e dei laboratori informatici avanzati.
Autonomia di giudizio
Gli studenti devono essere in grado di
• sapere valutare in maniera autonoma i risultati prodotti dal software.
• sapere individuare, anche utilizzando repository on-line, gli algoritmi e i software più adatti per risolvere uno specifico problema.
Abilità comunicative
Gli studenti devono essere in grado di redigere, anche lavorando in gruppo, una relazione di presentazione di un algoritmo, di commentarne i risultati e di documentare la sua implementazione in C servendosi di strumenti avanzati di scrittura/documentazione. Inoltre gli studenti devono essere in grado di usare correttamente la terminologia della Programmazione e delle Strutture dati, anche in lingua inglese.
Capacità di apprendimento
Gli studenti devono essere in grado di aggiornarsi in modo autonomo e di approfondire argomenti e applicazioni specifiche delle Tecniche di Programmazione, anche accedendo a banche dati, repository on-line di software e altre modalità messe a disposizione dalla rete.

Prerequisiti

Contenuti del corso di Programmazione I e Laboratorio.

Contenuti

Parte I
Linguaggio C (16h)
• Tipi di base: Tipo logico (operatori booleani e bitwise), tipi numerici (Sistema aritmetico degli interi, Sistema Aritmetico Binario Floating-point Standard IEEE 754), tipo carattere e stringa.
Strutture dati dinamiche (20h)
• ADT lineari (lista, coda, pila),
• gerarchiche (alberi, alberi binari, ABR e heap),
• reticolari (grafi).
• Implementazione in C delle strutture di dati dinamiche e dei relativi algoritmi di gestione.
Funzioni ricorsive ed algoritmi ricorsivi
• Classificazione delle funzioni ricorsive e relativa analisi della profondità di ricorsione.
• Esempi di algoritmi ricorsivi in C.
Problemi di base (12h)
• Pattern Matching (algoritmo di ricerca diretta, algoritmo di Knuth-Morris-Pratt),
• algoritmi di ordinamento "Divide et Impera" ed analisi di complessità nelle relative versioni iterative e ricorsive (Mergesort, Quicksort, Heapsort).

Parte II
Linguaggio C++ (12h + 12h Lab.)
• Introduzione alla Programmazione Object Oriented
• Linguaggio C++, compilatore gcc e ambiente di sviluppo Code::Blocks
• Tipi di dati fondamentali
• Istruzioni, Operatori, Funzioni
• Strutture, Unioni ed Enumerazioni
• Namespace
• Classi ed Oggetti (Classi concrete, Classi derivate, Classi Astratte)
• Template e Contenitori

Metodi didattici

Didattica tradizionale in presenza, accompagnata da attività di supporto in un laboratorio informatico.

Verifica dell'apprendimento

L’obiettivo della procedura di verifica consiste nel quantificare, per ogni studente, il livello di raggiungimento degli obiettivi formativi precedentemente indicati. La procedura di verifica consiste principalmente in un esame orale con verifica scritta di programmazione C/C++.

Testi

Testi consigliati:
K. N. KING: “Programmazione in C”, Apogeo.
R. SEDGEWICK: “Algoritmi in C++”, Addison-Wesley
B. STROUSTRUP, C++ Linguaggio, Libreria Standard, Principi di Programmazione, 4a edizione, 2015
E. Gamma, R. Helm, R. Johnson, J. Vlissides
(the GangOfFour), Design Patterns: Elements of Reusable Object-Oriented Software, AddisonWesley Professional, 1994
Tutte le lezioni sono fruibili come presentazioni animate in formato Flash con l’audio di commento del Docente in streaming attraverso la piattaforma di e-learning del Dipartimento di Scienze e Tecnologie:
http://e-scienzeetecnologie.uniparthenope.it
Le slide (formato .pdf) di tutte le lezioni sono disponibili sulla stessa piattaforma, insieme con esercizi e altro materiale utile di approfondimento.

Altre informazioni

Tutte le informazioni di dettaglio sul corso sono reperibili sulla pagina del Corso in piattaforma di e-learning del Dipartimento di Scienze e Tecnologie:
http://e-scienzeetecnologie.uniparthenope.it/