Università Magna Graecia di Catanzaro
Il corso mira a fornire le basi della programmazione, applicando sia il paradigma procedurale che quello ad oggetti. Sono presentati, infine, alcuni cenni di programmazione funzionale.
Il corso fornisce le seguenti competenze:
Competenze trasversali: Abilità nella risoluzione di problemi, in particolare attraverso lo sviluppo di algoritmi; Abilità alla collaborazione in piccoli gruppi ed alla condivisione e presentazione del lavoro svolto; Autonomia nella ricerca di librerie utili alla risoluzione di homework.
Collegamenti Veloci:
Programma
Introduzione all’Informatica La rappresentazione binaria dell’informazione: caratteri, numeri naturali, interi, reali. Algebra di Boole. Organizzazione di un computer e il modello di von Neumann. Il linguaggio macchina. Il sistema operativo. I linguaggi di programmazione ad alto livello. Compilazione e interpretazione. Le applicazioni informatiche.
Le nozioni di problema, algoritmo ed esecutore. Risoluzione algoritmica di un problema. Correttezza ed altre proprietà degli algoritmi. Esempi di algoritmi. Cenni alla valutazione dell’efficienza degli algoritmi. Algoritmi e programmi. I concetti di variabile e tipo di dato.
Introduzione ai linguaggi di programmazione. Codifica di algoritmi. Struttura di un programma. Introduzione ai tipi, classi, campi e metodi. Variabili e tipi primitivi. Istruzioni semplici. Compatibilità di tipo nell’assegnazione. Strutture di controllo del flusso di elaborazione. Operatori di ingresso/uscita. Sviluppo incrementale di programmi.
Il costruttore di tipo array. Tipi array monodimensionali. Tipi array multidimensionali. Cenni all’allocazione dinamica della memoria e gestione dello heap. Aliasing tra variabili di tipo array. Manipolazione di array. Richiami di algebra lineare. Modellazione e gestione di vettori e matrici mediante array.
Tuple. Insiemi e Dizionari.
Algoritmi di ricerca e ordinamento su array: la ricerca lineare, selection sort, insertion sort, bubble sort. La ricerca binaria. Metodi ricorsivi. Semplici algoritmi ricorsivi (es. calcolo della potenza di un numero, calcolo del fattoriale, etc.). Versione ricorsiva della ricerca binaria. L’algoritmo merge sort.
Introduzione all’uso di oggetti Modello di esecuzione dei metodi statici e passaggio dei parametri. Aspetti semantici e strutture di supporto all’esecuzione dei metodi statici: lo stack ed i record di attivazione. Cenni ai metodi non statici, classi ed oggetti
Ore disponibili totali (CFU x 25) = 9 x 25 = 225
Articolate in:
Testo consigliato:
Altri testi:
Le modalità sono indicate dal Regolamento didattico d’Ateneo.
Le modalità generali sono indicate nel regolamento didattico di Ateneo all’art.22 consultabile al link: http://www.unicz.it/pdf/
La prova scritta consiste di 3 esercizi pratici di programmazione in Java, inerenti il programma svolto. I punteggi sono così ripartiti:
|
Conoscenza e comprensione argomento |
Capacità di analisi e sintesi |
Utilizzo di referenze |
Non idoneo |
Importanti carenze. Significative inaccuratezze. |
Irrilevanti. Frequenti generalizzazioni. Incapacità di sintesi. |
Completamente inappropriato. |
18-20 |
A livello soglia. Imperfezioni evidenti. |
Capacità appena sufficienti. |
Appena appropriato. |
21-23 |
Conoscenza routinaria. |
E’ in grado di analisi e sintesi corrette. Argomenta in modo logico e coerente |
Utilizza le referenze standard. |
24-26 |
Conoscenza buona. |
Ha buone capacità di analisi e sintesi. Argomenti espressi coerentemente. |
Utilizza le referenze standard. |
27-29 |
Conoscenza più che buona. |
Ha notevoli capacità di analisi e sintesi. |
Ha approfondito gli argomenti. |
30-30L |
Conoscenza ottima. |
Ha notevoli capacità di analisi e sintesi. |
Importanti approfondimenti. |