Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Geleitwort
15
Intro
17
1 Algorithmen
26
Knobelei zum Einstieg: Wo ist der Ausgang des Labyrinths?
27
Was ist ein Algorithmus?
28
Wie wird ein Algorithmus notiert?
30
Graphische Notation
31
Pseudocode
32
Schleifen
33
Verzweigungen
34
Logische Aussagen
37
Logisches NICHT
38
Logisches UND
38
Logisches ODER
39
Klammerung und Vorrangsregeln
39
Besondere Aussagen
40
Funktionen
41
Zusammenfassung und Einordnung
42
Aufgaben
43
Lösungen
44
2 Zahlen und Kodierungen
48
Knobelei zum Einstieg: Gib mir 31!
49
Zahlensysteme und Einheiten
50
Rechnen im Binärsystem
51
Einheiten
52
Kodierungen
54
Natürliche Zahlen
54
Ganze Zahlen
55
Kommazahlen
56
Text
57
Bilder
58
Zusammenfassung und Einordnung
60
Aufgaben
61
Lösungen
62
3 Datenstrukturen
64
Knobelei zum Einstieg: Speicherung gleicher Daten
65
Geordnete Daten
65
Repräsentation im Speicher
69
Andere Operationen auf den Datenstrukturen
71
Ungeordnete Daten
72
Datenzuordnungen
74
Zusammenfassung und Einordnung
75
Aufgaben
76
Lösungen
77
4 Einfache Sortieralgorithmen
80
Knobelei zum Einstieg: Bücher sortieren
81
Selection Sort
82
Insertion Sort
87
Bubble Sort
89
Ordnungen
92
Zusammenfassung und Einordnung
93
Aufgaben
95
Lösungen
96
5 Komplexität
100
Knobelei zum Einstieg: Schokolade aufteilen
101
Verschiedene Wege führen zum Ziel
102
Eingabegröße
103
Messen der Laufzeit
104
Berechnen der Laufzeit
104
Die Landau-Notation
107
Typische Laufzeiten
110
Zusammenfassung und Einordnung
112
Aufgaben
114
Lösungen
115
6 Effizientere Sortieralgorithmen
118
Knobelei zum Einstieg: Sortieren im Team
119
Merge Sort
119
Quick Sort
124
Rekursion und Divide and Conquer
127
Noch schneller sortieren
130
Zusammenfassung und Einordnung
132
Aufgaben
134
Lösungen
135
7 Suchen
140
Knobelei zum Einstieg: Finden und Sortieren
141
Lineare Suche
141
Binäre Suche
144
Suchbäume
147
Suchen in Suchbäumen
148
Hinzufügen eines Elements
150
Erstellen von Suchbäumen
151
Balancierte Bäume
152
Zusammenfassung und Einordnung
154
Aufgaben
155
Lösungen
156
8 Backtracking und Dynamische Programmierung
160
Knobelei zum Einstieg: Das Kistenproblem
161
Die perfekte Kiste
161
Branch and Bound
163
Dynamische Programmierung
164
Zusammenfassung und Einordnung
166
Aufgaben
167
Lösungen
168
9 Graphen
172
Knobelei zum Einstieg: Morgendliches Anziehen
173
Verknüpfte Daten
174
Varianten von Graphen
175
Gerichtete Kanten
175
Gewichtete Kanten
176
Beispiele für Graphen
177
Suchen und Bewegen in Graphen
178
Implementierung
179
Beispiel
180
Eigenschaften von Graphen
183
Bäume und Zyklenfreiheit
183
Zusammenhang
184
Eulersche Graphen
184
Planarität
185
Zusammenfassung und Einordnung
186
Aufgaben
187
Lösungen
189
10 Formale Sprachen
192
Knobelei zum Einstieg: Sätze erzeugen
193
Grammatiken
194
Reguläre Grammatiken
196
Kontextfreie Grammatiken
197
Höhere Grammatiken
197
Automaten
198
Endliche Automaten
198
Höhere Automaten
201
Sprachen und Mengenoperationen
202
Reguläre Ausdrücke
205
Zusammenfassung und Einordnung
207
Aufgaben
208
Lösungen
209
11 Objektorientierung
214
Knobelei zum Einstieg: Das Vereinsfest
215
Objekte und Klassen
216
Objektorientierte Programmierung
217
Vererbung
218
Abstrakte Klassen
219
Sichtbarkeiten
221
Zusammenfassung und Einordnung
223
Aufgaben
224
Lösungen
225
12 Datenbanken
232
Knobelei zum Einstieg: Max' Lieblingsfilme
233
Strukturierte Datenspeicherung
235
Grundbegriffe
236
Darstellung
237
Kardinalitäten
238
Schlüssel
239
Operationen auf Datenbanken
240
Daten abfragen und sortieren
240
Gruppierung von Daten
244
Einträge einfügen
246
Einträge modifizieren
246
Einträge löschen
246
Empfohlene Strukturierung von Daten
247
Ein Wert pro Zelle
248
Redundanzen vermeiden
250
Zusammenfassung und Einordnung
251
Aufgaben
253
Lösungen
255
13 Computer
260
Knobelei zum Einstieg: Addieren auf Hardware-Ebene
261
Logische Schaltungen
262
Die Knobelei als Schaltplan
263
Exklusives Oder
264
Algorithmen als logische Schaltungen
264
Hardware-Komponenten und ihr Zusammenspiel
265
Betriebssysteme
268
Kernfunktionen von Betriebssystemen
268
Verbreitete Betriebssysteme
271
Betriebssystemnahe Programmierung
271
Betriebssystemunabhängigkeit
272
Interpreter
273
Bytecode-Sprachen
273
Virtuelle Computer
274
Zusammenfassung und Einordnung
275
Aufgaben
276
Lösungen
277
14 Netzwerke
280
Knobelei zum Einstieg: Die Post des Kanzleramts
281
Eine mögliche Lösung für die Poststelle
282
Netzwerke
283
Clients und Server
283
Weitere Netzwerkgeräte
285
Internetstruktur
286
Services im Internet
288
Daten im Internet versenden
288
Adressauflösung zum Finden der IP-Adresse
289
Einheitliche Kommunikation
290
Eine HTTP-Anfrage
290
Die Antwort des Webservers
291
Die Anfrage zusätzlicher Ressourcen
292
Zusammenfassung und Einordnung
293
Aufgaben
294
Lösungen
295
15 Verschlüsselung
298
Knobelei zum Einstieg: Fdhvdu
299
Warum verschlüsseln?
300
Symmetrische Verschlüsselung
300
Asymmetrische Verschlüsselung
302
Hybridverfahren
304
Verschlüsselungen knacken
304
Zusammenfassung und Einordnung
307
Aufgaben
308
Lösungen
309
16 Softwareentwicklung
310
Algorithmus vs. Software
311
Die Werkzeuge eines Softwareentwicklers
313
Große Probleme lösen
315
Top-down-Methode
315
Bottom-up-Methode
316
Zusammenfassung und Einordnung
318
17 Teamarbeit
320
Knobelei zum Einstieg: Konflikte
321
Warum Teams?
322
Softwareentwicklung im Team
322
Kommunikation in Teams
323
Aufgabenverwaltung und Kommunikationswerkzeuge
325
Versionsverwaltung
325
Änderungen kleinschrittig speichern
326
Daten mit einem Server synchronisieren
326
Mit anderen Entwicklern zusammenarbeiten
327
Verschiedene Entwicklungszweige verfolgen
329
Zusammenfassung und Einordnung
330
Aufgaben
332
Lösungen
333
18 Fehler
334
Knobelei zum Einstieg: Auf Fehlersuche
335
Warum ist Software fehlerhaft?
336
Bugs
337
Verschiedene Fehlerarten
337
Kompilierungsfehler
337
Laufzeitfehler
338
Logische Fehler
339
Designfehler
340
Umgebungsfehler
342
Kommunikationsfehler
342
Techniken zur Fehlervermeidung
343
Testen
343
A/B Testing
344
Programmierstil
345
Pair Programming
345
Code Review
346
Zusammenfassung und Einordnung
346
Aufgaben
347
Lösungen
348
19 Hands-on: Programmieren mit Java
350
Die Programmiersprache Java
351
Hallo Leser
352
Ausführung
352
Erklärung des Programmcodes
353
Variablen
354
Klassen, Objekte und Methoden
355
Eigenschaften von Objekten
356
Verhalten von Objekten
356
Datentypen
359
Primitive Datentypen vs. Objektdatentypen
359
Zahlen
360
Wahrheitswerte
361
Zeichen und Zeichenketten
361
(Dynamische) Arrays
362
Listen, Queues und Stacks
364
Sets und Maps
365
Kontrollstrukturen
366
Verzweigungen
366
Schleifen
367
Fehlersuche
369
Eine kleine Werkzeugkiste
371
Aufgaben
372
Lösungen
374
20 Ethik in der Informatik
378
Recht und Ordnung
379
Software für den Überwachungsstaat
380
Die Hutfarben der Hacker
381
Informatik in der Wirtschaft
381
Automatisierung statt Arbeitsplatz
382
Netzneutralität
383
Der Wert persönlicher Daten
384
Gemeingüter und Open Source
385
Wissen für jedermann
386
Kostenlose und quelloffene Software
386
Probleme der Anarchie
387
Verantwortung für Technologie
388
Parteiische Informationen
389
Vermeidbare Fehlfunktionen
390
Unvermeidbare Folgen
391
IT-Gerechtigkeit
392
Der technisierte Mensch
393
Abhängigkeit von Technik
393
Arbeitszeit: 24/7
394
Zusammenfassung und Einordnung
394
21 Extro
396
Wie wird man Informatiker?
397
Ressourcen
402
Wie geht es weiter?
403
Index
405