Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Materialien zum Buch
17
Vorwort
19
1 Einführung
27
1.1 Informationstechnik, Informatik und EDV
27
1.1.1 Fachrichtungen der Informatik
28
1.1.2 Überblick über die IT-Ausbildung
29
1.2 Die Geschichte der Rechenmaschinen und Computer
37
1.2.1 Die Vorgeschichte
39
1.2.2 Die Entwicklung der elektronischen Rechner
41
1.2.3 Die Entwicklung der Programmiersprachen
50
1.3 Digitale Speicherung und Verarbeitung von Informationen
57
1.3.1 Digitale Bilddaten
58
1.3.2 Digitale Audiodaten
59
1.3.3 Digitale Speicherung von Text
60
1.4 Übungsaufgaben
61
2 Mathematische Grundlagen
65
2.1 Einführung in die Logik
65
2.1.1 Aussagen
66
2.1.2 Aussageformen
67
2.1.3 Logische Verknüpfungen
67
2.2 Mengenlehre und diskrete Mathematik
78
2.2.1 Mengenoperationen
78
2.2.2 Abbildungen
84
2.2.3 Folgen und Reihen
88
2.2.4 Beweise
90
2.3 Mathematische Verfahren im Alltag
93
2.3.1 Dreisatz
93
2.3.2 Lösen von Gleichungen und Gleichungssystemen
94
2.4 Grundlagen der Stochastik
97
2.4.1 Wahrscheinlichkeitsrechnung
97
2.4.2 Statistik
100
2.5 Grundlagen der linearen Algebra
104
2.5.1 Vektoren
106
2.5.2 Matrizen
110
2.6 Grundlagen der Analysis
118
2.6.1 Arten von Funktionen
119
2.6.2 Nullstellen und Ableitungen
121
2.7 Informationsspeicherung im Computer
123
2.7.1 Zahlensysteme
124
2.7.2 Bits und Bytes
129
2.8 Übungsaufgaben
134
2.8.1 Praktische Übungen
134
2.8.2 Kontrollfragen
136
3 Elektronische und technische Grundlagen
141
3.1 Elektronische Grundlagen
141
3.1.1 Einfache Schaltungen
142
3.1.2 Zusammengesetzte Schaltungen
145
3.2 Automatentheorien und -simulationen
149
3.2.1 Algorithmen
149
3.2.2 Die Turingmaschine
157
3.2.3 Der virtuelle Prozessor
162
3.3 Übungsaufgaben
168
3.3.1 Praktische Übungen
168
3.3.2 Kontrollfragen
168
4 Hardware
171
4.1 Grundlagen
171
4.2 Die Zentraleinheit
175
4.2.1 Aufbau und Aufgaben des Prozessors
177
4.2.2 Der Arbeitsspeicher
187
4.2.3 Das BIOS
189
4.2.4 Bus- und Anschlusssysteme
193
4.3 Die Peripherie
203
4.3.1 Massenspeicher
204
4.3.2 Eingabegeräte
218
4.3.3 Ausgabegeräte
221
4.3.4 Soundhardware
227
4.4 Übungsaufgaben
228
5 Netzwerkgrundlagen
235
5.1 Einführung
235
5.1.1 Was ist ein Netzwerk?
235
5.1.2 Entstehung der Netzwerke
237
5.2 Funktionsebenen von Netzwerken
243
5.2.1 Das OSI-Referenzmodell
243
5.2.2 Das Schichtenmodell der Internetprotokolle
246
5.2.3 Netzwerkkommunikation über die Schichten eines Schichtenmodells
248
5.3 Klassifizierung von Netzwerken
252
5.3.1 Die Reichweite des Netzwerks
252
5.3.2 Die Netzwerktopologie
254
5.3.3 Der Zentralisierungsgrad des Netzwerks
255
5.4 Netzwerkkarten, Netzwerkkabel und Netzzugangsverfahren
261
5.4.1 Die verschiedenen Ethernet-Standards
262
5.4.2 Drahtlose Netze
267
5.5 Datenfernübertragung
271
5.5.1 DSL-Dienste
273
5.5.2 Internetzugänge über Mobilfunk
274
5.6 Die TCP/IP-Protokollfamilie
275
5.6.1 Netzzugang in TCP/IP-Netzwerken
277
5.6.2 IP-Adressen, Datagramme und Routing
278
5.6.3 Transportprotokolle
305
5.6.4 Das Domain Name System (DNS)
311
5.6.5 Verschiedene Internetanwendungsprotokolle
315
5.7 Übungsaufgaben
327
6 Betriebssysteme
341
6.1 Entwicklung der Betriebssysteme
342
6.1.1 Die Vorgeschichte
342
6.1.2 Die Geschichte von Unix
344
6.1.3 PC-Betriebssysteme
346
6.2 Aufgaben und Konzepte
350
6.2.1 Allgemeiner Aufbau von Betriebssystemen
351
6.2.2 Prozessverwaltung
358
6.2.3 Speicherverwaltung
363
6.2.4 Dateisysteme
365
6.3 Windows
371
6.3.1 Allgemeine Informationen
371
6.3.2 Windows im Einsatz
378
6.3.3 Die Windows-Eingabeaufforderung
378
6.3.4 Die Windows PowerShell
381
6.3.5 Windows-Server
392
6.4 Linux und Unix
394
6.4.1 Arbeiten mit der Shell
396
6.4.2 Die wichtigsten Systembefehle
408
6.4.3 Automatisierung
417
6.5 Übungsaufgaben
424
7 Grundlagen der Programmierung
433
7.1 Python
435
7.1.1 Das erste Beispiel
437
7.1.2 Grundelemente von Python
438
7.1.3 Objektorientierung in Python
486
7.1.4 Die Python-Standardbibliothek einsetzen
516
7.2 Java
524
7.2.1 Einführungsbeispiel
525
7.2.2 Wichtige Merkmale von Java
528
7.2.3 Objektorientierte Programmierung mit Java
545
7.2.4 Weitere Java-Elemente
556
7.3 Übungsaufgaben
569
8 Algorithmen und Datenstrukturen
573
8.1 Algorithmen erarbeiten und implementieren
574
8.1.1 Einen Algorithmus planen
574
8.1.2 Den Algorithmus implementieren
577
8.1.3 Ein effizienterer GGT-Algorithmus
579
8.2 Datensammlungen sortieren
581
8.2.1 Bubblesort implementieren
581
8.2.2 Quicksort einsetzen
586
8.3 Nach Daten suchen
588
8.3.1 In Listen suchen
588
8.3.2 Nicht sequenzielle Datenstrukturen durchsuchen
590
8.4 Bäume und Graphen
610
8.4.1 Bäume verwenden
610
8.4.2 Graphen verwenden
621
8.5 Bedingungserfüllungsprobleme
632
8.5.1 Den Algorithmus für Bedingungserfüllungsprobleme implementieren
633
8.5.2 Anwendungsbeispiel: Ein Sudoku lösen
636
8.6 Übungsaufgaben
643
9 Weitere Konzepte der Programmierung
645
9.1 Reguläre Ausdrücke
645
9.1.1 Muster für reguläre Ausdrücke schreiben
647
9.1.2 Programmierung mit regulären Ausdrücken
650
9.2 Systemnahe Programmierung
663
9.2.1 Prozesse und Pipes
663
9.2.2 Threads
667
9.3 Einführung in die Netzwerkprogrammierung
671
9.3.1 Die Berkeley Socket API
671
9.3.2 Ein praktisches Beispiel
677
9.4 Externe Module und Abhängigkeiten
680
9.4.1 Externe Python-Module installieren
680
9.4.2 NumPy verwenden
681
9.4.3 Das Java-Build-Tool Maven
687
9.5 Übungsaufgaben
690
10 Datenanalyse, Machine Learning, künstliche Intelligenz
693
10.1 Einführung
694
10.1.1 Was ist künstliche Intelligenz?
694
10.1.2 Machine Learning im Überblick
698
10.2 Daten auswählen und aufbereiten
699
10.2.1 Textdaten aufbereiten
700
10.2.2 Bilddaten vorbereiten
705
10.2.3 Numerische Daten visualisieren
708
10.3 Konkrete Machine-Learning-Verfahren
716
10.3.1 Lineare Regression
717
10.3.2 Logistische Regression
723
10.3.3 K-Means-Clustering
725
10.3.4 Künstliche neuronale Netzwerke
727
10.4 Übungsaufgaben
730
11 Software-Engineering
733
11.1 Überblick
734
11.1.1 Der Entwicklungszyklus
735
11.1.2 Planung und Analyse
736
11.1.3 Entwurf
742
11.1.4 Implementierung und Test
743
11.1.5 Dokumentation
745
11.1.6 Konkrete Entwicklungsverfahren
746
11.2 Werkzeuge
750
11.2.1 UML
750
11.2.2 Entwurfsmuster
757
11.2.3 Unit-Tests
772
11.2.4 Weitere nützliche Software
779
11.3 Übungsaufgaben
784
12 Geschäftsprozessanalyse
787
12.1 Überblick
787
12.1.1 Historische Entwicklung
788
12.1.2 Geschäftsprozesse
790
12.1.3 Einteilung der Aufgabenbereiche im Prozessmanagement
791
12.2 Prozesse modellieren mit BPMN
793
12.2.1 BPMN 2.0 im Überblick
794
12.2.2 Beispiele für BPMN-Diagramme
798
12.3 Übungsaufgaben
803
13 Datenbanken
805
13.1 Die verschiedenen Datenbanktypen
806
13.1.1 Einzeltabellendatenbanken
808
13.1.2 Relationale Datenbanken
809
13.1.3 Objektorientierte Datenbanken
817
13.2 MySQL - ein konkretes RDBMS
820
13.2.1 MySQL installieren und konfigurieren
821
13.2.2 Erste Schritte mit dem »mysql«-Client
824
13.3 SQL-Abfragen
825
13.3.1 Datenbanken und Tabellen erzeugen
826
13.3.2 Auswahlabfragen
831
13.3.3 Einfüge-, Lösch- und Änderungsabfragen
835
13.3.4 Transaktionen
837
13.4 MySQL-Administration
838
13.4.1 »mysqladmin«
838
13.4.2 Zugangsverwaltung
839
13.4.3 Import und Export von Daten, Backups
844
13.4.4 Konfigurationsdateien
847
13.4.5 Log-Dateien
848
13.4.6 Replikation
849
13.5 Grundlagen der Datenbankprogrammierung
851
13.6 CouchDB im Überblick
856
13.6.1 Das Konzept von CouchDB
857
13.6.2 Praktischer Einstieg in CouchDB
857
13.7 Übungsaufgaben
860
13.7.1 Praktische Übungen
860
13.7.2 Kontrollfragen
861
14 Server für Webanwendungen
865
14.1 HTTP im Überblick
865
14.1.1 Ablauf der HTTP-Kommunikation
866
14.1.2 HTTP-Statuscodes
870
14.1.3 HTTP-Header
874
14.2 Der Webserver Apache
879
14.2.1 Apache im Überblick
880
14.2.2 Apache-Module
881
14.2.3 Apache installieren
883
14.2.4 Apache konfigurieren
886
14.2.5 Andere Webserver im Überblick
898
14.3 PHP installieren und einrichten
899
14.3.1 PHP installieren
899
14.3.2 Die PHP-Konfigurationsdatei »php.ini«
903
14.4 Virtualisierung und Container
906
14.4.1 Virtualisierungslösungen im Überblick
907
14.4.2 VirtualBox als konkretes Beispiel
908
14.4.3 Container-Virtualisierung mit Docker
912
14.4.4 Cloud Computing
915
14.5 Übungsaufgaben
917
14.5.1 Praktische Übungen
917
14.5.2 Kontrollfragen
918
15 Weitere Internet-Serverdienste
921
15.1 Namens- und Verzeichnisdienste
921
15.1.1 Der DNS-Server BIND
921
15.1.2 Der Verzeichnisdienst OpenLDAP
928
15.2 Die »Meta-Server« inetd und xinetd
938
15.2.1 »inetd«
938
15.2.2 »xinetd«
939
15.3 Übungsaufgaben
941
16 XML
945
16.1 Der Aufbau von XML-Dokumenten
947
16.1.1 Die grundlegenden Bestandteile von XML-Dokumenten
948
16.1.2 Wohlgeformtheit
955
16.2 DTDs und XML Schema
958
16.2.1 Document Type Definitions (DTDs)
958
16.2.2 Namensräume
969
16.2.3 XML Schema
971
16.3 XSLT
974
16.3.1 Ein einfaches Beispiel
976
16.3.2 Wichtige XSLT- und XPath-Elemente
978
16.4 Grundlagen der XML-Programmierung
981
16.4.1 XML-Verarbeitungsmethoden im Überblick
982
16.4.2 Das Python-Modul »xml.etree«
984
16.5 Übungsaufgaben
987
16.5.1 Praktische Übungen
987
16.5.2 Kontrollfragen
988
17 Weitere Datei- und Datenformate
993
17.1 Textdateien und Zeichensätze
993
17.1.1 Das Problem des Zeilenumbruchs
994
17.1.2 Zeichensätze
996
17.1.3 Textbasierte Dateiformate
1003
17.2 Binäre Dateiformate
1015
17.2.1 Datenkomprimierung
1017
17.2.2 Bilddateiformate
1018
17.2.3 Multimedia-Dateiformate
1022
17.2.4 Archivdateien verwenden
1024
17.3 Übungsaufgaben
1027
18 Webseitenerstellung mit HTML und CSS
1031
18.1 HTML und XHTML
1032
18.1.1 Die Grundstruktur von HTML-Dokumenten
1033
18.1.2 Textstrukturierung und Textformatierung
1035
18.1.3 Listen und Aufzählungen
1043
18.1.4 Hyperlinks
1046
18.1.5 Bilder in Webseiten einbetten
1051
18.1.6 Tabellen
1055
18.1.7 Formulare
1062
18.1.8 Einbetten von Multimedia-Dateien
1070
18.1.9 Metatags und Suchmaschinen
1071
18.2 Cascading Style Sheets (CSS)
1074
18.2.1 Stylesheets platzieren
1075
18.2.2 Stylesheet-Wertangaben
1078
18.2.3 Stylesheet-Eigenschaften
1080
18.2.4 Layer erzeugen und positionieren
1085
18.3 Übungsaufgaben
1094
19 Webserveranwendungen
1103
19.1 PHP
1103
19.1.1 Sprachgrundlagen
1104
19.1.2 Klassen und Objekte
1122
19.1.3 Include-Dateien, Autoloader und Namespaces
1141
19.1.4 Webspezifische Funktionen
1143
19.1.5 Auf MySQL-Datenbanken zugreifen
1149
19.1.6 Unit-Tests mit PHPUnit
1161
19.1.7 PHP als Kommandozeilensprache verwenden
1170
19.2 Eine REST-API implementieren
1171
19.2.1 Die API im Überblick
1172
19.2.2 Die Grundarchitektur der API
1175
19.2.3 Der komplette Quellcode
1177
19.2.4 Die API testen
1199
19.3 Übungsaufgaben
1200
20 JavaScript und Ajax
1203
20.1 Grundlagen
1204
20.1.1 JavaScript im HTML-Dokument
1204
20.1.2 Fehler suchen mit der JavaScript-Konsole
1207
20.1.3 Ausdrücke und Operationen
1208
20.1.4 Funktionen
1213
20.1.5 Objektorientiertes JavaScript
1217
20.1.6 Formulare und Event-Handler
1220
20.1.7 Datum und Uhrzeit verwenden
1232
20.1.8 Bilder manipulieren
1235
20.1.9 Browser- und Fensteroptionen
1238
20.2 Das Document Object Model (DOM)
1244
20.2.1 W3C-DOM im Überblick
1245
20.2.2 Eine DOM-Baum-Anzeige
1248
20.2.3 DOM in der Praxis anwenden
1251
20.2.4 Dokumentinhalte verändern und austauschen
1253
20.2.5 »data«-Attribute verwenden
1256
20.3 Ajax
1257
20.3.1 Die erste Ajax-Anwendung
1258
20.3.2 Datenaustauschformate: XML und JSON
1264
20.4 Die JavaScript-Bibliothek React.js
1265
20.4.1 Einführungsbeispiel
1265
20.4.2 Eigene React-Child-Komponenten definieren
1271
20.4.3 Einen API-Client mit React schreiben
1275
20.4.4 Der REST-Client im Detail
1278
20.5 Übungsaufgaben
1290
21 Computer- und Netzwerksicherheit
1293
21.1 PC-Gefahren
1294
21.1.1 Viren und Würmer
1294
21.1.2 Trojaner und Backdoors
1300
21.1.3 Weitere Schädlinge
1301
21.2 Netzwerk- und Serversicherheit
1307
21.2.1 Servergefahren
1307
21.2.2 Wichtige Gegenmaßnahmen
1309
21.2.3 Kryptografie
1315
21.3 Übungsaufgaben
1318
Anhang
1321
A Glossar
1321
B Zweisprachige Wortliste
1333
B.1 Englisch - Deutsch
1333
B.2 Deutsch - Englisch
1338
C Kommentiertes Literatur- und Linkverzeichnis
1345
C.1 Allgemeine Einführungen und Überblicke
1345
C.2 Mathematische Grundlagen
1346
C.3 Elektronische und technische Grundlagen
1347
C.4 Hardware
1348
C.5 Netzwerkgrundlagen
1348
C.6 Betriebssysteme
1348
C.7 Grundlagen der Programmierung
1350
C.8 Algorithmen und Datenstrukturen
1350
C.9 Weitere Konzepte der Programmierung
1351
C.10 Datenanalyse, Machine Learning, künstliche Intelligenz
1351
C.11 Software-Engineering
1353
C.12 Geschäftsprozessanalyse
1354
C.13 Datenbanken
1354
C.14 Server für Webanwendungen
1355
C.15 XML
1355
C.16 Webseitenerstellung mit HTML und CSS
1355
C.17 Webserveranwendungen
1356
C.18 JavaScript und Ajax
1356
C.19 Computer- und Netzwerksicherheit
1357
Index
1359