CdSINFORMATICA
Codice007AA
CFU12
PeriodoPrimo semestre
LinguaItaliano
Al termine del corso lo studente avrà acquisito conoscenze in merito agli strumenti necessari per sviluppare programmi in linguaggio C e alle metodologie essenziali per realizzare programmi secondo standard di qualità elevati. Lo studente avrà anche acquisito conoscenze relative al linguaggio C e a tutte le sue componenti. Infine, lo studente avrà acquisito conoscenze di base per comprendere il paradigma di programmazione funzionale
The student will acquire knowledge on the C language and the tools to produce high quality, industrial-stregnth level code. The student will be exposed to a functional programming introduction.
Le conoscenze saranno verificate mediante un elaborato scritto a risposte multiple previsto all'inizio di ogni appello per quanto riguarda la programmazione funzionale. Le conoscenze relative agli strumenti e alle metodologie di sviluppo di programmi in C e al linguaggio C nel suo complesso saranno oggetto di una revisione degli assegnamenti affidati agli studenti durante l'anno che dovrà essere superata prima di accedere alla prova di esame principale.
Student knowledge will be verified by a multi-selection witten exam, yearly assignment and a practical lab test of C programming.
Al termine del corso lo studente sarà in grado di usare un ambiente di sviluppo software che sarà indicato a lezione dai docenti del corso e avrà la capacità di scrivere programmi C perfettamente funzionanti per la soluzione di problemi di complessità medio-alta. Lo studente avrà anche acquisito i concetti fondamentali del paradigma di programmazione funzionale.
The student will acquire the ability to use developing environments and the ability to write complete C programs. The student will have the ability to understand functional programs.
Al termine del corso lo studente dovrà superare un test a risposte multiple sui concetti fondamentali della programmazione funzionale e dovrà scrivere un programma C funzionante che risolve un problema assegnatogli dai docenti durante la prove principale di esame.
Multi-selection written test on functional programming. Practical C programming test in the lab.
Lo studente acquisirà precisione scientifica nello svolgere gli assegnamenti e nel produrre il codice C corrsipondente. Lo studente avrà anche la capacità di comprendere programmi funzionali e scrivere semplici pezzi di codice funzionale.
Ability to produce high quality C code and understand complex functional programs
Realizzazione di un programma funzionante risultato della prova di esame principale e superamento di un test a risposte multiple sulla programmazione funzionale.
Production of a complete, working C program and multi-selection test on functional programming
Nessuno
None
Il corso si divide in lezioni in aula e laboratori. Durante le lezioni in aula vengono introdotti i concetti fondamentali del corso e illustrati mediante semplici esempi. Si farà ricorso sia a diapositive proiettate e commentate dal docente che a sessioni interattive di programmazione che il docente mostrerà agli studenti mediante proiezione dello schermo del proprio computer alla classe.
In laboratorio si utilizzeranno strumenti di sviluppo software professionali per la realizzazione di programmi C che risolvano problemi assegnati dai docenti agli studenti durante la classe.
Verranno forniti assegnamenti da svolgersi in classe ed eventualmente completare a casa che saranno poi oggetto di verifica prima di accedere alla prova principale di esame.
Lectures and labs. Lectures introduce the C language concepts and features and the lab applies those concepts to practical problems that students solve by themselves.
Assignments will be given that are needed to access the final exam.
Introduzione generale: livelli di astrazione (hardware, sistemi operativi, applicazioni). Linguaggi di programmazione (sintassi vs. semantica, parser, compilatori, interpreti, algoritmi). Descrizioni BNF.
Elementi base di C: analisi di semplici programmi
Rappresentazioni: numeri senza segno, intervalli di rappresentazione, operazioni con numeri binari puri: addizione, sottrazione, overflow. Numeri con segno (modulo e segno, complemento a 2). Numeri reali (fissi e in virgola mobile). Errori di rappresentazione. Rappresentazioni non numeriche: caratteri (ASCII, UNICODE).
Linguaggio C: strutture di controllo, funzioni, ricorsione, vettori, puntatori, caratteri e stringhe, I/O formattato, strutture, unioni, manipolazione di bit e enumerazioni, argomenti da linea di comando, elaborazione di file, allocazione dinamica della memoria, strutture dati (liste, pile, code), programmi con file sorgenti multipli.
Introduzione alla programmazione funzionale.
General introduction
C basics
Number representation
Control structures, functions, recursion, array, pointers, char and string, I/O, struct, union, bit manipulation, enumeration, command-line arguments, files, memory management, data structures (liste, stack, queue)
Introduction to functional programming
Slides and Internet
Compito a risposte multiple su programmazione funzionale: 10 domande. Ciascuna domanda vale 0.4 punti se corretta e, -0.2 punti se errata e 0 punti se non risposta. Durata 1 ora. Nessun materiale o strumento tecnologico è permesso allo scritto. Occorrono almeno 2,1 punti per partecipare al compito di programmazione in C.
La prova di programmazione in C si svolge in laboratorio e consiste nella stesura di un programma funzionante che risolve un problema simile a quelli visti nelle lezioni di laboratorio. La durata della prova è di 2 ore e si svolge al computer. Nessun materiale o strumento tecnologico è permesso alla prova. Esiste un sistema automatico di testing che effettua controlli preliminari sulla correttezza del programma prodotto e avvisa il candidato in caso di errori. Il compito verrà valutato (correttezza e qualità del programma sia in termini di standard di qualità introdotti a lezione che di efficienza della soluzione) solo se il programma supera almeno il 51% dei casi di test forniti nella prova. Se si desidera abbandonare l’esame occorre dirlo esplicitamente per evitare la consegna del codice. La prima volta (e solo la prima volta!) che viene consegnato il codice in C si guadagna un bonus di 2 punti. La prova vale 22 punti e si considera superata con almeno 12 punti.
Verranno dati degli assegnamenti agli studenti da svolgersi durante le lezioni e da completare a casa o da svolgere completamente a casa. La soluzione degli assegnamenti è condizione necessaria per poter partecipare alla prova di programmazione in C. La soluzione di tali assegnamenti verrà verificata in itinere mediante una brevissima discussione con i candidati durante le lezioni di laboratorio prima della prova di programmazione. Chi non riesce a superare la prova durante l’anno, dovrà farlo almeno una settimana prima della prova di programmazione a cui intende partecipare previo appuntamento con il docente di riferimento del gruppo di laboratorio a cui è assegnato. Tale verifica permette di acquisire da 0 a 4 punti. La verifica si considera superata solo se si acquisiscono almeno 2.1 punti.
Non sono previste prove in itinere. Il prof può richiedere una verifica orale, lo studente non può chiedere l’orale per alzare il voto.
Assignments: 0-3 point (at least 1 to pass)
Multiselection test: 0-5 points (at least 2.6 to pass)
If assignment and multiselection test are passed -> practical test: 0-24 points (14 to pass)