Il corso introduce alla conoscenza dei principi dell'informatica e della programmazione di tipo procedurale.
Il corso ha l'obiettivo primario di fornire allo studente le conoscenze delle principali strutture dati, degli algoritmi di base e dei rudimenti di complessità computazionale.
Il corso inoltre fornisce allo studente le tecniche e gli strumenti per lo sviluppo di programmi applicativi mediante l'utilizzo del linguaggio di programmazione ANSI-C, con particolare attenzione ai meccanismi di “problem solving” e ricerca dell'errore
Il corso è organizzato in unità didattiche elementari (UDE) in base ai contenuti e alle capacità che si intende sviluppare.
Il corso prevede come metodo di insegnamento principale le lezioni frontali per acquisire le conoscenze teoriche di base e tutti gli elementi sintattici e lo svolgimento di esercitazioni proposte dal docente per acquisire la capacità di risolvere i problemi, applicare la conoscenza e utilizzare gli ambienti e le metodologie di sviluppo.
Il docente propone, inoltre, delle esercitazioni individuali che consistono nella soluzione di un problema che lo studente deve affrontare in autonomia che vengono successivamente corrette o discusse in classe.
La frequenza non è richiesta, seppure fortemente consigliata, per sostenere la prova di esame.
Lo studente è tenuto a frequentare almeno il 70% delle lezioni del corso per poter sostenere le prove in itinere.
Modulo 1
Modulo 2
Modulo 3
Gli argomenti segnati con (*) rappresentano le conoscenze minime.
Il corso è organizzato im 7 Unità Didattiche Elementari (UDE) il cui contenuto è descritto negli argomenti del corso.
Unità Didattica Elementare | Durata (ore) |
UDE 1 | 6 |
UDE 2 | 12 |
UDE 3 | 10 |
UDE 4 | 10 |
UDE 5 | 10 |
UDE 6 | 8 |
UDE 7 | 23 |
Il materiale didattico è pubblicato sul portale Studium.UniCT di Ateneo
Argomenti | Riferimenti testi | |
1 | UDE 1: Rappresentazione dei numeri interi e dei numeri reali. Algebra di boole, funzione ed espressioni logiche. | Appunti del docente [Pel] Capitolo 1, Appendice C [BeGu] Capitolo 1, 2, App. D, E |
2 | UDE 1: Cenni sui sistemi di elaborazione; Traduzione ed esecuzione dei programmi; Ambiente di Programmazione; Linguaggi di Programmazione; Operazioni tra numeri binari; Codifica dei caratteri. | Appunti del docente [Pel] Capitolo 1, Appendice C [BeGu] Capitolo 1, 2, App. D, E |
3 | UDE 2: Tipo di dato principale; Identificatori; Variabili; Modificatori di Accesso; Specificatori di classe di memorizzazione; Costanti; Operatori; Strutture di Controllo; Istruzioni di selezione, di iterazione, di salto, di espressione, di blocco | [Pel] Capitolo 2,4,5 [BeGu] Capitolo 3, 4, 5, 6, 7, 8, 9 |
4 | UDE 2: Algoritmi e programmi; Uso di notazione grafica per esprimere algoritmi; Espressioni Complesse | [Pel] Capitolo 2,4,5 [BeGu] Capitolo 3, 4, 5, 6, 7, 8, 9 |
5 | UDE 3: Array Monodimensionali; Puntatori; Puntatori ad array; Stringhe; Strutture e strutture nidificate; Array di strutture | [Pel] Capitolo 3,7,8,11 [BeGu] Capitolo 10, 13, 14, 16 |
6 | UDE 3: Puntatori a strutture; Unione; Enumerazione | [Pel] Capitolo 3,7,8,11 [BeGu] Capitolo 10, 13, 14, 16 |
7 | UDE 4:Lettura e scrittura di caratteri e stringhe; I/O formattato; Canali; File di testo; Esercizi sugli argomenti svolti nelle UDE 1,2,3,4 | [Pel] Capitolo 11 [BeGu] Capitolo 17, 19 |
8 | UDE 4: File binari | [Pel] Capitolo 11 [BeGu] Capitolo 17, 19 |
9 | UDE 5: Funzioni; Istruzione return; Passaggio di parametri; Allocazione dinamica della memoria | [Pel] Capitolo 6,9,10 [BeGu] Capitolo 11, 15 |
10 | UDE 5: Ricorsione e Record di Attivazione; Variabili locali, regole di visibilità e tempo di vita; Puntatori a Funzioni | [Pel] Capitolo 6,9,10 [BeGu] Capitolo 11, 15 |
11 | UDE 6: Algoritmi di ricerca e ordinamento in memoria interna: classi di algoritmi; Esempi di Algoritmi di ordinamento | Dispense del docente |
12 | UDE 6: Complessità computazionale; la notazione O e Omega grande; Cenni sulla valutazione della complessità di un programma | Dispense del docente |
13 | UDE 7: Strutture dati lineari: Liste, Pile, Code; Strutture dati annidate; Esercizi sugli argomenti svolti nelle UDE 5,6,7 | Dispense del docente |
14 | UDE 7: Strutture dati non lineari: Alberi, Hashmap | Dispense del docente |
Modalità di verifica dell'apprendimento
Sono previste prove in itinere che permettono il superamento dell'esame.
L'esame finale (se necessario) è composto da una prova al calcolatore e da una prova orale opzionale.
Le competenze minime richieste per il superamento dell'esame sono le seguenti:
Conoscenze
Capacità
I criteri adottati nella valutazione finale sono basati sulla pertinenza delle risposte rispetto alle domande formulate, sulla la qualità dei contenuti, sulla capacità di riportare esempi, e sulla proprietà di linguaggio tecnico e la capacità espressiva complessiva dello studente.
PROVE IN ITINERE
Sono previste due prove in itinere (durata 1:30-2:00 e 3:00-4:00 ore) durante il corso.
La prima prova in itinere è costituita da un elaborato al calcolatore che prevede la capacità di sviluppo di semplici programmi in C in accordo alle competenze erogate nelle Unità Didattiche 1,2,3,4) e da una sezione teorica relative alle Unità Didattiche 1,2,3.
Il superamento della prima prova in itinere permette l’accesso alla seconda prova in itinere e, qualora superata, permette di acquisire fino a 8 (superamento della prova con voto pari a 4).
La seconda prova in itinere è un elaborato al calcolatore e da una sezione teorica (opzionale): essa permette di acquisire un voto massimo di 20 (superamento della prova con voto pari a 10). Il voto massimo ottenibile con le due prove in itinere è dunque di 28/30, dato dalla somma dei due punteggi.
Lo studente che abbia superato entrambe le prove in itinere ottenendo una valutazione complessiva di almeno 18/30, se lo desidera può integrare le due prove in itinere con la prova orale da svolgere negli appelli regolari (entro la fine dell’a.a.), al fine di poter ottenere una migliore valutazione. Lo studente che abbia superato entrambe le prove in itinere ottenendo una valutazione complessiva inferiore a 18/30, deve integrare le due prove in itinere con la prova orale da svolgere negli appelli regolari (entro la fine dell’a.a.), per il superamento dell’esame.
PROVE DI FINE CORSO
La prova d'esame è composta da una prova scritta e una prova orale (opzionale) della durata di 3:00 - 4:00 ore.
La prova scritta è rappresentata da un elaborato al calcolatore (obbligatorio) e da una sezione teorica (opzionale) che prevede la conoscenza di tutti gli argomenti in programma. Il superamento della prova scritta permette di raggiungere un voto massimo di 28/30.
Lo studente che lo desidera può integrare la prova scritta con la prova orale da svolgere in un qualunque appello regolare (entro la fine dell’a.a.) per migliorare la propria valutazione, in questo caso non esistono soglie massime
Esempi di domande ed esercizi sono disponibili sul portale Studium.UniCT di Ateneo