Fornire le conoscenze di base degli aspetti teorici e pratici dell'informatica moderna con particolare riferimento alle principali problematiche relative alla rappresentazione e alla elaborazione dell’informazione nei calcolatori elettronici. Trasmettere agli studenti una forma di pensiero computazionale ovvero la capacità di pensare in maniera algoritmica. Lo studente sarà reso in grado di analizzare un problema complesso, suddividerlo in sotto-problemi e progettare semplici algoritmi per la loro risoluzione. Favorire lo sviluppo dell’autonomia dello studente che sarà reso in grado di utilizzare in maniera consapevole i moderni strumenti informatici selezionando opportunamente tra quelli a disposizione i più adatti per la risoluzione del problema considerato. Far acquisire la terminologia di base dell’informatica moderna e la capacità di interloquire con linguaggio tecnico appropriato alla disciplina. Sviluppare nello studente un metodo di studio individuale adeguato a consentire l’approfondimento delle conoscenze acquisite e lo studio di altre discipline di base o specialistiche dell’ambito dell’ingegneria dell’informazione.
Prerequisiti
Conoscenze di base di analisi matematica, geometria e logica matematica
Testi
- B. Kernighan, D. Ritchie, “Il linguaggio C - Principi di programmazione e manuale di riferimento.”, II edizione, Pearson, 2018. - R. Sedgewick, “Algoritmi in C.”, IV edizione, Pearson, 2015 - S. Berretti, L. Carnevali, E. Vicario, “Fondamenti di Programmazione – linguaggio C, strutture dati e algoritmi elementari, C++.” IV edizione, Esculapio, 2017 - L. Mari, G. Buonanno, D. Sciuto, “Informatica e cultura dell’informazione.”, II edizione, McGraw-Hill, 2013 - L. Console, M. Ribaudo, U. Avalle, F. Carmagnola, F. Cena, “Introduzione all’Informatica.”, IV edizione, UTET Università, 2018 - P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone, “Basi di Dati - Modelli e linguaggi di interrogazione.”, IV edizione, McGraw-Hill, 2013 - Francesco Pinciroli, Marco Masseroli, “Elementi di informatica biomedica.”, Polipress, 2005
Contenuti
- FONDAMENTI DELL’INFORMATICA MODERNA: Introduzione all'informatica. Il calcolatore elettronico, macchina di Von Neumann. Gerarchie di memorie. Sistemi numerici posizionali. Sistema binario. Conversioni di base. Operatori aritmetici nel sistema binario. Algoritmi, dati ed istruzioni, programmazione strutturata, Teorema di Böhm-Jacopini. Codifica degli algoritmi, linguaggio naturale, linguaggio di programmazione, pseudo-codice. Diagrammi di flusso. Algebra booleana. Linguaggi e grammatiche. Grammatiche formali. Backus-NaurForm (BNF). Linguaggi di programmazione: linguaggio macchina, Assembler, linguaggi di alto livello. Compilatori ed interpreti. Compilatori per linguaggio C, GCC.
- IL LINGUAGGIO C: Caratteristiche del linguaggio C, struttura di un programma C, principali librerie. Tipi di dato, tipi elementari. Stringhe e I/O da terminale. Operatori ed espressioni, precedenza ed associatività, overloading degli operatori, conversioni di tipo. Istruzioni semplici, istruzioni di controllo, blocchi, regole di visibilità. Costrutto if e costrutto switch-case. Costrutti while, do-while e for. Tipi di dato strutturato in C. Array: definizione, operatori, inizializzazione. Gestione della memoria, Heap. Puntatori e loro operatori. Implementazione di array con puntatore. Le strutture. Tipi enumerativi. Le unioni. Tipi di dato definiti dall'utente. Le funzioni. Passaggio dei parametri per valore e per riferimento, utilizzo dei puntatori. Gestione dei file, file di testo e binari, canali standard, uso dei buffer.