15305 - FONDAMENTI DI INFORMATICA A

Scheda insegnamento

Anno Accademico 2017/2018

Conoscenze e abilità da conseguire

Al termine del corso, lo studente possiede le conoscenze di base dei concetti di computazione, di programmazione imperativa, strutturata, e di strutture dati e loro algoritmi. In particolare, lo studente è in grado di: - progettare algoritmi base per la manipolazione di strutture dati - realizzare tali algoritmi in un linguaggio di programmazione.

Programma/Contenuti

Architettura dei calcolatori: architettura di Von Neuman; struttura di una CPU; breve introduzione sui circuiti logici.

Rappresentazione dell'informazione: rappresentazione dell'informazione numerica (rappresentazione in complemento a due, rappresentazione floating-point); rappresentazione dell'informazione non numerica:  campionamento e discretizzazione; compressione lossy e lossless.

Introduzione agli algoritmi e alle strutture dati: definizione di algoritmo ed esempi; analisi asintotica; strutture dati fondamentali.

Fondamenti teorici dell'informatica: la macchina di Turing; funzioni calcolabili e non calcolabili. Cenni alle asserzioni e invarianti (la logica di Floyd-Hoare-Dijkstra). Esempi di invarianti di ciclo di alcuni semplici programmi.

Linguaggio C: costrutti fondamentali del linguaggio: tipi, operatori, espressioni, funzioni, strutture di controllo, cicli, funzioni; programmazione strutturata; iterazione e ricorsione; array e puntatori; algoritmi su array (inversione, ordinamento, ricerca sequenziale, ricerca binaria); strutture; liste e algoritmi sulle liste (creazione, concatenamento, stampa, ricerca).

Testi/Bibliografia

Testo adottato:

  • Paul J. Deitel, Harvey M. Deitel, "Il linguaggio C: fondamenti e tecniche di programmazione", 8/ed, Pearson, ISBN 978-8891901651

Ulteriore materiale sarà reso disponibile dal docente.

Approfondimenti sulla parte di teoria:

  • J. Glenn Brookshear, “Informatica—una panoramica generale”, 11/ed., Pearson 2012, ISBN 978-8871927671

Approfondimenti sulla programmazione in C:

  • Brian W. Kernighan and Dennis M. Ritchie, "The C Programming Language, Second Edition", Prentice Hall, Inc., 1988. ISBN 0-13-110362-8 (paperback), 0-13-110370-9 (hardback).

Metodi didattici

Approssimativamente 7 ore di lezione alla settimana, di norma 4/5 in aula e 2/3 in laboratorio. Durante le lezioni in aula vengono introdotti i concetti base dell'informatica, e vengono via via descritti i costrutti di programmazione che sono poi oggetto di esercitazioni parzialmente guidate in laboratorio, con la supervisione dei docenti. Di tutti gli esercizi proposti in laboratorio viene poi fornita una possibile soluzione sul sito Web del corso, allo scopo di supportare le attività di studio individuale. Alcune esercitazioni in laboratorio sono rivolte a simulare lo svolgimento dell'esame finale.

Modalità di verifica dell'apprendimento

L'esame si compone di una singola prova, da svolgere in laboratorio utilizzando gli stessi strumenti utilizzati durante il corso, che include sia la verifica della conoscenza della teoria, sia alcuni esercizi di programmazione in linguaggio C. La verifica della conoscenza della teoria sarà effettuata mediante una serie di domande a quiz e/o a risposta aperta su tutti gli argomenti trattati durante il corso. Di norma vengono proposte 24 domande che complessivamente forniscono un punteggio massimo di 8/30 (risposta corretta: +1/3 di punto; risposta errata: -1/3 di punto; risposta mancante: 0 punti). La parte di programmazione consiste nello sviluppo di alcuni semplici programmi in linguaggio C (di norma, tre) secondo specifiche assegnate dal docente; la parte di programmazione fornisce un punteggio massimo di 24/30. Il voto finale si ottiene come somma del punteggio della parte di teoria e della parte di programmazione; l'esame si intende superato con un punteggio complessivo pari o superiore a 18/30.

Strumenti a supporto della didattica

Lezioni: proiezione di diapositive e dimostrazioni pratiche di programmazione al calcolatore, integrate con ulteriori spiegazioni alla lavagna. Tutto il materiale di ogni lezione viene reso disponibile agli studenti prima dell'inizio della lezione stessa.

Attività di laboratorio: verrà utilizzato l'ambiente di programmazione CodeBlocks IDE, disponibile liberamente e gratuitamente per le principiali piattaforme (Windows, Linux, MacOSX).

Link ad altre eventuali informazioni

http://www.moreno.marzolla.name/teaching/FINFA/

Orario di ricevimento

Consulta il sito web di Moreno Marzolla

Consulta il sito web di Sara Montagna