- Docente: Mirko Viroli
- Crediti formativi: 9
- SSD: ING-INF/05
- Lingua di insegnamento: Italiano
- Moduli: Moreno Marzolla (Modulo 1) Mirko Viroli (Modulo INT) Raffaele Cappelli (Modulo 2)
- Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo INT) Convenzionale - Lezioni in presenza (Modulo 2)
- Campus: Cesena
-
Corso:
Laurea in
Ingegneria elettronica per l'energia e l'informazione (cod. 8767)
Valido anche per Laurea in Ingegneria biomedica (cod. 0946)
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 Raffaele Cappelli