Università degli Studi di Napoli "Parthenope"

Scheda dell'insegnamento

Anno accademico: 
2016/2017
Tipologia di insegnamento: 
Caratterizzante
Tipo di attività: 
Obbligatorio
Corso di afferenza: 
Corso di Laurea triennale (DM 270) in INFORMATICA
Settore disciplinare: 
INFORMATICA (INF/01)
Crediti: 
9
Anno di corso: 
1
Ciclo: 
Secondo Semestre
Ore di attivita' frontale: 
72

Obiettivi

I due moduli integrati di "Programmazione II e Lab." 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 (almeno a livello elementare).

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. Inoltre, devono 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 II e Laboratorio.

Contenuti

Linguaggio C
• 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 lineari (lista, coda, pila), gerarchiche (alberi, alberi binari e heap) e reticolari (grafi). Implementazione nel linguaggio 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: 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).

Linguaggio C++
# 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
# Linguaggio UML
# Template e Contenitori
# UML e C++
# Introduzione ai Design Pattern in C++ (Singleton, Abstract Factory)
# Esempi ed esercizi

Metodi didattici

Verifica dell'apprendimento

Esame orale con verifica scritta di programmazione C/C++

Testi

Servizio di e-Learning:
http://e-scienzeetecnologie.uniparthenope.it
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

Altre informazioni