Fondamenti di Informatica A 2015/2016
Al termine del corso, lo studente possiede le conoscenze di base dei concetti di computazione, di programmazione imperativa, strutturata, e ad oggetti, 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 nei linguaggi di programmazione Java e C
- costruire semplici applicazioni Java
PROGRAMMA
- Architettura dei calcolatori: l'architettura di Von Neumann (CPU, memoria, input/output). la struttura di una CPU; breve introduzione ai circuiti logici.
- Rappresentazione dell'informazione: logica binaria; rappresentazione dell'informazione numerica (rappresentazione binaria in complemento a due, rappresentazione di numeri floating-point); rappresentazione dell'informazione non numerica: audio, immagini; I concetti di campionamento e discretizzazione; compressione lossy e lossless.
- I sistemi operativi: struttura e funzione dei moderni sistemi operativi; il nucleo; gestione della memoria; gestione delle periferiche; scheduling dei processi; cenni ai file system.
- Introduzione agli algoritmi: definizione di algoritmo; esempi (ordinamento e ricerca); l'analisi asintotica del costo computazionale degli algoritmi; strutture dati fondamentali.
- Fondamenti teorici dell'informatica: la macchina di Turing; funzioni calcolabili e non calcolabili.
- Linguaggio C: costrutti fondamentali del linguaggio (tipi, espressioni, funzioni, strutture di controllo e cicli); programmazione strutturata; iterazione e ricorsione; array e puntatori.
- Linguaggio Java: costrutti fondamentali del linguaggio; gestione automatica della memoria; cenni sulla programmazione orientata agli oggetti: oggetti, classi e gerarchie di classi.
I libri che seguono sono da considerarsi testi di consultazione per coloro che desiderano approfondire gli argomenti trattati a lezione.
- Testi generali:
- J. Glenn Brookshear, Informatica: una panoramica generale (11/ed), Pearson, 2012, ISBN 9788871927671
- Dino Mandrioli, Stefano Ceri, Licia Sbattella, Paolo Cremonesi, Gianpaolo Cugola, Informatica: arte e mestiere 4/ed, McGraw-Hill Education, 2014, ISBN 9788838668487
- Linguaggio Java:
- Cay S. Horstmann, Concetti di informatica e fondamenti di Java, Apogeo Education, 5 edizione, ISBN 978-8838786303
- Linguaggio C:
- Paul J. Deitel, Harvey M. Deitel, Il linguaggio C: fondamenti e tecniche di programmazione, Pearson, 2013, ISBN 978-8871929378
- 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).
Lezioni frontali in aula con il supporto di lucidi; esercitazioni pratiche in laboratorio.
L'esame consiste in una prova teorico/pratica che di norma si svolge in laboratorio. La prova consiste in alcune domande sulla parte teorica, sotto forma di quesiti a risposta multipla e/o risposta aperta, e alcuni esercizi di programmazione.
Il materiale didattico (lucidi delle lezioni, esercizi svolti, altre risorse utili) si trovano nella pagina web del corso.