Hilfseite zur AuD Tafelübung Kurs T-B4b
Diese Seite wird parallel zur Tafelübung T-B4b (Dienstag, 14 Uhr in 02.134-113) gepflegt und erweitert. Hier werden wichtige Anmerkungen und Links aus den Tafelübungen nochmal hochgeladen, Codebeispiele die in der Übung vorgestellt worden sind, Häufig gestellte Fragen zu den Hausaufgaben (um Emailverkehr zu minimieren), etc. zu finden sein.
Meine Rechnerübung (gedacht für praktische Hilfe bei den Übungsaufgaben) findet Donnerstags von 10:15 bis 11:45 statt im 02.135-113 statt, obwohl ich meist bis 13 oder 14 Uhr da bleibe.
Der Kurzlink zu dieser Seite lautet: https://ws18.aud.ai/.
Material für den Rechner- und Tafelübungen
Zu jeder Übung hab ich hier verschiedene Links gesammelt, welche für die eigene Nachbereitung hilfreich oder interessant sein könnten, bzw. auch Seiten welche ich in der Tafelübung gezeigt habe.
Übung 1
- Stellenwertsystem
- Umwandler
- Zahlen in Java
- Trivia: Ternäre Rechner, Base 12
- Zu Gleitkommazahlen:
- "What Every Computer Scientist Should Know About Floating-Point Arithmetic" (1991)
- "The Perils of Floating Point" (1996)
- "Is COBOL holding you hostage with Math?" (1998)
- "Floating-point representation" (2011)
- "Demystifying Floating Point Precision" (2017)
- Is COBOL holding you hostage with Math? (Eher zu Fixkommazahlen, 2018)
- "Bit" als Dateneinheit
- Unicode Tabelle (Alternativ 1, Alternativ 2, Alternativ 3, Allgemein)
- ASCII Tabelle (online
man
page)
Übung 2
- JLS Eintrage zu…
- Operatoren
- "Narrowing Primitive Conversion" (downcasting)
- Auswertungsreihenfolge in Java allgemein
- "Blocks and Statements" (spezifisch zu
while
,for
unddo
) - Arrays
- Allgemeines zum Java Typsystem aus Java in a Nutshell.
- Introduction to JShell (Benutzeranleitung)
- Zu Schleifen
- Wikipedia Eintrag ueber "Schleifen" (Unterabschnitt im englischem Artikel über Kontrollstrukturen, besonders Interessant Vergleichstabelle verschiedener Schleifen-arten in verschiedenen Sprachen
- Java Tutorial über
while
unddo-while
Schleifen - Antworten zur Internetfrage "Are there real-life usage and applications for 'do while' loops?"
- Sammlungs an Beispielen zu Ablaufdiagrammen (eng. Flow charts)
- Zu Arrays
- Zu Logik
- Wikibook Mathematik zu Logik/Aussagenlogik
- Liste logischer Symbole
Übung 3
- JLS Eintrage zu…
- Methoden
- Meinungen zur Frage wie Funktionen (in unserem Fall Methoden) benannet werden sollten
- Rekursion
- "How recursion got into programming" (2014), Geschichte von Rekursion in verschiedenen Programmiersprachen
- Verschiedene Meinungs- und Einführungstexte
- Stop Telling Students Recursion is Hard (2011)
- Thinking About Recursion (2017)
- Antworten auf die Frage "What are the advantages of recursion compared to iteration?" (2014-)
- Video What on Earth is Recursion? (2014) und Programming Loops vs Recursion (2017) von Computerphile
- Iteration Und Rekursion (2003)
- Mastering recursive programming (2005)
- Iteration vs Recursion in Introduction to Programming Classes: An Empiric al Study (2016)
- Wer sich für "rekursivere Programmiersprachen" oder LISP interessiert, kann das Buch The Little Schemer (1995) oder Structure & Interpretation Computer Programs (1996) lesen.
- Gaußische Elimination
- Lecture 2, MIT 18.06 Linear Algebra: Elimination with Matrices (2005)
- Allgemein zur Linearen Algebra: YouTube Serie, Essence of Linear Algebra (2016)
- Primfaktorzerlegung
- Rosseta Code Einträge zu Prime decomposition (Primfaktorzerlegung) und Greatest common divisor (Größter gemeinsamer Teiler) – es werden hier verschiedene Ansätze gezeigt, die nicht kopiert werden sollten
Übung 4
- JLS Eintrage zu…
- Call-by-Value und Call-by-Reference auf Wikipedia
- Induktion
- Vorlesungsaufzeichnung zu Induktion von der MIT (Kurs, Mathematics for Computer Science)
- Diskussion zu Terminierungsfunktionen im FSI Forum
- Dynamische Programmierung
- Liste von Beispielaufgaben zu Dynamischer Programmierung
- Beispiel zu DB mit Visualisierungen
- Backtracking
- KenKen
- KenKen Regeln mit Bildern
- Video: How to Play KenKen
- Online KenKen demo (Alternativ, mit mehr Opitionen)
Übung 5
- Dynamische Programmierung (Wiederholung vom letzten Mal)
- Liste von Beispielaufgaben zu Dynamischer Programmierung
- Beispiel zu DB mit Visualisierungen
- O-Kalkül
- Wikipedia Übersicht wichtiger Funktionsklassen
- Big-O Cheat Sheet (auch in PDF Form)
- Artikel, When Big O Fools Ya (2016)
- Artikel, Big-O Misconceptions (2012)
- Einfache und Anschauliche Erklärungen zur Frage What is a plain English explanation of "Big O" notation?
- Kryptogramme
Übung 6
- Java Language Specification zu Klassen
- Java Dokumentation zu Object (besonders beachtenswert: .equals() Methode)
- Zur Geschichte von OOP
- Meinungen zur OOP
- Object Oriented Programming is Inherently Harmful
- The faster you unlearn OOP, the better for you and your software
- Object Oriented Essentialism
- A Proposal for Simplified, Modern Definitions of "Object" and "Object Oriented"
- Arguments Against OOP, Acceptable Criticism Of OOP Wiki, Benefits Of OOP und Alternate Object Oriented Programming View
- Alternative/"Modernere" Sichtweisen: Better Java
- Garage Collection
- Vererbung
- Top 21 Java Inheritance Interview Questions and Answers
- Inheritance (The Java™ Tutorials)
- Meinung: Implementation Inheritance Is Evil, Why extends is evil
abstract
undinterface
- Abstract Methods and Classes (The Java™ Tutorials), Interfaces (The Java™ Tutorials)
- Difference Between Abstract Class vs Interface in Java
- UML
Übung 7
- Java Language Specification zu
throw
- Java Quelltext browser
- Java API Einträge zum
Throwable
Interface,Exception
, und RuntimeException. - EclEmma: Java Code Coverage for Eclipse
- Zu Polymorphie
- Exceptions
- Explanations of common Java exceptions (satire)
- The Java™ Tutorials zu Exceptions
- Deep Dive: All about {Java} Exceptions (archiviert)
- Java Exception Interview Questions
- Interessant: Analysis of Exception Handling Patterns in Java Projects: An Empirical Study
Übung 9
- Einträge im JLS:
- Generics
- The Java™ Tutorials: Why Use Generics?
- The Java™ Tutorials: Type Erasure
- Java Generics FAQs - Frequently Asked Questions
- Java Generics FAQs - Under The Hood Of The Compiler
- Understanding Generics limitations (in Java)
- Vortrag: Growing a Language, Guy Steele (1998) wo vor der Einführung von Generics in Java Ideen und Richtlinien dafür angesprochen wurden.
- ADTs
- Definition im NIST
- Antworten auf die Frage: What is ADT?
- Verkettete Listen
- Linked List Problems: Aufgaben und Probleme verketteten Listen gelöst werden können
- LinkedList Quelltext und Javadoc
- Comparable und Comparator Javadoc Comparable vs. Comparator
Übung 10
- Liste von Datenstrukturen
- Java Collections Framework allgemein
- The Java™ Tutorials's Eintrag zu "Collections"
- Outline of the Collections Framework und Overview
- Geschichtlich interessanter Artikel zur Entstehung der JCF, und dessen Kontingents (1999).
- Früher Text von IBM zur Collections Framework
- Cheat Sheet zu Collections und Methoden [PDF]
- ArrayList's als "Dynamische Liste" (und andere Lists)
- JavaDoc Eintrag zu
ArrayList
- JavaDoc Eintrag zu
List
(Interface für Lists) - Java Podcast zu Arrays vs ArrayLists
- Quelltext von Arraylist (für Java 11, vgl. für Java 8)
- Antworten auf die Frage: When to use LinkedList over ArrayList in Java?
- JavaDoc Eintrag zu
- Hashtables
- JavaDoc Eintrag zu
HashMap
- JavaDoc Eintrag zu
Map
(Interface für alle Maps) - Quelltext von HashMap (für Java 8)
- Open Data Structures' Text über Streutabellen in Java
hashCode
für Object, String, Integer, File- Aus Algorithms, 4th Edition (Java Version):
- Interessantes:
- Swiss Tables: Verbesserungen des Hashtable Konzepts von Google
- Fibonacci Hashing: Alternative zu Modulo-orientierten Tabellen
- Lifetimes of cryptographic hash functions: Geschichtliche Relevanz verschiedener (Kryptographischer) Hashfunktionen
- Online Hashsum Rechner
- JavaDoc Eintrag zu
- Bäume
- JavaDoc Eintrag zu
TreeMap
- JavaDoc Eintrag zu
TreeSet
- Building Blocks for Theoretical Computer Science's Kapitel über Bäume
- An Introduction to Binary Search Trees and Balanced Trees
(Achtung: PDF befindet sich in dem
.gz
Archiv) - Wikimedia's Sammlung zu Bildern/Animationen über Bäume
- Binary Search Trees, BST Sort Vorlesung von der MIT
- BST Visualisator (sowie andere: Halden, AVL, etc.)
- Antworten auf die Frage: How to find the next in order successor in a binary tree?
- Rebalancierung von AVL-Bäumen
- Vorlesung zu AVL (MIT)
- Aus Algorithms, 4th Edition (Java Version):
- AVL Implementierung
- Max-Halde Implementierung (als Priority Queue)
- Min-Halde Implementierung (als Priority Queue)
- Binärer Suchbaum Implementirung
- JavaDoc Eintrag zu
Übung 11
- Sortieren
- Implementierung verschiedener Sortieralgorithmen in Java
- Veranschaulichungen und Vergleiche:
- "Sound of Sorting": Sortierschritte durch Musik unterstützt
- Sorting Algorithms Animations: Schnelle kleine übersicht
- Sorting Algorithms Revisualized: Mehere Sortierverfahren nebeneinander gestellt
visualgo.net/sorting
: Beispielsortierungen mit Algorithmen zum Vergleichensorting.at
: Visuell sehr ansprechende Seite, weitestgehend das gleiche wie oben.
- (Interessant: An \(O(N)\) Sorting Algorithm: Machine Learning Sort, (eigentlich \(O(N \cdot M)\)))
- Red-Black-Trees
Übung 12
Sortieren
- Ausführungen zu Radix Sort
- Vorlesung zu Radix Sort (MIT, unter anderem)
- Ausführungen zu Mergesort und Quicksort
- Für Fanatiker: The Art of Computer Programming, Volume 3: Sorting and Searching (Second Edition), von Donald Knuth
Siehe ansonsten Übung 11.
- Graphen
- Allgemeine Einleitung in Graphen
- Grundsätzliche Graphalgorithmen
- Kapitel über Graphen, in Open Data Structures
- Implementierung verschiedern Graph-Verwander Software als Teil des Apache Commons Graph Toolkits
- Kürzeste Wege
- Allgemeine Einleitung in Kürzeste Wege-Algorithmen Understanding Dijkstra's Algorithm
- Alternative allgemeine Einleitung, sowie Java-Quelltext für Dijkstra und Floyd-Warshall
- Dijkstra's in Disguise
- Vorlesung zu Dijkstra (MIT), besonders Empfehlenswert: um 27:40 wird eine "mechanische Analogie" aufgestellt, womit man das "gierige" Prinzip von Dijkstra besser verstehen kann.
- Implementierung von Dijkstra und Floyd-Warshall in verschiedenen Sprachen
- Spannbäume
- Allgemeine Einleitung in Minimale Spannbäume
- Alternative allgemeine Einleitung, sowie Java-Quelltext für Prim und Kruskal
- Praktische Anwendung: Labyrinth-Generierung mit Kruskal, Labyrinth-Generierung mit Prim
- Visualisierungen: Radix Sort, Bucket Sort, Vergleichsbasierte Sortieralgorithmen, Dijkstra (Kürzester Weg), Floyd(-Warshall) (alle kürzesten Wege), Algorithmus von Kruskal und Algorithmus von Prim (Spannbäume).
- Statistiken zum echten Web of Trust
Weiteres
Folien aus der Miniklausur Vorbereitung. Enthält Hinweise und Vorgehenstips zum Programmieren auf Papier
Allgemeines Material und Links
Informationen zu AuD
- AuD Subforum der FSI
- Gut geeignet um zu sehen ob jemand ein ähnliches Problem hat, oder anderen zu helfen (und dabei auch nochmal über was man selbst gemacht hat nachdenken)
- Jahrgangs IRC
- Wenn es schnell sein muss, kann man immer im
#faui2k18
Channel nachfragen ob jemand einem helfen kann (wenn möglich meidet WhatsApp und Discord). - UnivIS Übersicht aller Tafelübungen
- Auch wenn ihr offiziell in einer Übung eingeteilt sind, steht es jedem frei zu entscheiden welche Tafel- und Rechnerübungen man besuchen will.
- FSI Altklausuren und Miniklausuren Sammlung
- Der Lehrstuhl bietet die Altklausuren öffentlich an, jedoch keine Lösungen. Dafür hat die FSI ihre "inoffiziellen" Lösungen (die doch in den aller meisten Fällen stimmen) welche benutzt werden können während der Klausurvorbereitung.
- AuD Extra Tests von Studenten
- Von Studenten des Jahrgangs WS18/19 betriebenes GitLab Repo mit zusätzlichen, aber inoffiziellen Tests zu den Übungsaufgaben. Gerne Beitragen (wer dabei Hilfe braucht, kann mich gerne fragen), ich werde auf diese Tests verlinken.
Allgemeines zu Java und Programmieren
- Java® Platform Standard Edition 7 Documentation
- Hauptanlaufspunkt zu allen Fragen was die Java API angeht
- The Java® Language Specification
- Wenn man genau verstehen will wie syntaktische und semantische Finessen von Java® funktionieren, kann man alles in der LS nachschlagen.
- Project Euler
- Wem die Übungen vom AuD Team nicht reichen, oder wer was kleineres machen will, kann auf der Project Euler Seite eine Vielzahl (≥ 600) von mathematisch angehauchten Problemen finden. Übt hier die Standard Library schlau zu verwenden, da wer sich damit gut auskennt, in der Klausur Zeit sparen kann.
- 🎄 Advent of Code 🎄
- Zur Weihnachtszeit kann man jeden Tag ein Ritzel löesen, ähnlich zu, aber wenig "mathematisch" als "Project Euler".
- Free Programming Books - Java
- Auf dieser Seite werden öffentliche und frei verfügbare Bücher gesammelt, für diejenigen die neben dem Übungsbetrieb noch ein wenig Zeit zum lesen haben.
Kontakt
Siehe mein Indexseite.
Falls man Fehler findet oder etwas auf dieser Seite (oder allgemein (zu AuD)) nicht versteht, gerne mir schreiben. Ich sollte innerhalb von 24 Stunden eine Antwort geben können.