Scheda programma d'esame
PROGRAMMAZIONE I E LABORATORIO
CORRADO PRIAMI
Anno accademico2018/19
CdSINFORMATICA
Codice007AA
CFU12
PeriodoPrimo semestre

ModuliSettoreTipoOreDocente/i
PROGRAMMAZIONE I E LABORATORIOINF/01LEZIONI96
FEDERICA PAGANELLI unimap
CORRADO PRIAMI unimap
GIOVANNA ROSONE unimap
ALINA SIRBU unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

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

Knowledge

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.

Modalità di verifica delle conoscenze

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.

Assessment criteria of knowledge

Student knowledge will be verified by a multi-selection witten exam, yearly assignment and a practical lab test of C programming. 

Capacità

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.

Skills

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.

Modalità di verifica delle capacità

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.

Assessment criteria of skills

Multi-selection written test on functional programming. Practical C programming test in the lab.

Comportamenti

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.

Behaviors

Ability to produce high quality C code and understand complex functional programs

Modalità di verifica dei comportamenti

Realizzazione di un programma funzionante risultato della prova di esame principale e superamento di un test a risposte multiple sulla programmazione funzionale.

Assessment criteria of behaviors

Production of a complete, working C program and multi-selection test on functional programming

Prerequisiti (conoscenze iniziali)

Nessuno

Prerequisites

None

Corequisiti

Nessuno

Co-requisites

None

Prerequisiti per studi successivi

Questo insegnamento è un pre-requisito per tutti gli esami di area informatica seguenti.

Prerequisites for further study

It is a pre-requisete for all the subsequente CS courses

Indicazioni metodologiche

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.

Teaching methods

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.

Programma (contenuti dell'insegnamento)

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.

Syllabus

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

Bibliografia e materiale didattico

Slides and Internet

Modalità d'esame

Compito a risposte multiple su programmazione funzionale: 10 domande con 5 scelte. Ciascuna domanda vale 0.5 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 3 punti per partecipare al compito di programmazione in C. Il superamento della prova vale solo per lo stesso appello in cui si sostiene la prova 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 24 punti e si considera superata con almeno 14 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 di esattamente 6 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 3 punti. La verifica si considera superata solo se si acquisisce almeno 1 punto.

Non sono previste prove in itinere. Il prof può richiedere una verifica orale, lo studente non può chiedere l’orale per alzare il voto.

Assessment methods

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)

Ultimo aggiornamento 01/02/2019 16:02