Informatica
di Michael G. Schneider

Il volume si rivolge in primo luogo agli studenti di un corso di laurea in area scientifica o ingegneristica che debbano affrontare un unico insegnamento di Informatica, nel quale vengono passati in rassegna tutti i diversi aspetti della disciplina.
Il testo è organizzato per livelli, a partire dai fondamenti algoritmici, per passare alle architetture hardware e software, alla programmazione in linguaggi di alto livello, alle applicazioni; il capitolo conclusivo affronta le più rilevanti implicazioni etiche e sociali dell’informatica.
Scopo principale degli autori è presentare l’informatica non come un insieme di strumenti e tecnologie, ma come una disciplina di base, che gioca un ruolo fondamentale, al pari della chimica o della fisica, in qualsiasi percorso formativo in ambito scientifico e tecnologico.
Michael G. Schneider
Professor Emeritus, Macalester College.
Judith L. Gersting
Professor Emeritus, Indiana University - Purdue University at Indianapolis.
L’edizione italiana è a cura di Marcello Dalpasso
Professore Associato di Sistemi per l’Elaborazione dell’Informazione, Dipartimento di Ingegneria dell’Informazione, Scuola di Ingegneria, Università degli Studi di Padova.
Algoritmi, architetture, linguaggi, applicazioni
Pagine | 702 |
Data pubblicazione | Agosto 2020 |
Autori | Michael G. Schneider |
ISBN | 8891644817 |
ean | 9788891644817 |
Tipologia prodotto | Cartaceo |
Collana | Apogeo Education |
Editore | Maggioli Editore |
Dimensione | 19x23,5 |
Capitolo 1 Introduzione all’informatica 1.1 Introduzione 1.2 Definizione di informatica 1.3 Algoritmi 1.3.1 La definizione formale di algoritmo 1.3.2 L’importanza della soluzione algoritmica dei problemi 1.4 Una breve storia dell’informatica 1.4.1 Il primo periodo: fino al 1940 1.4.2 La nascita dei computer: 1940-1950 VON NEUMANN (1903-1957) 1.4.3 L’età moderna: dal 1950 a oggi 1.5 Organizzazione del testo Livello 1 I fondamenti algoritmici dell’informatica Capitolo 2 Progettazione di algoritmi 2.1 Introduzione 2.2 Rappresentazione di algoritmi 2.2.1 Pseudocodice 2.2.2 Operazioni da eseguire in sequenza 2.2.3 Operazioni condizionate e iterative 2.3 Esempi di soluzione algoritmica di problemi 2.3.1 Esempio 1: Procedi e calcola un prodotto 2.3.2 Esempio 2: Cerca, cerca, cerca 2.3.3 Esempio 3: Grande, maggiore, massimo 2.3.4 Esempio 4: Trovare una corrispondenza 2.4 Conclusioni Capitolo 3 L’efficienza degli algoritmi 3.1 Introduzione 3.2 Caratteristiche degli algoritmi 3.3 Misurare l’efficienza 3.3.1 Ricerca sequenziale 3.3.2 Ordine di grandezza – Ordine n 3.3.3 Ordinamento per selezione 3.3.4 Ordine di grandezza – Ordine n2 3.4 Analisi di algoritmi 3.4.1 Algoritmi di pulizia dei dati 3.4.2 Ricerca binaria 3.4.3 Pattern matching 3.4.4 Riassunto 3.5 Quando le cose sfuggono di mano 3.6 Riassunto del Livello 1 Livello 2 Il mondo dell’hardware Capitolo 4 Elementi costruttivi: numeri binari, logica booleana e porte 4.1 Introduzione 4.2 Il sistema di numerazione binario 4.2.1 Rappresentazione binaria di informazioni numeriche e di testo 4.2.2 Rappresentazione binaria di suoni e immagini 4.2.3 L’affidabilità della rappresentazione binaria 4.2.4 Dispositivi per la memorizzazione binaria 4.3 Logica booleana e porte 4.3.1 Logica booleana 4.3.2 Porte 4.4 Costruire circuiti per computer 4.4.1 Introduzione 4.4.2 Un algoritmo per la progettazione di circuiti 4.4.3 Esempi di progettazione e costruzione di circuiti 4.5 Circuiti di controllo 4.6 Conclusione Capitolo 5 Organizzazione dei sistemi di calcolo 5.1 Introduzione 5.2 I componenti di un sistema di calcolo 5.2.1 Memoria e cache 5.2.2 Ingresso/uscita e archiviazione di massa 5.2.3 L’unità aritmetico/logica 5.2.4 L’unità di controllo 5.3 Tutto insieme: l’architettura di Von Neumann 5.4 Macchine non di Von Neumann 5.5 Riassunto del Livello 2 Livello 3 La macchina virtuale Capitolo 6 Introduzione al software di sistema e alle macchine virtuali 6.1 Introduzione 6.2 Il software di sistema 6.2.1 La macchina virtuale 6.2.2 Diversi tipi di software di sistema 6.3 Assemblatori e linguaggio assembly 6.3.1 Il linguaggio assembly 6.3.2 Esempi di codice in linguaggio assembly 6.3.3 Traduzione e caricamento 6.4 Sistemi operativi 6.4.1 Funzioni di un sistema operativo 6.4.2 Panoramica storica dello sviluppo dei sistemi operativi 6.4.3 Il futuro Capitolo 7 Reti di calcolatori e cloud computing 7.1 Introduzione 7.2 I concetti di base delle 7.2.1 Linee di comunicazione 7.2.2 Reti locali (LAN) 7.2.3 WAN 7.2.4 Struttura globale di Internet 7.3 Protocolli di comunicazione 7.3.1 Strato fisico (Physical layer) 7.3.2 Strato di linea (Data Link layer) 7.3.3 Strato di rete (Network layer) 7.3.4 Strato di trasporto (Transport layer) 7.3.5 Strato applicativo (Application layer) 7.4 Servizi di rete 7.4.1 Comunicazioni interpersonali 7.4.2 Reti sociali 7.4.3 Condivisione di risorse 7.4.4 Commercio elettronico 7.5 Cloud computing 7.6 La storia di Internet e del World Wide Web 7.6.1 La rete Internet 7.6.2 Il World Wide Web 7.7 Conclusioni Capitolo 8 Sicurezza delle informazioni 8.1 Introduzione 8.2 Minacce e difese 8.2.1 Autenticazione e autorizzazione 8.2.2 Minacce dalla rete 8.2.3 Cappelli bianchi e cappelli neri 8.3 Cifratura 8.3.1 Panoramica sulla cifratura 8.3.2 Semplici algoritmi di cifratura 8.3.3 DES 8.3.4 Sistemi a chiave pubblica 8.4 Sicurezza nella trasmissione web 8.5 Calcolatori embedded 8.6 Conclusioni 8.7 Riassunto del Livello 3 Livello 4 Il mondo del software Capitolo 9 Introduzione alla programmazione in linguaggi di alto livello 9.1 L’evoluzione dei linguaggi 9.1.1 A che punto siamo e dove vogliamo andare? 9.1.2 Ritorno al binario 9.2 Una famiglia di linguaggi 9.3 Due esempi in cinque parti coordinate 9.3.1 Numero favorito 9.3.2 Pulizia dei dati (di nuovo) 9.4 Analisi delle caratteristiche 9.5 Soddisfazione delle aspettative 9.6 Il quadro generale: l’ingegneria del software 9.6.1 Aumento delle dimensioni 9.6.2 Il ciclo di sviluppo del software 9.6.3 Ambienti moderni 9.6.4 Sviluppo agile di software 9.7 Conclusione Capitolo 10 La Torre di Babele: i linguaggi di programmazione 10.1 Perché Babele? 10.2 Linguaggi procedurali 10.2.1 Plankalkül 10.2.2 Fortran 10.2.3 COBOL 10.2.4 C/C++ 10.2.5 Ada 10.2.6 Java 10.2.7 Python 10.2.8 C# e .NET 10.3 Linguaggi per problemi specifici 10.3.1 SQL 10.3.2 HTML 10.3.3 JavaScript 10.3.4 R 10.4 Paradigmi di programmazione alternativi 10.4.1 Programmazione funzionale 10.4.2 Programmazione logica 10.4.3 Programmazione parallela 10.5 Nuovi linguaggi, di continuo 10.5.1 Go 10.5.2 Swift 10.5.3 Milk 10.6 Conclusione Capitolo 11 Compilatori e traduzione di linguaggi 11.1 Introduzione 11.2 Il processo di compilazione 11.2.1 Fase I: Analisi lessicale 11.2.2 Fase II: Analisi sintattica (parsing) 11.2.3 Fase III: Semantica e generazione del codice 11.2.4 Fase IV: Ottimizzazione del codice 11.3 Conclusione Capitolo 12 Modelli di computazione 12.1 Introduzione 12.2 Cos’è un modello? 12.3 Un modello di agente di calcolo 12.3.1 Proprietà di un agente di calcolo 12.3.2 La Macchina di Turing 12.4 Il modello di un algoritmo 12.5 Esempi di macchine di Turing 12.5.1 Un invertitore di bit 12.5.2 Un generatore di bit di parità 12.5.3 Macchine per l’operazione di incremento con numeri unari 12.5.4 Una macchina per l’addizione unaria 12.6 La tesi di Church-Turing 12.7 Problemi irrisolvibili 12.8 Conclusione 12.9 Riassunto del Livello 4 Livello 5 Le applicazioni Capitolo 13 Simulazioni e modelli Introduzione Conclusione Capitolo 14 Ecommerce, basi di dati e data science Introduzione Conclusione Capitolo 15 Intelligenza artificiale Introduzione Conclusione Capitolo 16 Grafica e intrattenimento al computer: film, giochi e comunità virtuali . Introduzione Conclusione Riassunto del Livello 5 I capitoli 13-16 sono disponibili online Livello 6 Gli aspetti sociali Capitolo 17 Computer, informazione e società: prendere decisioni 17.1 Introduzione 17.2 Casi di studio 17.2.1 Caso 1 - Condivisione o furto? 17.2.2 Caso 2 - Intercettazioni legali: privacy o sicurezza? 17.2.3 Caso 3 – Hacker: nemici pubblici o seccatori stimolanti? 17.2.4 Caso 4 – Informazioni genetiche e ricerca medica 17.3 Vita privata e social media 17.4 Notizie false, politica e social media 17.5 Conclusione 17.6 Riassunto del Livello 6 Indice analitico Programmare in Python (online) Programmare in Java (online) Programmare in C++ (online) Programmare in C# (online) Programmare in Ada (online) Soluzioni degli esercizi (online)