Propädeutikum Grundlagen Informatik

Winter 2016/2017
Wiltrud Kessler
Zeiten Kurs A: Mo 9:45–11:15 Uhr, Mo 11:15–13:00 Uhr, Do 8:00–9:30 Uhr
Zeiten Kurs B: Mo 8:00–9:30 Uhr, Do 9:45–11:15 Uhr, Do 11:15–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 Links
Block 0 "Einführung"
Einführung Informatik Was ist Informatik?
Einführung Linux Einführung in das Betriebssystem Linux
Block 1 "Grundlagen"
Hallo Java, Variablen [HardWay 1]
[HardWay 5]
[JTI 8]
[JTI 9A]
[JTI 9B]
Java online compiler
Ariane V88
Informationsdarstellung Zweierkomplement
Gleitkommazahlen
BitMap
RGB-Farbmodell
Umrechnung von Zahlensystemen
Warum Binär?
Unicode Code Charts
The Absolute Minimum Every Software Developer Must Know About Unicode
ASCII Tabellen
IEEE 754 Umrechner
Warum Festplatten plötzlich schrumpfen
Logik
Fallunterscheidungen [HardWay 12]
[HardWay 15]
[JTI 12]
[JTI 14]
[Insel 2.5]
[BlogBuch 2.6]
Schleifen [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]
Attribute [JTI 27]
[BlogBuch 4.3.2]
Gültigkeitsbereiche [JTI 34]
[Insel 2.7.11]
Konstruktoren [JTI 30]
[BlogBuch 4.3.8]
Zugriffsmodifikatoren [JTI 33]
[BlogBuch 4.3.6]
Klassenmethoden, static [JTI 25]
[Insel 2.7.5]
[BlogBuch 4.3.7]
Fortgeschrittene Themen [JTI 34] (Überladen)
[Insel 2.7.10] (Überladen)
[JTI 30] (this)
[JTI 28] (Typecast)
[JTI 51] (Abstrakte Klassen)
[BlogBuch 4.9] (Abstrakte Klassen)
[Insel 13.3] (Listen)
[BlogBuch 8.3] (Listen)
JavaDoc zu java.util.List
Block 3 "Algorithmen"
Rekursion [ICSJ 70]
[ICSJ 71]
[Insel 2.7.14]
Wikipedia: Koch-Kurve
Wikipedia: Pythagoras-Baum
Türme von Hanoi
Türme von Hanoi
Sortieren Algorithmus der Woche: InsertionSort
Inf-Schule: BubbleSort
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
Arrays [ICSJ 46]
[Insel 3.8]
[BlogBuch 2.09]
Suchen Algorithmus der Woche: Binäre Suche
Wikipedia: Suchverfahren
Hashing Algorithmus der Woche: Hashing
SHA-512-Hash-Generator
Referenzen [JTI 26]
[JTI 29] (null)
[JTI 34] (call-by-value)
Der Stringpool
Stack und Heap
Block 4 "Wahlthemen"
Kryptographie Paar, Pelzl: Understanding Cryptography (Chapters 6, 7, 10) Let's Encrypt
MD5-Hash-Generator
SHA-512-Hash-Generator
Heise: Konsequenzen der erfolgreichen Angriffe auf MD5 (2009)
Golem: Hashfunktion SHA-1 gebrochen (2017)
Internet Heiko Holtkamp: Einführung in TCP/IP Sendung mit der Maus: Internet
Internet Statistics

Installation von Java und Programme compilieren und ausführen

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

Java kann für alle gängigen Betriebssysteme von der Oracle heruntergeladen werden oder über den betriebssystemeigenen Paketmanager installiert werden. Bitte das JDK (Java developer kit) installieren, nicht nur das JRE (Java runtime environment). Im Rechnerpool des MINT-Kollegs ist Java Version 8 installiert, die genaue Version sollte aber keine Rolle spielen für unsere Zwecke.

Zum Schreiben des Codes kann ein beliebiger Editor verwendet werden, praktisch ist ein Editor der Syntaxhighlighting für Java beherrscht. Wir werden auf Linux Kate verwenden. Das gibt es auch für Windows, ansonsten empfehle ich Notepad++ (Windows), oder Atom (Windows, Linux, Mac).

Java JDK installieren:

Java Code compilieren und ausführen:

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 Lernstil passt. Daher vor dem Kauf: Anschauen in der Unibibliothek!

Hier ein paar Bücher und Links die mir gefallen:

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 und weiterführende Konzepte wie Modularisierung oder Rekursion. Zu den Programmiergrundlagen kommt ergänzendes Basiswissen über die Darstellung und Verarbeitung von Informationen (Binärsystem, Kodierungen, Wahrheitswerte, Aussagenlogik).

Im dritten Block des Kurses werden Algorithmen und die Effizienz von Algorithmen am Beispiel von Such- und Sortieralgorithmen besprochen. Neben dem Suchen in Daten kann bei Interesse auch das Suchen in Texten (Internet-Suchmaschinen) oder Karten (Navigation) behandelt werden. Im vierten und letzten Block können je nach Interesse und Zeit weitere Wahlthemen wie Kryptographie, Rechnerarchitektur oder die Funktionsweise des Internets dazukommen.

Organisatorische Informationen

Für eine Teilnahmbescheinigung 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 in einem höheren Semester, aber selbst wenn Informatik nicht verpflichtend im Studienplan steht sind Informatikkenntnisse generell von Vorteil in unserer digitalisierten Gesellschaft.