Fondamenti di Informatica A 2015/2016

pagine
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 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
contenuti

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.
testi / bibliografia

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).
metodi didattici

Lezioni frontali in aula con il supporto di lucidi; esercitazioni pratiche in laboratorio.

modalità di verifica e valutazione dell'apprendimento

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.

strumenti a supporto della didattica

Il materiale didattico (lucidi delle lezioni, esercizi svolti, altre risorse utili) si trovano nella pagina web del corso.