Propädeutikum Grundlagen Informatik

Wintersemester 2017-18
Wiltrud Kessler
Zeiten: Do 8:00–9:30 Uhr, Do 9:45–11:15 Uhr, Fr 11:30–13:00 Uhr
Azenbergstr. 12, Raum -1.013 (Computerraum 1. UG)
6 SWS
[ILIAS]

News

Zeitplan und Materialien

Alle Materialien (Folien, Beispiele, Aufgabenblätter) werden in ILIAS hochgeladen.

In der folgenden Tabelle finden sich die behandelten Themen. In der Spalte "Nachlesen" finden sich Erklärungen zum Thema aus Quellen die in der Bücher/Linkliste unten aufgeführt werden. Die Links in dieser Spalte sind dazu gedacht die Informationen von den Folien nochmal detailliert nachlesen zu können oder einen anderen Blickwinkel auf denselben Inhalt zu bekommen. Unter "Links" finden sich weiterführende Informationen zu den spezifischen Themen für speziell Interessierte. Es ist normalerweise nicht nötig diese Links zu lesen um das Thema zu verstehen. Die Liste wird nach und nach erweitert.

-->
Thema Nachlesen Weitere Links
Block 0 "Einführung"
Einführung Informatik Was ist Informatik?
Einführung Linux Einführung in das Betriebssystem Linux
Block 1 "Grundlagen"
Informationsdarstellung Umrechnung von Zahlensystemen
RGB-Farbmodell
BitMap
Zweierkomplement
Gleitkommazahlen
Warum Binär?
Warum Festplatten plötzlich schrumpfen
The Absolute Minimum Every Software Developer Must Know About Unicode
Unicode Code Charts
ASCII Tabellen
IEEE 754 Umrechner
Hallo Java! [JTI 8]
[JTI 9A]
[JTI 9B]
[HardWay 1]
[HardWay 5]
Java online compiler (Tutorialspoint)
Java online compiler (JDoodle)
java.lang.Math Dokumentation
Fehler Ariane V88
Fehler Patriot-Abwehrrakete
Verzweigungen (if) [JTI 12]
[JTI 14]
[Insel 2.5]
[BlogBuch 2.6]
[HardWay 12]
[HardWay 15]
Schleifen (for, while) [JTI 15]
[ICSJ 41]
[Insel 2.6]
[BlogBuch 2.8]
Block 2 "Objektorientierung"
Greenfoot Greenfoot software
Greenfoot tutorial
Klassen, Objekte, Methoden [JTI 25]
bis [JTI 30]
[Insel 3.2]
[Insel 2.7]
[BlogBuch 4.3.1]
[BlogBuch 4.3.3]
Vererbung [JTI 50]
[BlogBuch 4.5]
Dokumentation zur Java Klassenbibliothek (Java 8)
[BlogBuch 7.2]
Zugriffsmodifikatoren [JTI 33]
[BlogBuch 4.3.6]
Attribute [JTI 27]
[BlogBuch 4.3.2]
Gültigkeitsbereiche [JTI 34]
[Insel 2.7.11]
Konstruktoren [JTI 30]
[BlogBuch 4.3.8]
static [JTI 25]
[Insel 2.7.5]
[BlogBuch 4.3.7]
Referenzen, Pointer [JTI 26]
[JTI 29] (null)
[JTI 34] (call-by-value)
Der Stringpool
Stack und Heap
Block 3 "Algorithmen"
Rekursion [ICSJ 70]
[ICSJ 71]
[Insel 2.7.14]
Wikipedia: Koch-Kurve
Wikipedia: Pythagoras-Baum
M. Möhrke: Türme von Hanoi
Python-Kurs: Türme von Hanoi
Arrays [ICSJ 46]
[Insel 3.8]
[BlogBuch 2.09]
Listen [ICSJ 46]
[BlogBuch 8.03]
JavaDoc zu Listen
Sortieren Algorithmus der Woche: InsertionSort
Inf-Schule: BubbleSort
Algorithmus der Woche: QuickSort
Dse Wiki: Quick Sort
Wikipedia: Sortierverfahren
Code zum Durchklicken
Sortieralgorithmen im Vergleich
Bubblesort als Tanz (Video)
The Sound of Sorting
Laufzeitabschätzungen Inf-Schule: Asymptotisches Wachstumsverhalten
Inf-Schule: Komplexitätsklassen
O-Notation
Suchen Algorithmus der Woche: Binäre Suche
Wikipedia: Suchverfahren
Hashing Algorithmus der Woche: Hashing
SHA-512-Hash-Generator
Block 4 "Wahlthemen"

Software

Für die ersten Wochen des Kurses ist es absolut ausreichend vorläufig auf die Installation von Java auf dem eigenen Rechner zu verzichten und stattdessen einen Java online compiler zu verwenden.

Zum Schreiben des Codes im Laufe des Kurses werden wir die Entwicklungsumgebung Eclipse verwenden. Für Block 2 werden wir Greenfoot verwenden.

Informationen zur Installation von Java, Eclipse und Greenfoot gibt es auf der Materialseite.

Allgemeine Links und Bücher

Es ist nicht nötig ein Buch für den Kurs zu kaufen. Aber wer das möchte: Es gibt massenweise Bücher zu Java, manche gut, manche schlecht. In jedem Fall ist es eine individuelle Entscheidung welches Buch zum eigenen Lernstil passt. Daher vor dem Kauf: Anschauen in der Unibibliothek!

Hier zwei Buchempfehlungen:

Es gibt massenhaft Webseiten zur Java-Programmierung, hier meine Top 5 für diesen Kurs:

Mehr Buchempfehlungen und Links auch auf der Materialseite.

Kursbeschreibung und Ziele

Dies ist kein Kurs um die Bedienung eines Computers zu erlernen, sondern um die Grundlagen der Programmierung und anderer Informatikthemen kennenzulernen.

Einen großen Teil der Kurses wird das Programmieren mit Java einnehmen. In einem ersten Block werden Grundlagen der imperativen Programmierung mit Java behandelt, im zweiten Block geht es um Objektorientierung. Zu den Programmiergrundlagen kommt ergänzendes Basiswissen über die Darstellung und Verarbeitung von Informationen im Computer (Binärsystem, Kodierungen, Aussagenlogik, Speicherverwaltung).

Im dritten Block des Kurses werden Algorithmen und Eigenschaften von Algorithmen am Beispiel von Such- und Sortieralgorithmen besprochen. Auch das Thema Rekursion wird behandelt. Im vierten und letzten Block können je nach Interesse und Zeit Wahlthemen dazukommen wie z.B. Kryptographie, Rechnerarchitektur, Suchen in Texten, Routenplanung, Internet.

Voraussetzungen und Teilnahmebescheinigung

Für eine Teilnahmebescheinigung ist die Anwesenheit bei mehr als 80% der Termine erforderlich.

Es gibt keine Voraussetzungen zur Teilnahme. Der Kurs eignet sich sowohl für zukünftige Studierende der Informatik als auch anderer MINT-Fächer. Einige Ingenieursstudiengänge haben einen Informatikkurs fest eingeplant, aber selbst wenn Informatik nicht verpflichtend im Studienplan steht, sind Informatikkenntnisse generell von Vorteil in unserer digitalisierten Gesellschaft. Ob später in Java oder einer anderen Programmiersprache programmiert wird ist weniger wichtig, da die Konzepte die gleichen sind.