Programmieren, WS15/16, Vorlesung
By Karlsruher Institut für Technologie (KIT)
Um sich einen Audio-Podcast anzuhören, fahre mit der Maus über den Titel und klicke auf "Wiedergabe". Öffne iTunes, um Podcasts zu laden und zu abonnieren.
Beschreibung
Inhalte und Lernziele: Die Studierenden lernen grundlegende Strukturen der Programmiersprache Java kennen und anwenden, insbesondere Kontrollstrukturen, einfache Datenstrukturen, Umgang mit Objekten, und Implementierung elementarer Algorithmen. Sie erwerben grundlegende Kenntnisse in Programmiermethodik und die Fähigkeit zur autonomen Erstellung kleiner bis mittlerer, lauffähiger Java-Programme. Objekte und Klassen | Typen, Werte und Variablen | Methoden | Kontrollstrukturen | Rekursion | Referenzen, Listen | Vererbung | Ein/-Ausgabe | Exceptions | Programmiermethodik | Implementierung elementarer Algorithmen (z.B. Sortierverfahren) in Java Vorlesungsaufzeichnung: KIT | WEBCAST: http://webcast.kit.edu
Name | Beschreibung | Erschienen | Preis | ||
---|---|---|---|---|---|
1 | CleanVideoProgrammieren, WS 2015/2016, gehalten am 27.01.2016, Vorlesung 12 | 12: Vorlesung | 0:00:00 Starten 0:00:10 Der Begriff ""Bug"" 0:03:44 Failure-Fault-Defect-Error-Bug 0:06:11 Debugging 0:07:20 Schritte der klassischen wissenschaftlichen Methode 0:11:08 Wissenschaftliche Methode angewendet auf Debugging 0:13:02 Debugging-Stabilisierung des Fehlers 0:17:59 Tipps für Fehler 0:35:15 Syntaxfehler 0:38:17 Zusammenfassung | 16.2.2016 | Gratis | In iTunes ansehen |
2 | CleanVideoProgrammieren, WS 2015/2016, gehalten am 10.02.2016, Vorlesung 14 | 14: Vorlesung | 0:00:00 Starten 0:01:20 Bvorzugte Polymorphie gegenüber instanceof 0:01:50 Beispiel für schlechtes Design 0:05:28 Beispiel für ein geeignetes Design 0:07:20 Prinzip 2: Unterscheidung zwischen == und equals 0:07:30 Häufige Fragen 0:07:33 Beispiel 0:10:21 == vs. equals 0:10:29 Weiteres Beispiel 0:13:46 Prinzip 3: Die Standardimplementierung von equals überschreiben 0:14:54 Beispiel 0:17:11 Implementierung der equals-Methode 0:17:29 Abhilfe durch eigene Implementierung 0:21:07 Probleme der vorherigen Implementierung 0:24:16 Mögliche Lösungsideen 0:26:11 Beispiel - MyStringBuffer 0:28:52 Beispiel - Golfball 0:30:05 Prinzip 4: Vorsicht bei der Implementierung von equals 0:30:10 Wichtige Fragen bei der Implementierung 0:31:01 Prinzip 5: super.equals verwenden 0:31:12 Vererbung und equals 0:31:28 Beispiel für einen fehlerhaften Code 0:33:19 Lösung 0:34:10 Alternative Lösung 0:35:29 Mehrere Ebenen in der Vererbungshierarchie 0:36:19 Prinzip 6: Vorsicht bei der Verwendung von intanceof in equals 0:36:41 Vergleich der Objekte 0:38:22 Motivierendes Beispiel für Verhaltensänderung 0:42:18 Zusammenfassung 0:43:46 Was noch fehlt | 15.2.2016 | Gratis | In iTunes ansehen |
3 | CleanVideoProgrammieren, WS 2015/2016, gehalten am 03.02.2016, Vorlesung 13 | 13: Vorlesung | 0:00:00 Starten 0:01:31 Motivation 0:03:20 Halde 0:06:54 Stapelspeicher 0:08:22 Einsatz des Stapelspeichers 0:12:21 Speichereinstellung 0:13:24 Einteilung des Datenbereichs 0:14:01 Sprünge 0:18:52 Kopfgesteuerte Schleife 0:19:28 Adressierung durch 3 Basisadressen 0:20:28 Laufzeitkeller 0:22:43 Schritte beim Aufruf einer Methode 0:23:44 Schritte beim Verlassen der Methode 0:26:20 Best Practices 0:27:07 Prinzip 1: Bevorzuge Polymorphie gegenüber instanceof 0:27:40 Beispiel für ein schlechtes Design 0:31:14 Beispiel für ein geeignetes Design 0:32:31 Prinzip 2: Unterscheidung zwischen == und equals 0:32:59 Beispiel 0:34:53 == vs. equals 0:35:58 Weiteres Beispiel 0:37:58 Prinzip 3: Die Standardimplementierung von equals überschreiben 0:38:07 Beispiel 0:39:55 Implementierung der equals-Methode 0:42:04 Abhilfe durch eigene Implementierung 0:44:49 Probleme der vorherigen Implementierung 0:45:47 Mögliche Lösungsideen 0:47:35 Beispiel - MyStringBuffer 0:51:26 Beispiel - Golfball 0:52:15 Mögliche Lösungsidee Nr. 4 0:53:47 Prinzip 4: Vorsicht bei der Implementierung von equals 0:55:19 Prinzip 5: super.equals verwenden 0:56:16 Beispiel für einen fehlerhaften Code 0:59:28 Lösung 1:00:28 Alternative Lösung 1:02:05 Mehrere Ebenen in der Vererbungshierarchie 1:03:26 Prinzip 6: Vorsicht bei der Verwendung von instanceof in equals 1:03:40 Vergleich der Objekte 1:06:34 Motivierendes Beispiel für Verhaltensänderung 1:07:22 Beispiel für instanceof in equals 1:10:13 Zusammenfassung 1:11:34 Software-Technik 1:15:57 Was noch fehlt | 11.2.2016 | Gratis | In iTunes ansehen |
4 | CleanVideoProgrammieren, WS 2015/2016, gehalten am 20.01.2016, Vorlesung 11 | 11: Vorlesung | 0:00:00 Starten 0:00:10 Gliederung ""Was erwartet Sie heute?"" 0:01:18 Zerteilen (engl. ""parsing"") 0:03:49 Beispiel: Taschenrechner 0:05:42 Beispiel: Taschenrechner: Parsebaum 0:06:33 Top-Down Parsing 0:08:12 Recursive Descent Parser: Hilfsfunktionen 0:09:50 Rekursiver Abstieg: Umsetzung Regeln 0:12:08 Zusammenfassung Parsen 0:13:42 Suchen 0:14:03 Lineare Suche 0:14:45 Lineare Suche - Implementierung 0:16:13 Lineare Suche - Visualisierung 0:17:34 Binäre Suche 0:18:47 Binäre Suche - Implementierung 0:20:33 Binäre Suche - Visualisierung 0:22:26 Sortieren 0:22:57 Bubblesort 0:24:05 Bubblesort - Implementierung 0:24:56 Bubblesort - Beispiel 0:25:56 Bubblesort: Zitat 0:26:44 Bubblesort: Animation 0:27:20 Selectionsort 0:28:30 Selectionsort - Implementierung 0:29:09 Selectionsort - Beispiel 0:30:03 Selectionsort: Animation 0:30:27 Insertionsort 0:31:12 Insertionsort - Implementierung 0:31:59 Insertionsort - Beispiel 0:33:09 Video: The Sound of Sorting 0:35:09 16 Objekt-orientierte Design-Prinzipien 0:35:14 Prinzipien für objekt-orientiertes Design 0:36:25 Prinzip 1: (Datenkapselung) Minimiere die Zugriffsmöglichkeiten auf Klassen und Attribute 0:36:40 Datenkapselung (Information Hiding) 0:37:43 Vorteile Datenkapselung 0:39:56 Prinzip 2: Bevorzuge Komposition gegenüber Vererbung 0:40:02 Komposition 0:41:06 Vorteile/Nachteile Komposition 0:42:55 Vererbung 0:43:24 Vorteile/Nachteile Vererbung 0:44:42 Beispiel Komposition vs. Vererbung 0:48:51 Beispiel mit Komposition 0:51:18 Prinzip 3: Programmiere gegen Schnittstellen und nicht gegen eine Implementierung 0:51:25 Vorteile/Nachteile Interfaces 0:52:27 Beispiel Interface 0:53:52 Prinzip 4: (Open-Closed Principle) Software-Komponenten sollten offen für Erweiterung, aber geschlossen für Änderung sein 0:55:21 Beispiel OCP 0:58:38 OO-Design-Prinzipien 1:01:17 Ausgewählte Prinzipien für den Schnittstellenentwurf 1:02:38 Gute Schnittstellen 1:04:01 Schnittstellenentwurf für Kapselung/Wiederverwendbarkeit 1:05:55 Trennung von Befehl und Anfrage 1:08:57 Schlechte Abstraktion 1:10:09 Bessere Abstraktion 1:10:35 Auftrennung von Klassen und Schnittstellen 1:11:14 Gemischtes Abstraktionsniveau 1:12:12 Konsistentes Abstraktionsniveau 1:12:36 Wahl von Methodennamen 1:15:34 Zusammenfassung der Vorlesung | 26.1.2016 | Gratis | In iTunes ansehen |
5 | CleanVideoProgrammieren, WS 2015/2016, gehalten am 13.01.2016, Vorlesung 10 | 10: Vorlesung | 0:00:00 Starten 0:02:34 Motivation: Divide and Conquer 0:06:57 Rekursion 0:07:36 Rekursive Methoden 0:08:42 Beispiel: Fakultätsfunktion 0:11:09 Binomialfunktion 0:13:45 Binomialfunktion mit Caching 0:14:51 Rekursion - Zusammenfassung 0:15:46 Rekursion vs. Iteration 0:17:07 Die Kochsche Schneeflockenkurve 0:18:55 12 Java API 0:19:58 Java API 0:23:02 Das Java Collections Framework 0:24:32 Das Interface Collection 0:27:24 Exkurs: Wildcards in generischen Typen 0:28:41 Exkurs: Kovarianz / Invarianz 0:34:26 Sub-Interfaces von Collection 0:35:39 Das Interface Map 0:36:52 Map: Beispiel 0:37:52 Die Klasse Collections 0:39:28 Das Paket java.io 0:40:28 Ein-und Ausgabe in Java 0:43:33 13 Testen und Assertions 0:44:36 Softwarefehler (""Bugs"") 0:46:21 Berühmte Software-Fehler 0:49:36 Software-Fehler 0:54:12 Beispiel: Klassifikation Dreiecke 0:59:19 Kriterien für gute Testfälle 1:00:45 Was Testen ist... 1:03:45 Failure vs. Fault 1:05:14 Failure vs. Fault vs. Error 1:06:10 Beispiel: Failure vs. Fault 1:09:19 Was Testen nicht ist... 1:10:20 Warum Testen so schwierig ist 1:12:32 Testselektion 1:13:09 Wann sind wir fertig? 1:14:56 Teststrategien 1:15:36 Assertions (Geek & Poke) 1:17:11 Zusicherung 1:20:36 Pre- und Postconditions, Invarianten 1:21:30 Beispiel Invarianten 1:22:31 assert oder if-Abfrage? 1:23:50 Statische Analyse | 21.1.2016 | Gratis | In iTunes ansehen |
6 | CleanVideoProgrammieren, WS 2015/2016, gehalten am 16.12.2015, Vorlesung 09 | 09: Vorlesung | 0:00:00 Starten 0:05:49 Deklarieren von Ausnahmen 0:08:08 Error und Exception 0:10:37 Behandeln von Ausnahmen 0:12:26 Werfen von Ausnahmen 0:14:30 Eigene Exceptions 0:15:06 Verwendung von Exceptions 0:18:06 Faustregeln 0:18:33 Quiz 0:24:19 Frühe Fehlererkennung (""fail fast"") 0:26:54 Schlechtes Beispiel: java.util.Properties 0:28:43 Zusammenfassung Exceptions | 18.12.2015 | Gratis | In iTunes ansehen |
7 | CleanVideoProgrammieren, WS 2015/2016, gehalten am 09.12.2015, Vorlesung 08 | 08: Vorlesung | 0:00:00 Starten 0:03:46 Debugging 0:06:05 Motovation - Interfaces 0:09:49 Interfaces als Schnittstellenbeschreibung 0:13:58 Interfaces - Syntax 0:17:23 Interfaces - Verwendung 0:19:53 Beispiel - Liste 0:21:10 Interfaces - Übersicht 0:22:29 Abstrakte Klassen vs. Interfaces 0:24:27 Quiz 0:29:31 Motivation - Generische Klassen 0:31:19 Generics - Konzept 0:35:20 Syntax - Polymorphie in Java 0:36:17 Generische Listen 0:41:54 Mehrere Typ-Parameter 0:42:57 Vergleichen von Objekten 0:47:38 Einschränkungen 0:52:09 Wrapper-Objekte, Autoboxing 0:55:14 Generische Methoden 0:59:05 Zusammenfassung 1:01:05 10 Ausnahmebehandlung (Exceptions) 1:01:47 Exceptions: Motivation 1:04:43 Fehlerbehandlung im GOTO-Zeitalter 1:05:47 Fehlerbehandlung - ohne GOTO, kaum besser 1:07:17 Lokale Fehlerbehandlung 1:09:03 Ausnahmen (Exceptions) 1:09:59 Exceptions in Java 1:13:33 Auszug aus der Exception-Hierarchie 1:14:51 Ausnahmebehandlung in Java 1:20:47 Kontrollfluss bei Exceptions 1:23:40 Ausnahmebehandlung | 10.12.2015 | Gratis | In iTunes ansehen |
8 | CleanVideoProgrammieren, WS 2015/2016, gehalten am 02.12.2015, Vorlesung 07 | 07: Vorlesung | 0:00:00 Starten 0:00:42 Einführendes Beispiel 0:03:43 Konzept der Vererbung (I) 0:06:17 Konzept der Vererbung (II) 0:09:05 Vererbung in Java 0:13:43 Beziehung zwischen Ober- und Unterklasse 0:15:56 Beispiel Vererbung in Java 0:19:24 Überschreiben von Methoden 0:23:45 Dynamische Bindung 0:27:00 Dynamische Bindung - Definition 0:31:25 Dynamische Bindung - Beispiel (I) 0:33:11 Dynamische Bindung - Beispiel (II) 0:37:44 Dynamische Bindung vs. Fallunterscheidung 0:39:01 Überschreiben von Attributen 0:42:56 Das Schlüsselwort super 0:44:04 Konstruktoren 0:47:35 Sichtbarkeit und Modifier 0:48:50 instanceof 0:51:40 Typ-Umwandlung (type casts) 0:52:50 Up- and Down-Casts 0:53:34 Die Klasse Object 0:58:00 Auszug Java-Klassenhierarchie 0:58:37 Inhaltliche Gleichheit: equals (Object obj) 1:02:15 Inhaltliche Gleichheit 1:02:40 Grenzen der Vererbbarkeit: final 1:03:56 Abstrakte Klassen 1:07:36 Quiz 1:19:01 Prinzipien des Objekt-Orientierten Entwurfs | 3.12.2015 | Gratis | In iTunes ansehen |
9 | CleanVideoProgrammieren, WS 2015/2016, gehalten am 25.11.2015, Vorlesung 06 | 06: Vorlesung | 0:00:00 Starten 0:00:58 Typ-Konvertierung 0:01:00 Widening Primitve Conversions 0:01:16 Narrowing Primitve Conversions 0:01:18 String Conversions 0:01:43 Casting Conversions 0:02:23 Datenkapselung 0:06:49 Datenkapselung: Zugriffsrechte 0:10:39 Zugriffsrechte: Beispiel 0:14:54 Gültigkeit, Lebensdauer von Variablen 0:16:07 Beispeil Gültigkeitsbereich (lokale Variablen) 0:17:46 Gültigkeit 0:18:24 Überschattung 0:21:02 Überschattung: Beispiel 0:23:38 Sichtbarkeit (Visibility) 0:24:03 Pakete (packages) 0:25:48 Mehr zu Paketen 0:28:42 Pakete und Sichtbarkeit 0:29:45 Gleichheit von Objekten 0:33:58 Verwendungsbeispiel: Gleichheit von Objekten 0:35:23 Zusammenfassung 0:37:11 7. Listen und Abstrakte Datentypen 0:37:21 Rekursive Datentypen 0:41:48 Einfach verkettete Listen - Idee 0:43:21 Einfach verkettete Listen in Java 0:44:45 Erstellung einer Liste 0:48:21 Operationen auf Listen 0:50:11 Einfügen von Listenelementen: addFirst 0:51:31 Einfügen von Listenelementen: addLast 0:53:45 Löschen von Listenelementen: remove 0:58:10 Suche nach Listenelementen: contains 0:59:33 Listen als abstrakter Datentyp (ADT) - Prinzip 1:01:45 Listen als ADT - Realisierung 1:03:05 Iteratoren 1:07:17 Implementierung Iterator für Vector2DList 1:09:25 Exkurs: Command / Query-Separation 1:11:48 Exkurs: Command / Query-Separation (2) 1:16:04 Exkurs: Command / Query-Separation (3) 1:17:47 Gesamtstruktur Listenimplementierung in Java 1:19:27 Verwendung der Listenimplementierung 1:20:54 Vergleich Listen - Arrays 1:23:07 Mehr Flexibilität: doppelt verkettete Listen 1:24:58 Implementierung doppelt verkettete Listen 1:25:53 Einfügen von Listenelementen: addLast 1:26:40 Verwendung von Listen: Gerichtete Graphen 1:28:51 Zusammenfassung | 30.11.2015 | Gratis | In iTunes ansehen |
10 | CleanVideoProgrammieren, WS 2015/2016, gehalten am 18.11.2015, Vorlesung 05 | 05: Vorlesung | 0:00:00 Starten 0:00:37 Wiederholung 0:01:38 Definition Array 0:04:02 Array Deklaration 0:07:10 Deklaration und Initialisierung 0:09:50 Ansprechen von Elementen / Länge von Arrays 0:12:50 Arrays und Schleifen: Beispiele 0:23:43 Quiz 0:27:53 Arrays und Schleifen: Weitere Beispiele 0:34:17 Beispiel: Polygone 0:39:21 Arrays und Schleifen: for-each 0:42:17 Matrizen 0:43:31 Mehrdimensionale Arrays 0:47:44 Beispiel: Sieb des Eratosthenes 0:58:23 Sieb des Eratosthenes optimiert 1:02:07 Generelles zum Optimieren 1:02:27 Mehr zu den Arrays 1:04:16 Mehr zu mehrdimensionalen Arrays 1:05:17 Quiz 1:09:37 Zusammenfassung 1:10:11 6. Konvertierung, Datenkapselung, Sichtbarkeit 1:10:36 Typ-Konvertierung 1:13:30 Widening Primitiv Conversions 1:17:23 Narrowing Primitive Conversions 1:19:41 String Conversions 1:23:04 Casting Conversions | 24.11.2015 | Gratis | In iTunes ansehen |
11 | CleanVideoProgrammieren, WS 2015/2016, gehalten am 21.10.2015, Vorlesung 01 | 01: Vorlesung | 0:00:00 Starten 0:00:10 Einführung & Vorstellung 0:04:47 Übungsbetrieb 0:10:09 Semesterplan 0:11:31 Bewertungssystem & Prüfungsordnung 0:16:25 Wo kann ich die Aufgaben bearbeiten? 0:24:39 Zusammenfassung: Was Sie als nächstes tun müssen 0:27:36 Organisatorisches 0:34:50 Was ist Programmierung? 0:38:55 Praxis: Übersetzen von Java-Klassen 0:41:48 Praxis: Ausführen von Java-Programmen 0:44:02 Compiler vs. Übersetzer 0:50:25 Just in Time Compilation 1:02:35 Billard-Spiel 1:09:44 Klassen: Der ""Bauplan"" von Objekten 1:21:01 Jetzt sind Sie gefragt: Wir modellieren die Mensa 1:26:30 Zusammenfassung | 24.11.2015 | Gratis | In iTunes ansehen |
12 | CleanVideoProgrammieren, WS 2015/2016, gehalten am 11.11.2015, Vorlesung 04 | 04: Vorlesung | 0:00:00 Starten 0:00:10 Ankündigung 0:01:47 Literaturhinweism 0:01:58 Konstruktoren 0:05:16 Parameter 0:11:19 this-Referenz 0:13:00 Default-Konstruktor 0:15:50 Mehrere Konstruktoren 0:21:37 Methoden 0:28:36 Methoden-Signatur 0:30:18 Methoden-Aufruf 0:31:47 Beispiel-Methoden 0:33:21 Der Rückgabetyp void 0:34:40 Zugriffsfunktionen (getter/setter) 0:38:43 Bezugsobjekt 0:40:34 Was passiert beim Aufruf einer Methode? 0:42:35 Statische Methoden 0:45:24 Klassen- vs. Objekt-Methode 0:49:50 Lokale Varaiblen 0:53:14 Parameter als lokale Variablen 0:56:18 Methodenaufrufe und Objektreferenzen 1:04:50 Lokale Variablen vs. Attribute 1:07:06 Klassenvariablen (Statische Attribute) 1:11:44 Überladen von Methoden 1:14:05 Die Methoden main 1:17:30 Methoden zur Ein- und Ausgabe 1:20:21 Quiz 1:27:06 Buchempfehlungen | 17.11.2015 | Gratis | In iTunes ansehen |
13 | CleanVideoProgrammieren, WS 2015/2016, gehalten am 04.11.2015, Vorlesung 03 | 03: Vorlesung | 0:00:00 Starten 0:00:23 Kontrollstrukturen: Literaturhinweis - Weiterlesen 0:00:52 Ausdrücke 0:04:21 Weitere Ausdrücke in Java 0:10:32 Anweisungen 0:13:12 Ausdruck vs. Anweisung 0:18:59 Quizze: Feedback-System 0:35:38 Kontrollfluß-Anweisungen (control-flow-statments) 0:37:16 Die if-Anweisung 0:39:22 if-Anweisung: Kontrollfluss-Diagramm 0:40:19 Geschachtelte if-Anweisungen 0:43:45 Die switch-Anweisung 0:46:38 Die switch-Anweisung: Beispiel 0:51:37 Programmieren von Schleifen 0:53:20 Die while-Schleife 0:57:08 (do-)while-Schleife: Sytax 0:58:54 Die for-Schleife 1:06:30 Die for-Schleife: Kontrollfluss 1:07:01 Die break-Anweisung 1:10:10 Die continue-Anweisung 1:11:10 Zusammenfassung | 17.11.2015 | Gratis | In iTunes ansehen |
14 | CleanVideoProgrammieren, WS 2015/2016, gehalten am 28.10.2015, Vorlesung 02 | 02: Vorlesung | 0:00:00 Starten 0:00:18 Überblick: Typen und Variablen 0:00:32 Zusatztutorien 0:01:44 Zusammenfassung 0:04:04 Literaturhinweis - Typen und Variablen: Weiterlesen 0:04:39 Datentypen 0:07:13 Die elementaren Datentypen in Java 0:12:49 Wertebereiche der elementaren Datentypen 0:17:55 Vordefinierte Operationen auf elementaren Datentypen 0:23:37 Umrechnung von Zahlensystemen - ganze Zahlen 0:26:17 Operatoren auf ganzen Zahlen: Beispiele 0:29:08 Präzedenz: Beispiele 0:33:06 Die Wahrheitswerte: boolean 0:34:22 Die ganzen Zahlen: byte, short, int, long 0:39:27 Die Fließkommazahlen: float und double 0:45:53 IEEE 754 - Gleitkommazahlen 0:50:15 Nachteile 0:50:53 IEEE 754 - Gleitkommazahlen: Beispiel 0:53:49 ASCII- und Unicode-Zeichen: char 0:55:56 Datentyp String 0:57:38 Aufzählungs-Datentyp: enum 0:58:20 Variablen 1:01:29 Zuweisung 1:03:30 Zuweisung: Anmerkungen 1:04:23 Zuweisung: Attribute setzen 1:05:09 Mehr zu Variablen 1:06:00 Variablen und Speicher: Speicherabbild 1:08:22 Objekt-Variablen / Referenzen 1:09:31 Beispiel Objekt-Referenzen 1:11:34 Objekt-Identitäten und Zuweisung 1:12:27 null, Konstantendeklaration 1:12:57 Überprüfung der Datentypen 1:13:38 Zusammenfassung | 17.11.2015 | Gratis | In iTunes ansehen |
14 Artikel |