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
38
1.2.1 Die Vorgeschichte
40
1.2.2 Die Entwicklung der elektronischen Rechner
42
1.2.3 Die Entwicklung der Programmiersprachen
51
1.3 Digitale Speicherung und Verarbeitung von Informationen
58
1.3.1 Digitale Bilddaten
60
1.3.2 Digitale Audiodaten
61
1.3.3 Digitale Speicherung von Text
62
1.4 Übungsaufgaben
62
2 Mathematische Grundlagen
67
2.1 Einführung in die Logik
67
2.1.1 Aussagen
68
2.1.2 Aussageformen
69
2.1.3 Logische Verknüpfungen
70
2.2 Mengenlehre und diskrete Mathematik
81
2.2.1 Mengenoperationen
82
2.2.2 Abbildungen
88
2.2.3 Folgen und Reihen
92
2.2.4 Beweise
94
2.3 Mathematische Verfahren im Alltag
97
2.3.1 Dreisatz
97
2.3.2 Lösen von Gleichungen und Gleichungssystemen
98
2.4 Grundlagen der Stochastik
101
2.4.1 Wahrscheinlichkeitsrechnung
101
2.4.2 Statistik
104
2.5 Grundlagen der linearen Algebra
109
2.5.1 Vektoren
110
2.5.2 Matrizen
114
2.6 Grundlagen der Analysis
123
2.6.1 Arten von Funktionen
124
2.6.2 Nullstellen und Ableitungen
125
2.7 Informationsspeicherung im Computer
128
2.7.1 Zahlensysteme
128
2.7.2 Bits und Bytes
134
2.8 Übungsaufgaben
139
2.8.1 Praktische Übungen
139
2.8.2 Kontrollfragen
141
3 Technische und theoretische Grundlagen
147
3.1 Elektronische Grundlagen
147
3.1.1 Einfache Schaltungen
148
3.1.2 Zusammengesetzte Schaltungen
151
3.2 Automatentheorien und -simulationen
156
3.2.1 Algorithmen
156
3.2.2 Die Turingmaschine
164
3.2.3 Der virtuelle Prozessor
169
3.3 Übungsaufgaben
175
3.3.1 Praktische Übungen
175
3.3.2 Kontrollfragen
176
4 Hardware
179
4.1 Grundlagen
179
4.2 Die Zentraleinheit
183
4.2.1 Aufbau und Aufgaben des Prozessors
185
4.2.2 Der Arbeitsspeicher
195
4.2.3 Das BIOS
197
4.2.4 Bus- und Anschlusssysteme
201
4.3 Die Peripherie
212
4.3.1 Massenspeicher
213
4.3.2 Eingabegeräte
226
4.3.3 Ausgabegeräte
230
4.3.4 Soundhardware
235
4.4 Übungsaufgaben
236
5 Netzwerkgrundlagen
243
5.1 Einführung
243
5.1.1 Was ist ein Netzwerk?
243
5.1.2 Entstehung der Netzwerke
245
5.2 Funktionsebenen von Netzwerken
251
5.2.1 Das OSI-Referenzmodell
251
5.2.2 Das Schichtenmodell der Internetprotokolle
254
5.2.3 Netzwerkkommunikation über die Schichten eines Schichtenmodells
256
5.3 Klassifizierung von Netzwerken
260
5.3.1 Die Reichweite des Netzwerks
260
5.3.2 Die Netzwerktopologie
262
5.3.3 Der Zentralisierungsgrad des Netzwerks
263
5.4 Netzwerkkarten, Netzwerkkabel und Netzzugangsverfahren
269
5.4.1 Die verschiedenen Ethernet-Standards
270
5.4.2 Drahtlose Netze
275
5.5 Datenfernübertragung
280
5.5.1 DSL-Dienste
281
5.5.2 Internetzugänge über Mobilfunk
283
5.6 Die TCP/IP-Protokollfamilie
284
5.6.1 Netzzugang in TCP/IP-Netzwerken
286
5.6.2 IP-Adressen, Datagramme und Routing
287
5.6.3 Transportprotokolle
313
5.6.4 Das Domain Name System (DNS)
319
5.6.5 Verschiedene Internetanwendungsprotokolle
324
5.7 Übungsaufgaben
336
6 Betriebssysteme
349
6.1 Entwicklung der Betriebssysteme
350
6.1.1 Die Vorgeschichte
350
6.1.2 Die Geschichte von Unix
352
6.1.3 PC-Betriebssysteme
354
6.2 Aufgaben und Konzepte
358
6.2.1 Allgemeiner Aufbau von Betriebssystemen
359
6.2.2 Prozessverwaltung
366
6.2.3 Speicherverwaltung
371
6.2.4 Dateisysteme
373
6.3 Windows
380
6.3.1 Allgemeine Informationen
380
6.3.2 Die Windows-Eingabeaufforderung
386
6.3.3 Die PowerShell
389
6.3.4 Windows-Server
401
6.4 Linux und Unix
402
6.4.1 Arbeiten mit der Shell
405
6.4.2 Die wichtigsten Systembefehle
417
6.4.3 Automatisierung
426
6.5 Übungsaufgaben
433
7 Grundlagen der Programmierung
443
7.1 Python
445
7.1.1 Das erste Beispiel
447
7.1.2 Grundelemente von Python
448
7.1.3 Objektorientierung in Python
496
7.1.4 Die Python-Standardbibliothek einsetzen
525
7.2 Java
533
7.2.1 Einführungsbeispiel
535
7.2.2 Wichtige Merkmale von Java
538
7.2.3 Objektorientierte Programmierung mit Java
556
7.2.4 Weitere Java-Elemente
567
7.3 Übungsaufgaben
583
8 Algorithmen und Datenstrukturen
587
8.1 Algorithmen erarbeiten und implementieren
588
8.1.1 Einen Algorithmus planen
588
8.1.2 Den Algorithmus implementieren
591
8.1.3 Ein effizienterer GGT-Algorithmus
593
8.2 Datensammlungen sortieren
595
8.2.1 Bubblesort implementieren
595
8.2.2 Quicksort einsetzen
600
8.3 Nach Daten suchen
602
8.3.1 In Listen suchen
602
8.3.2 Nicht sequenzielle Datenstrukturen durchsuchen
604
8.4 Bäume und Graphen
623
8.4.1 Bäume verwenden
624
8.4.2 Graphen verwenden
634
8.5 Bedingungserfüllungsprobleme
646
8.5.1 Den Algorithmus für Bedingungserfüllungsprobleme implementieren
647
8.5.2 Anwendungsbeispiel: Ein Sudoku lösen
650
8.6 Übungsaufgaben
657
9 Weitere Konzepte der Programmierung
659
9.1 Reguläre Ausdrücke
659
9.1.1 Muster für reguläre Ausdrücke schreiben
661
9.1.2 Programmierung mit regulären Ausdrücken
664
9.2 Systemnahe Programmierung
677
9.2.1 Prozesse und Pipes
677
9.2.2 Threads
681
9.3 Einführung in die Netzwerkprogrammierung
685
9.3.1 Die Berkeley Socket API
685
9.3.2 Ein praktisches Beispiel
691
9.4 Externe Module und Abhängigkeiten
694
9.4.1 Externe Python-Module installieren
694
9.4.2 NumPy verwenden
695
9.4.3 Das Java-Build-Tool Maven
701
9.5 Übungsaufgaben
704
10 Datenanalyse, Machine Learning, künstliche Intelligenz
707
10.1 Einführung
708
10.1.1 Was ist künstliche Intelligenz?
708
10.1.2 Machine Learning im Überblick
712
10.2 Daten auswählen, aufbereiten und analysieren
715
10.2.1 Textdaten aufbereiten
715
10.2.2 Bilddaten vorbereiten
720
10.2.3 Numerische Daten visualisieren
724
10.2.4 Datenanalyse mit pandas und die Visualisierung mit Seaborn
731
10.3 Konkrete Machine-Learning-Verfahren
739
10.3.1 Lineare Regression
740
10.3.2 Logistische Regression
746
10.3.3 K-Means-Clustering
751
10.4 Künstliche neuronale Netzwerke
758
10.4.1 Arten künstlicher neuronaler Netzwerke
758
10.4.2 Large Language Models
762
10.4.3 Grundlegende Funktionsweise
764
10.4.4 Deep Learning
774
10.5 Übungsaufgaben
777
11 Software-Engineering
779
11.1 Überblick
780
11.1.1 Der Entwicklungszyklus
781
11.1.2 Planung und Analyse
782
11.1.3 Entwurf
788
11.1.4 Implementierung und Test
789
11.1.5 Dokumentation
791
11.1.6 Konkrete Entwicklungsverfahren
792
11.2 Werkzeuge
797
11.2.1 UML
797
11.2.2 Entwurfsmuster
804
11.2.3 Unit-Tests
819
11.2.4 Weitere nützliche Software
826
11.3 Übungsaufgaben
831
12 Geschäftsprozessanalyse
835
12.1 Überblick
835
12.1.1 Historische Entwicklung
836
12.1.2 Geschäftsprozesse
838
12.1.3 Einteilung der Aufgabenbereiche im Prozessmanagement
839
12.2 Prozesse modellieren mit BPMN
841
12.2.1 BPMN 2.0 im Überblick
842
12.2.2 Beispiele für BPMN-Diagramme
847
12.3 Mit einem ERP- und CRM-System arbeiten
851
12.3.1 Gängige Fähigkeiten von Unternehmenssoftware
851
12.3.2 Das Open-Source-ERP-System dolibarr
853
12.4 Übungsaufgaben
858
13 Datenbanken
859
13.1 Die verschiedenen Datenbanktypen
860
13.1.1 Relationale Datenbanken
862
13.1.2 Objektorientierte Datenbanken
870
13.2 Mit relationalen Datenbanken arbeiten
873
13.2.1 MySQL im Einsatz
873
13.2.2 SQL-Abfragen im Überblick
874
13.2.3 Datenbanken und Tabellen erzeugen
875
13.2.4 Auswahlabfragen
880
13.2.5 Einfüge-, Lösch- und Änderungsabfragen
884
13.2.6 Transaktionen
886
13.3 Mit NoSQL-Datenbanken arbeiten
887
13.3.1 CouchDB als konkretes Beispiel
887
13.3.2 Praktischer Einstieg in CouchDB
888
13.4 Grundlagen der Datenbankprogrammierung
891
13.4.1 Die Java-Datenbankschnittstelle JDBC
891
13.4.2 Mit dem MySQL-Server kommunizieren
892
13.5 Übungsaufgaben
896
13.5.1 Praktische Übungen
896
13.5.2 Kontrollfragen
897
14 Server für Webanwendungen
901
14.1 HTTP im Überblick
901
14.1.1 Ablauf der HTTP-Kommunikation
901
14.1.2 HTTP-Statuscodes
905
14.1.3 HTTP-Header
909
14.2 Der Webserver Apache 2
914
14.2.1 Apache im Überblick
915
14.2.2 Apache-Module
916
14.2.3 Apache starten und steuern
918
14.2.4 Apache konfigurieren
919
14.2.5 PHP einrichten
931
14.2.6 Andere Webserver im Überblick
935
14.3 Übungsaufgaben
937
14.3.1 Praktische Übungen
937
14.3.2 Kontrollfragen
937
15 Weitere Internet-Serverdienste
941
15.1 Namens- und Verzeichnisdienste
941
15.1.1 Der DNS-Server BIND
941
15.1.2 Der Verzeichnisdienst OpenLDAP
947
15.2 Die »Meta-Server« inetd und xinetd
956
15.2.1 »inetd«
957
15.2.2 »xinetd«
958
15.3 Übungsaufgaben
960
16 Virtualisierung, Container und Cloud Computing
963
16.1 Virtualisierung
963
16.1.1 Überblick
964
16.1.2 VirtualBox als konkretes Beispiel
965
16.2 Container-Infrastrukturen
969
16.2.1 Docker-Grundlagen
969
16.2.2 Praxisbeispiel: eine PHP-Anwendung als Container bereitstellen
972
16.3 Cloud Computing
975
16.4 Übungsaufgaben
977
17 Datei- und Datenformate
979
17.1 Textdateien und Zeichensätze
979
17.1.1 Das Problem des Zeilenumbruchs
980
17.1.2 Zeichensätze
981
17.2 Textbasierte Dateiformate
988
17.2.1 XML
989
17.2.2 CSV
1002
17.2.3 JSON
1006
17.2.4 Markdown
1008
17.2.5 LaTeX
1011
17.3 Binäre Dateiformate
1014
17.3.1 Datenkomprimierung
1016
17.3.2 Bilddateiformate
1017
17.3.3 Multimedia-Dateiformate
1020
17.3.4 Archivdateien verwenden
1022
17.4 Übungsaufgaben
1026
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
1040
18.1.4 Hyperlinks
1044
18.1.5 Bilder in Webseiten einbetten
1049
18.1.6 Tabellen
1052
18.1.7 Formulare
1055
18.1.8 Einbetten von Multimedia-Dateien
1063
18.1.9 Metatags und Suchmaschinen
1063
18.2 Cascading Style Sheets (CSS)
1067
18.2.1 Stylesheets platzieren
1067
18.2.2 Selektoren
1069
18.2.3 Stylesheet-Wertangaben
1071
18.2.4 Stylesheet-Eigenschaften
1073
18.2.5 Layer erzeugen und positionieren
1078
18.3 Webseiten-Layout und -Design
1081
18.3.1 Grundlagen
1081
18.3.2 Layouts und Element-Anzeigemodi
1085
18.3.3 Media Queries und Responsive Design
1088
18.3.4 Barrierefreiheit
1089
18.4 Übungsaufgaben
1091
19 Webserveranwendungen
1099
19.1 PHP
1099
19.1.1 Sprachgrundlagen
1100
19.1.2 Klassen und Objekte
1118
19.1.3 Include-Dateien, Autoloader und Namespaces
1136
19.1.4 Webspezifische Funktionen
1139
19.1.5 Auf MySQL-Datenbanken zugreifen
1144
19.1.6 Unit-Tests mit PHPUnit
1156
19.1.7 PHP als Kommandozeilensprache verwenden
1165
19.2 Eine REST-API implementieren
1166
19.2.1 Die API im Überblick
1167
19.2.2 Die Grundarchitektur der API
1170
19.2.3 Der komplette Quellcode
1172
19.2.4 Die API testen
1194
19.3 Übungsaufgaben
1195
20 JavaScript und Ajax
1199
20.1 Grundlagen
1200
20.1.1 JavaScript im HTML-Dokument
1200
20.1.2 Fehler suchen mit der JavaScript-Konsole
1204
20.1.3 Ausdrücke und Operationen
1204
20.1.4 Funktionen
1209
20.1.5 Objektorientiertes JavaScript
1213
20.1.6 Formulare und Event-Handler
1216
20.1.7 Datum und Uhrzeit verwenden
1228
20.1.8 Bilder manipulieren
1231
20.1.9 Browser- und Fensteroptionen
1234
20.2 Das Document Object Model (DOM)
1240
20.2.1 W3C-DOM im Überblick
1241
20.2.2 Eine DOM-Baum-Anzeige
1244
20.2.3 DOM in der Praxis anwenden
1247
20.2.4 Dokumentinhalte verändern und austauschen
1250
20.2.5 »data«-Attribute verwenden
1252
20.3 Ajax und die Fetch API
1253
20.3.1 Ajax
1253
20.3.2 Die Fetch API als moderne Alternative
1261
20.4 Die JavaScript-Bibliothek React.js
1264
20.4.1 Einführungsbeispiel
1264
20.4.2 Eigene React-Child-Komponenten definieren
1270
20.4.3 Einen API-Client mit React schreiben
1274
20.5 Übungsaufgaben
1286
21 Sicherheit
1289
21.1 Endgeräte schützen
1290
21.1.1 Viren und Würmer
1290
21.1.2 Trojaner und Backdoors
1296
21.1.3 Weitere Schädlinge
1297
21.2 Netzwerk- und Serversicherheit
1303
21.2.1 Servergefahren
1303
21.2.2 Wichtige Gegenmaßnahmen
1305
21.2.3 Kryptografie
1311
21.3 Übungsaufgaben
1317
Anhang
1321
A Glossar
1323
B Zweisprachige Wortliste
1337
C Kommentiertes Literatur- und Linkverzeichnis
1349
Index
1363