15305 - FONDAMENTI DI INFORMATICA A

Anno Accademico 2015/2016

  • Docente: Mirko Viroli
  • Crediti formativi: 9
  • SSD: ING-INF/05
  • Lingua di insegnamento: Italiano

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 Neuman (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.

Orario di ricevimento

Consulta il sito web di Mirko Viroli

Consulta il sito web di Moreno Marzolla

Consulta il sito web di Sara Montagna