Università degli Studi di Napoli "Parthenope"

Scheda dell'insegnamento

Anno accademico: 
2020/2021
Tipologia di insegnamento: 
Base
Tipo di attività: 
Obbligatorio
Corso di afferenza: 
Corso di Laurea triennale (DM 270) in INFORMATICA
Settore disciplinare: 
INFORMATICA (INF/01)
Lingua: 
Italiano
Crediti: 
12
Anno di corso: 
1
Docenti: 
Ciclo: 
Primo Semestre
Ore di attivita' frontale: 
96

Obiettivi

I due moduli integrati (Programmazione I e Laboratorio di Programmazione I, 12 CFU, esame unico) costituiscono un percorso introduttivo alla programmazione, ovvero alle metodologie e alle tecniche per lo sviluppo, l’analisi e l’implementazione degli algoritmi. Il corso introduce il linguaggio C, utilizzato per la realizzazione dei prodotti software previsti nelle attività di laboratorio (in gruppo) e nei progetti individuali degli allievi.
Conoscenza e capacità di comprensione: Lo studente deve dimostrare di conoscere e saper comprendere le metodologie di base per lo sviluppo e l’analisi degli algoritmi, il linguaggio di programmazione C e un suo ambiente di sviluppo.
Capacità di applicare conoscenza e comprensione: Lo studente deve dimostrare di saper utilizzare la propria conoscenza acquisita per risolvere computazionalmente semplici problemi applicativi, anche quando essi appaiono in contesti concreti, per sviluppare algoritmi e analizzarli dal punto di vista della correttezza e della complessità, per usare in modo consapevole il linguaggio di programmazione C al fine di implementare efficientemente 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: Lo studente deve essere in grado di sapere valutare e interpretare in maniera autonoma i risultati di un algoritmo e di una sua implementazione in linguaggio C.
Abilità comunicative: Lo studente deve essere in grado di redigere una relazione di presentazione di un algoritmo e di documentare la sua implementazione in linguaggio C, anche lavorando in gruppo, servendosi di strumenti avanzati di scrittura/documentazione e usando correttamente la terminologia di base dell’Informatica, anche in lingua inglese.
Capacità di apprendimento: Lo studente deve essere in grado di aggiornarsi e approfondire in modo autonomo argomenti e applicazioni specifiche di programmazione in C.

Prerequisiti

Nessuno

Contenuti

Concetto di Algoritmo. 2h
Variabili e tipi - Operazione di assegnazione. 4h
Linguaggio C - Variabili e tipi in C - Puntatori in C – Input / output in C. 6h
Costrutti di controllo di selezione e di ripetizione. 6h
Function e procedure. 8h
Approccio incrementale – Algoritmi per calcolo di somme, determinazione del massimo, appartenenza a un insieme (search). 6h
Strutture dati – Algoritmi elementari con array - Ricerca sequenziale - Fusione - Algoritmi di base su array 2D - Function in C per problemi di base con array 1D e 2D. 8h
Array e insiemi – algoritmi di unione, intersezione, inclusione, sottrazione e uguaglianza - Tipi enumerativi e tipi derivati in C. 6h
Stringhe ed elaborazione di testi – Algoritmi di analisi testi - La libreria string del C.8h
Efficienza degli algoritmi – Definizione di complessità di tempo e di spazio –Complessità asintotica – Classi di complessità. 4h
Ordinamento di array – Algoritmi di ordinamento per inserimento e per selezione. 8h
Formule ricorrenti – Formula di Fibonacci. 6h
Approccio divide et impera – Algoritmo di ricerca binaria - Analisi dell’efficienza - Algoritmi divide et impera per somma e massimo di un array. 6h
Algoritmi ricorsivi – Ricerca binaria ricorsiva - algoritmi ricorsivi di tipo incrementale e divide et impera. 8h
Il tipo struct del C. 3h
Numeri casuali e simulazioni stocastiche. 3h

Metodi didattici

Lezioni frontali del docente, lezioni in laboratorio del docente con il supporto di tutor; esercitazioni in gruppo in aula e in laboratorio sotto la direzione del docente mirate al problem solving. Le lezioni sono tenute sia in presenza sia in modalità telematica via Microsoft TEAMS - codice: iziyqrh

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 in una prova intercorso (con eventuale esonero dalla prova scritta), in un progetto individuale (20% del voto), una prova scritta (20% del voto) e un esame orale (60% del voto). Per l’esito positivo della valutazione sono necessari gli esiti positivi di tutte e tre le verifiche (progetto, prova scritta, prova orale). La prova intercorso verifica il livello di conoscenza degli algoritmi basati sull'approccio incrementale e descritti in modo iterativo, il livello di capacità di analisi di complessità di tali algoritmi e la capacità di scrivere un programma in C anche attraverso una opportuna organizzazione in function. L'esame orale verifica il livello di conoscenza degli algoritmi basati sull'approccio divide et impera e descritti in modo ricorsivo, e il livello di capacità di utilizzare le strutture dati array e struct, e di analizzare la complessità di tali algoritmi. La prova scritta valuta la capacità di scrivere un programma in C anche attraverso una opportuna organizzazione in function. Il progetto verifica la capacità di affrontare e risolvere in modo completo un problema sviluppando un algoritmo risolutore, anche basato su simulazione stocastica, implementandolo in un programma C articolato in function, e scrivendo una relazione esplicativa corredata da un processo di testing critico.

Testi

A. KELLEY, I. POHL; “C: didattica e programmazione”, Pearson Education Italia, 2004.
A. CIARAMELLA, G. GIUNTA: “Manuale di programmazione in C”, 2009. Scaricabile dalla piattaforma di e-learning del Dipartimento di Scienze e Tecnologie.
Tutte le lezioni e tutte le attività di laboratorio 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; le slide (formato .pdf e .pps) di tutte le lezioni sono disponibili sulla stessa piattaforma, insieme con quiz on-line di autovalutazione, esercizi, progetti di approfondimento e varie note per il laboratorio.

Altre informazioni