FONDAMENTI DI PROGRAMMAZIONE

0612700106
DIPARTIMENTO DI INGEGNERIA DELL'INFORMAZIONE ED ELETTRICA E MATEMATICA APPLICATA
CORSO DI LAUREA
INGEGNERIA INFORMATICA
9 CFU

OBBLIGATORIO
ANNO CORSO 1
ANNO ORDINAMENTO 2017
PRIMO SEMESTRE
CFUOREATTIVITÀ
1FONDAMENTI
432LEZIONE
216ESERCITAZIONE
2AMBIENTI E ALGORITIMI
18ESERCITAZIONE
216LABORATORIO


Obiettivi
IL CORSO FORNISCE GLI ELEMENTI DI BASE PER LA RISOLUZIONE DI PROBLEMI DI COMPLESSITÀ NON ELEVATA MEDIANTE L’USO DI SISTEMI DI ELABORAZIONE, SIA NELL’AMBITO DI APPLICAZIONI DI CARATTERE GENERALE, SIA PER APPLICAZIONI TIPICHE DELLO SPECIFICO SETTORE INGEGNERISTICO, USANDO IL LINGUAGGIO DI PROGRAMMAZIONE C. IL CORSO È STRUTTURATO IN MODO DA CONSENTIRE AGLI STUDENTI DI ACQUISIRE LE CONOSCENZE RELATIVE ALLE CARATTERISTICHE FONDAMENTALI DI UN SISTEMA DI ELABORAZIONE E DEI SUOI PRINCIPI DI FUNZIONAMENTO, AGLI ELEMENTI FONDAMENTALI DI UN LINGUAGGIO DI PROGRAMMAZIONE AD ALTO LIVELLO, UNITAMENTE ALLE TECNICHE FONDAMENTALI DI “PROBLEM SOLVING” MEDIANTE L’USO DI UN ELABORATORE. IL CORSO È AFFIANCATO DA UN AMPIO INSIEME DI ESERCITAZIONI PRATICHE AL CALCOLATORE, GUIDATE DAL DOCENTE, IN CUI GLI STUDENTI METTONO IN PRATICA LE CONOSCENZE ACQUISITE. QUESTE ATTIVITÀ SONO PROGRAMMATE IN MODO CHE ALL’INTERNO DI OGNI ESERCITAZIONE LO STUDENTE POSSA REALIZZARE PRATICAMENTE GLI ALGORITMI RISOLUTIVI DEI PROBLEMI DELINEATI DURANTE LE LEZIONI IN AULA.

CONOSCENZE E CAPACITÀ DI COMPRENSIONE

CODIFICA E RAPPRESENTAZIONE DELLE INFORMAZIONI, SINTASSI DEL LINGUAGGIO C, COSTRUTTI FONDAMENTALI DEI LINGUAGGI DI PROGRAMMAZIONE AD ALTO LIVELLO, STRUTTURE DATI FONDAMENTALI, RAPPRESENTAZIONE DEGLI ALGORITMI ATTRAVERSO DIAGRAMMI A BLOCCHI, CATENA DI PROGRAMMAZIONE.

CONOSCENZA E CAPACITÀ DI COMPRENSIONE APPLICATE

PROGETTARE UN ALGORITMO PER LA RISOLUZIONE DI PROBLEMI DI COMPLESSITÀ NON ELEVATA. LEGGERE E COMPRENDERE PROGRAMMI C. TRADURRE UN ALGORITMO IN UN PROGRAMMA IN LINGUAGGIO C USANDO UN AMBIENTE DI SVILUPPO. COMPILARE UN PROGRAMMA SCRITTO IN C. IDENTIFICARE E RISOLVERE ERRORI COMUNI.

AUTONOMIA DI GIUDIZIO

SAPER VALUTARE AUTONOMAMENTE IL CORRETTO IMPIEGO DEI COSTRUTTI BASE DI UN LINGUAGGIO DI PROGRAMMAZIONE DI ALTO LIVELLO PER LA CODIFICA DI ALGORITMI.

ABILITÀ COMUNICATIVE

SAPER ESPORRE ORALMENTE UN ARGOMENTO TRA QUELLI TRATTATI NEL CORSO.

CAPACITÀ DI APPRENDERE

SAPER APPLICARE LE CONOSCENZE ACQUISITE A CONTESTI DIFFERENTI DA QUELLI PRESENTATI DURANTE IL CORSO, ED APPROFONDIRE GLI ARGOMENTI TRATTATI USANDO LIBRI DI TESTO DIVERSI DA QUELLI PROPOSTI O FONTI DI INFORMAZIONE ON-LINE.


Prerequisiti
NESSUNO.
Contenuti
CONCETTI DI BASE (4H LEZIONE, 2H ESERCITAZIONE)

INTRODUZIONE. I CONCETTI DI INFORMAZIONE, ALGORITMO, ESECUTORE, PROGRAMMA E PROCESSO. ELEMENTI DI ALGEBRA DI BOOLE. RAPPRESENTAZIONE E CODIFICA DELL’INFORMAZIONE. (M. VENTO: CAP. 1)

FONDAMENTI DI PROGRAMMAZIONE (16H LEZIONE, 8H ESERCITAZIONE AL CALCOLATORE)

INTRODUZIONE. I LINGUAGGI DI PROGRAMMAZIONE AD ALTO LIVELLO E LORO DESCRIZIONE. PROBLEM SOLVING: RAPPRESENTAZIONE E SIMULAZIONE DELL’ESECUZIONE DI ALGORITMI MEDIANTE FLOWCHART. INTRODUZIONE AL LINGUAGGIO C.
I CONCETTI DI AGGREGAZIONE E ASTRAZIONE. TIPI E VARIABILI. TIPI SEMPLICI: INTERO, FLOAT, CHAR, TIPI ENUMERATIVI. VARIABILI AUTOMATICHE, ESTERNE E STATICHE. INPUT/OUTPUT FORMATTATO. LIBRERIE STANDARD. OPERATORI ARITMETICI, RELAZIONALI E LOGICI. L’ISTRUZIONE DI ASSEGNAZIONE E SUA SEMANTICA. ESPRESSIONI. ISTRUZIONI SEMPLICI. BLOCCHI DI ISTRUZIONI. STRUTTURE DI CONTROLLO SELETTIVE. STRUTTURE DI CONTROLLO ITERATIVE PREDETERMINATE E NON. AMBIENTI DI SVILUPPO: IDE (INTEGRATED DEVELOPMENT ENVIRONMENT) PER LO SVILUPPO DI PROGRAMMI STRUTTURATI. COMPILATORI ED INTERPRETI. STRUMENTI PER LA PRODUZIONE DI PROGRAMMI. EDITING DI UN PROGRAMMA. COMPILAZIONE, COLLEGAMENTO ED ESECUZIONE. DEBUGGING. (P.J. DEITEL – H.M. DEITEL: CAP. 1, 2, 3, 4 E 9; M. VENTO: CAP. 2 E 3)

PROGRAMMAZIONE STRUTTURATA (8H LEZIONE, 4H ESERCITAZIONE AL CALCOLATORE)

TIPI DI DATI STRUTTURATI. ARRAY E MATRICI: USO, INIZIALIZZAZIONE E RAPPRESENTAZIONE IN MEMORIA. IL CONCETTO DI PUNTATORE: DICHIARAZIONE E USO. PUNTATORI E STRINGHE. FUNZIONI DELLA LIBRERIA STANDARD. (P.J. DEITEL – H.M. DEITEL: CAP. 6, 7 E 8; M. VENTO: CAP 6 E 8).

DECOMPOSIZIONE FUNZIONALE E PROGETTO DI PROGRAMMI (8H LEZIONE, 4H ESERCITAZIONE AL CALCOLATORE)

PROGRAMMAZIONE MODULARE: IL CONCETTO DI FUNZIONE. DEFINIZIONE, CHIAMATA, PROTOTIPO. PASSAGGIO DEI PARAMETRI PER VALORE E PER RIFERIMENTO. EFFETTI COLLATERALI E PROCEDURE. GRAFO DI FLUSSO. SEQUENZA STATICA E SEQUENZA DINAMICA. VISIBILITÀ E DURATA DELLE VARIABILI. FUNZIONI PREDEFINITE DELLA LIBRERIA STANDARD. (P.J. DEITEL – H.M. DEITEL: CAP. 5; M. VENTO: CAP. 5)

I FILE (4H LEZIONE, 2H ESERCITAZIONE AL CALCOLATORE)

IL CONCETTO DI FILE. FILE AD ACCESSO SEQUENZIALE E DIRETTO. FILE DI TESTO. APERTURA ED OPERAZIONI DI LETTURA E SCRITTURA SU FILE. LETTURA A CARATTERE E FORMATTATA. (P.J. DEITEL – H.M. DEITEL: CAP. 11; M. VENTO: CAP. 7)

SVILUPPO DI ALGORITMI (8H LEZIONE, 2H ESERCITAZIONE AL CALCOLATORE)

SVILUPPO DI ALGORITMI NOTEVOLI SU SEQUENZE, VETTORI E MATRICI: CALCOLO DEL MINIMO E DEL MASSIMO, PRODOTTO SCALARE, PRODOTTO MATRICIALE, CALCOLO DELLA TRASPOSTA E DELLA TRACCIA DI UNA MATRICE. SVILUPPO DI PROGRAMMI CON I/O SU FILE. ALGORITMI NOTEVOLI DI RICERCA ED ORDINAMENTO: RICERCA LINEARE, RICERCA DICOTOMICA, SELECTION SORT, BUBBLE SORT. DERIVAZIONE ED INTEGRAZIONE NUMERICA DI UNA FUNZIONE. (P.J. DEITEL – H.M. DEITEL: CAP. 6 E 7; M. VENTO: CAP. 9)
Metodi Didattici
L’INSEGNAMENTO PREVEDE 90H (9 CFU) DI DIDATTICA, SUDDIVISE IN: LEZIONI IN AULA SU TUTTI GLIA ARGOMENTI DEL CORSO DELLA DURATA DI 48H (6 CFU), ED ESERCITAZIONI GUIDATE AL CALCOLATORE DELLA DURATA DI 24H (3 CFU). NELLE ESERCITAZIONI VENGONO PROPOSTI E COMMENTATI SPECIFICI ALGORITMI PER LA RISOLUZIONE DI PROBLEMI E LA RELATIVA CODIFICA IN LINGUAGGIO C; GLI STUDENTI, GUIDATI DAL DOCENTE, IMPLEMENTANO, ESEGUONO E VERIFICANO GLI ALGORITMI DELINEATI DURANTE LE LEZIONI.
Verifica dell'apprendimento
LA VALUTAZIONE DEL RAGGIUNGIMENTO DEGLI OBIETTIVI PREFISSATI AVVIENE MEDIANTE UNA PROVA PRATICA DI MEDIO TERMINE, UNA PROVA PRATICA FINALE ED UN COLLOQUIO ORALE. LA PROVA PRATICA DI MEDIO TERMINE CONSISTE IN UN TEST A RISPOSTA MULTIPLA VOLTO AD ACCERTARE SIA LA COMPRENSIONE DI PORZIONI DI CODICE C SIA IL CORRETTO IMPIEGO DEI COSTRUTTI BASE PER LA SCRITTURA DI PROGRAMMI, OLTRE DUE QUESITI A RISPOSTA APERTA DI CARATTERE TEORICO. LA PROVA PRATICA FINALE VIENE EFFETTUATA DALLO STUDENTE SUL SISTEMA DI ELABORAZIONE E CONSISTE NELLA SCRITTURA, COMPILAZIONE, ESECUZIONE E VERIFICA DI UN ESERCIZIO DI PROGRAMMAZIONE IN LINGUAGGIO C VOLTO ALLA RISOLUZIONE DI UN PROBLEMA DI COMPLESSITÀ NON ELEVATA. LA PROVA PRATICA DI MEDIO TERMINE È ESONERATIVA PER LA PRIMA PARTE DEI CONTENUTI DEL CORSO. PARTENDO DAI CONTENUTI DELLA PROVA PRATICA, LA DISCUSSIONE ORALE VERTE SUGLI ARGOMENTI TRATTATI NELLA SECONDA PARTE DEL CORSO ALLO SCOPO DI VALUTARE SIA IL GRADO DI CONOSCENZE ACQUISITE SIA LE CAPACITÀ DI SINTESI E DI ESPOSIZIONE.
NELLA VALUTAZIONE FINALE, ESPRESSA IN TRENTESIMI, LA VALUTAZIONE DELLA PROVA DI MEDIO TERMINE PESERÀ PER IL 30%, LA PROVA FINALE PESERÀ PER IL 50% MENTRE IL COLLOQUIO ORALE PER IL 20%. SI È AMMESSI ALLE PROVE SOLO PREVIO SUPERAMENTO DELLE PROVE PRECEDENTI. LA LODE POTRÀ ESSERE ATTRIBUITA AGLI STUDENTI CHE DIMOSTRINO UNA PIENA CONOSCENZA DI TUTTE LE PRINCIPALI TEMATICHE AFFRONTATE NEL CORSO E CHE ABBIANO DIMOSTRATO UNA OTTIMA CAPACITÀ DI PROGRAMMAZIONE.
Testi
PAUL J. DEITEL - HARVEY M. DEITEL, IL LINGUAGGIO C - FONDAMENTI E TECNICHE DI PROGRAMMAZIONE, PEARSON.

M. VENTO, FONDAMENTI DI INFORMATICA, APPUNTI DELLE LEZIONI, EDIZIONE 2015. QUESTO TESTO È ADOTTATO PER LA TRATTAZIONE DEGLI ASPETTI INERENTI ALLA PROGRAMMAZIONE.

IN ALTERNATIVA:
AL KELLEY, IRA POHL, "C DIDATTICA E PROGRAMMAZIONE”, PEARSON.

NELLA PAGINA DEL SITO DELL’INSEGNAMENTO WWW.ESSE3WEB.UNISA.IT È RESO DISPONIBILE AGLI STUDENTI MATERIALE AGGIUNTIVO, COME TRACCE DI ESERCIZI DI ESEMPIO E RELATIVO SVOLGIMENTO, ULTERIORI PROPOSTE DI ESERCIZIO.
Altre Informazioni
L’INSEGNAMENTO È EROGATO IN PRESENZA CON FREQUENZA OBBLIGATORIA. LA LINGUA DI INSEGNAMENTO È L’ITALIANO.
  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2018-06-05]