Art und Inhalt |
Titel: |
Informatik A |
Veranstalter: |
Tantau, Reischuk, Balbach |
Einordnung: |
Bachelor- Studiengang Molecular Life Science 5. Semester, Pflichtmodul |
Inhalt: |
- Einleitung, Algorithmusbegriff
- Einführung in die Programmierung am Beispiel von JAVA: Grundlagen, grundlegende Datenstrukturen der Informatik, Rekursion, Klassenbegriff
- Grundlagen von Algorithmen
Qualifikationsziele:
- Grundlegendes Verständnis des Algorithmenbegriffs
- Fähigkeit zur Programmierung am Beispiel von JAVA einschließlich rekursiver Methoden und Klassen
- Kenntnis der elementaren Datenstrukturen der Informatik wie Felder, Listen, Bäume, Graphen sowie deren grundlegende Algorithmen
Lernziele (ausführlich)
Hauptlernziele
- Die Studierenden sollen nach Besuch der Veranstaltungen informationsverarbeitende Systeme theoretisch verstehen, in Forschungs- und Entwicklungsprojekten benutzen können und Algorithmen und Datenstrukturen verschiedenen Projektbedürfnissen anpassen können.
- Die Studierenden sollen auf vertiefende Informatikveranstaltungen, insbesondere Veranstaltungen der Bioinformatik, vorbereitet werden.
Geplante Themenkomplexe:
- 1. Einführung, Organisatorisches, Erwartungsabfrage
Einführung zu Computern und Algorithmen
- 2. Information und Daten.
Leitbild: Wie kommt das Video auf die DVD?
- Die binäre Speicherform verschiedener Daten durch Computer kennen und verstehen.
- Wichtige Einheiten von Information kennen und die Speichergröße von Daten abschätzen können.
- Beliebige Daten kodieren können.
- Das Konzept der Datenkompression kennen und verstehen.
- 3. Computer-Hardware
Leitbild: Was ist in der Kiste?
- Grundlegende Rechnerarchitekturen kennen.
- Klassen von Computern und ihre Leistungsfähigkeit kennen und abschätzen können.
- Den prinzipiellen Aufbau von Computern beschreiben können.
- Die wichtigsten Hardware-Komponenten von Computern kennen und ihre Leistungsfähigkeit abschätzen können.
- 4. Computer-Software
Leitbild: Was tun Computer den ganzen Tag?
- Einprozesssysteme und das EVA-Prinzip verstehen
- Programme als Instruktionsfolgen begreifen
- Mehrprozesssysteme verstehen
- Verschiedene Arten von Software benennen und unterscheiden können (Betriebssystem, Anwendersoftware, Treiber, etc.)
- 5. Der Algorithmusbegriff
Leitbild: Von der vagen Idee zur Instruktionsfolge
- Den Begriff des Algorithmus verstehen
- Probleme spezifizieren können
- Einfache Lösungsideen als Algorithmen formulieren können
- Programmiersprachen als Kommunikationsmittel für Algorithmen begreifen
- Das Konzept des Compilers verstehen
Einführung in die Programmierung mittels Java
- 6. Imperative Programmierung
Leitbild: Tu was ich sage! (Leider nicht: Tu was ich meine!)
- Zuweisungen verstehen und benutzen können
- Grundlegende Kontrollstrukturen verstehen und benutzen können
- Algorithmen als imperative Java-Programme formulieren können
- 7. Die Java-Programmiersprache
Leitbild: Eine Programmiersprache für alles und jedes
- Syntax des imperativen Kerns von Java beherrschen
- Java-Programme selbstständig erstellen können
- Java-Programme übersetzen und testen können
- 8. Elementare Datenstrukturen
Leitbild: Wie rede ich über meine Daten?
- Variablendeklaration, Identifier und Scoping verstehen und benutzen können
- Zahlentypen als Datentypen kennen
- Java-Programme erstellen können zur Lösung einfacher numerischer Probleme
- Typkorrektheit und Typfehler verstehen
- Die Speicherung von Variablen verstehen
- 9. Strings
Leitbild: Von der Papyrus-Manuskript bis zur DNA-Sequenz
- Zeichentypen und Strings als Datentypen kennen
- Einfache Stringalgorithmen implementieren können
- Fortgeschrittene Stringalgorithmen kennen und implementieren können
- Anwendungen in der Bioinformatik kennen
- 10. Modellierung und Abstraktion in der Programmierung
Leitbild: Warum ein Gedicht und eine DNA-Sequenz aus Programmiersicht dasselbe sind.
- Modelle als Ausschnitte der Wirklichkeit begreifen
- Problemstellungen auf ihren Kern reduzieren können
- Abstrakte Konzepte erkennen können, die scheinbar unterschiedlichen Anwendungsgebieten zugrunde liegen
- Bekannte abstrakte Konzepte auf unterschiedliche Anwendungsgebiete anwenden können
- 11. Arrays
Leitbild: Nummerierte Bankschließfächer
- Konzept des Arrays verstehen
- Java-Syntax von Arrays beherrschen
- Java-Programme mit Array-Nutzung implementieren können
- 12. Modularisierung im Kleinen und im Großen
Leitbild: Wie man große Problem in genießbare Häppchen aufteilt
- Das Konzept des Top-Down-Entwurf verstehen und anwenden können
- Das Konzept des Unterprogramms/Methode verstehen und anwenden können
- Das Konzept der Klassen- und Modulbildung verstehen
- Java-Syntax der Modularisierung auf Methodenebene beherrschen
- 13. Suchen
Leitbild: Was ist die Telefonnummer von Herrn X?
- Lineare Suche verstehen und implementieren können
- Binäre Suche verstehen und implementieren können
- Laufzeit der Verfahren vergleichen können
- Abschätzen können, wann sich Vorsortierung lohnt
- 14. Rekursion
Leitbild: Die Türme von Hanoi
- Das Konzept der Rekursion verstehen
- Rekursive Methoden implementieren können für numerische Probleme wie ggT
- Wechselseitige Rekursion verstehen und implementieren können
Grundlegende Datenstrukturen und Algorithmen
- 15. Sortieren
Leitbild: Das Telefonbuch
- Folgende Sortierverfahren verstehen: Bubble-Sort, Insertion-Sort, Quick-Sort, Merge-Sort und Distribution-Sort
- Drei dieser Verfahren implementieren können
- Laufzeit der Algorithmen vergleichen können
- 16. Listen als Datenstruktur
Leitbild: Den richtigen Ansprechpartner in einer Behörde finden
- Das Konzept der komplexe Datenstruktur verstehen
- Die Liste als Datenstruktur verstehen
- Listen in Java implementieren können
- Den Unterschied zwischen Listen und Arrays erklären können
- Vor- und Nachteile von Listen und Arrays vergleichen können
- Fortgeschrittene Arten von Listen kennen
- 17. Bäume und einfache Suchbäume
Leitbild: Der Stammbaum
- Das Konzept des (Such)Baumes verstehen
- (Such)Bäume in Java implementieren können
- Vor- und Nachteile von Arrays, Listen und Bäumen beurteilen können
- 18. Fortgeschrittene Suchbäume
- Eine Art fortgeschrittener Suchbäumen kennen und verstehen
- Vor- und Nachteile gegenüber einfachen Suchbäumen beurteilen können
- 19. Hashing
- Konzept des Hashwerts verstehen
- Einfache Hashfunktionen kennen und implementieren können
- Einfache Hashverfahren kennen
- 20. Graphen als Datenstruktur
Leitbild: Busnetze, Eisenbahnnetze, Molekülverbindungen
- Graphen als mathematische Objekte verstehen
- Wichtige Graphbegriffe wie Weg, Zusammenhang, etc. kennen und anwenden können
- Daten und ihre Struktur (wie DNA-Fragmente und ihre Überlappungen) mittels Graphen modellieren können
- Die Datenstruktur des Graphen verstehen und implementieren können
- 21. Graphalgorithmen
Leitbild: Wie komme ich von Lübeck nach Kiel?
- Arten der Graphtraversierung kennen
- Kürzeste-Wege-Algorithmen kennen und implementieren können
- Färbungsproblem kennen und mittels Backtracking lösen können
- Hamiltonsches Pfadproblem kennen
- 22. Problemlösungsstrategien
Leitbild: Wie puzzelt man DNA-Fragmente zusammen?
- Backtracking-Algorithmen verstehen und implementieren können
- Greedy-Algorithmen verstehen und implementieren können
- Dynamische Programme verstehen
- 23. Geometrische Algorithmen
Leitbild: Welcher Antikörper passt zum Antigen?
- Möglichkeiten der Modellierung von Raum- und Flächendaten kennen
- Algorithmen zum Schnitt von Polygonzügen kennen und implementieren können
- Algorithmen zu konvexe Hüllen in der Ebene kennen
Schluss
- Zusammenfassung, Abschlussevaluation, Diskussion, Ausblick
|
Buchempfehlungen: |
- Heinz-Peter Gumm, Manfred Sommer: Einführung in die Informatik, Oldenbourg Verlag, 2004
Die Vorlesung wird sich inhaltlich auf große Teile des Buches »Einführung in die Informatik« vom Gumm und Sommer (Oldenbourg, 39,80 €) stützen. Dieses Lehrbuch deckt das vorgeschlagene Curriculum weitgehend ab. Wir empfehlen jeden Teilnehmer, sich dieses Lehrbuch anzuschaffen. In der Lehrbuchsammlung der ZHB sind 10 aktuelle Exemplare vorhanden.
|
Vorlesung |
Veranstalter: |
Tantau |
Umfang: |
4 SWS, 9 ECTS
Für die Erlangung des Leistungszertifikates müssen folgende Leistungen erbracht werden:
- Indivduelle Bearbeitung der ein- bis zweiwöchentlichen Übungsblätter. Auf allen bis auf zwei Übungsblättern muss die Hälfte der möglichen Punkte erreicht werden und mindestens zweimal muß die eigene Lösung einer Aufgabe in der Übungsmappe vorgestellt werden.
- Bestehen der Klausur (voraussichtlich in der 1. vorlesungsfreien Woche am Donnerstag, 16.2.2006, 13-15 h). Die Klausurnote ergibt die Note für das Leistungszertifikat.
- Erfolgreiche Durchführung eines Software-Miniprojektes in der vorlesungsfreien Zeit. Februar/März 2006.
|
Termine: |
Di 14h-16h, Z1/2, Do 14h-16h, T1 1. Vorlesung: Di. 18.10.05 |
Vorlesungskarte: |
Vorlesungskarte |
Skripte: |
- 2.
Vorlesung, 20.10.2005 (Druckversion)
- 3. Vorlesung, 25.10.2005(Druckversion)
- 4.
Vorlesung, 27.10.2005(Druckversion)
- 5.
Vorlesung, 01.11.2005 (Druckversion)
- 6.
Vorlesung, 03.11.2005 (Druckversion)
- 7.
Vorlesung, 08.11.2005 (Druckversion)
- 8.
Vorlesung, 15.11.2005 (Druckversion)
- 9.
Vorlesung, 17.11.2005 (Druckversion)
- 10.
Vorlesung, 22.11.2005 (Druckversion)
Text
"Zur Diskussion, bei welcher Zahl eine Indizierung anfangen
sollte. (Dijsktra ist einer der bekanntesten Informatiker und hat HIER natürlich vollkommen Unrecht.)"
- 11.
Vorlesung, 24.11.2005 (Druckversion)
- 12.
Vorlesung, 29.11.2005 (Druckversion)
- 13.
Vorlesung, 01.12.2005 (Druckversion)
- 14.
Vorlesung, 06.12.2005 (Druckversion)
- 15.
Vorlesung, 08.12.2005 (Druckversion)
- 16.
Vorlesung, 13.12.2005
(Druckversion)
- 17.
Vorlesung, 15.12.2005 (Druckversion)
Quelltext
der Sortieralgorithmen aus der Vorlesung (neue Version, mit korrigiertem Quicksort)
-
18. Vorlesung, 20.12.2005 (Druckversion)
- 19.
Vorlesung, 05.01.2006 (Druckversion)
http://www.digbib.org/Franz_Kafka_1883/Das_Schloss
(Zum besseren Verständnis vonverketteten Listen ist dieser Text vielleicht nützlich.)
- 20. Vorlesung, 10.01.2006(Druckversion)
- 21. Vorlesung,
12.01.2006 (Druckversion)
- 22. Vorlesung,
17.01.2006 (Druckversion)
- 23. Vorlesung,
19.01.2006(Druckversion)
- 24. Vorlesung,
24.01.2006(Druckversion)
- 25. Vorlesung,
26.01.2006(Druckversion)
- 26. Vorlesung,
31.01.2006(Druckversion)
- 27. Vorlesung,
02.02.2006 (Druckversion)
- 28. Vorlesung,
07.02.2006(Druckversion)
|
Übung |
Organisation: |
Die 4SWS Vorlesung Informatik A werden durch Übungen ergänzt. Wohingegen die Vorlesung aufgrund der Teilnehmerzahl dozentenorientiert unterrichtet wird (werden muss), sollen die Übungen folgendermaßen organisiert sein:
- Teilnehmerorientierter Unterrichtsstil (keine zweite Vorlesung, das Üben steht im Vordergrund).
- Die 3SWS Übungen werden aufgeteilt
- in eine wöchentliche Doppelstunde, die in normalen Übungsräumen abgehalten werden, und
- in eine einstündige Übung in Rechnerräumen.
Bei Bedarf kann die Aufteilung aber auch variieren.
Über die Präsenzeit in den Übungen hinaus (Anwesenheitspflicht) sind für Informatik A 165h im Semester vorgesehen für die eigenen Vor- und Nachbereitung, das Lösen der Übungsaufgaben und die Prüfungsvorbereitung vorgesehen.
Wir schlagen folgende Aufteilung der Zeit für die Eigenarbeit vor:
- 105h (7SWS) für die Vor- und Nachbereitung der Vorlesung und das Lösen der ein- bis zweiwöchentlichen Übungsblätter.
- 40h Software-Miniprojekt in der vorlesungsfreien Zeit.
- 20h Klausurvorbereitung.
|
Umfang: |
3 SWS |
Termine: |
Mo 16h-18h R1, R3, (2 Gruppen) Do 10h-11h, 11h-12h PC-Pool MBT, Inst. für Chemie, EG (2 Gruppen) 1. Übung (PC Pool) Do. 20.10.05 |
Übungsblätter |
- 1.Übung, Abgabetermin: 31.10.2005
- 2.Übung, Abgabetermin: 07.11.2005
Szenarios
- 3.Übung, Abgabetermin: 14.11.2005
Programmeaus der Übung v.
14.11.04
- 4.Übung, Abgabetermin: 28.11.2005
- 5.Übung, Abgabetermin: 05.12.2005
Aufgabenstellung aus der 5. Übung
- 6.Übung, Abgabetermin: 12.12.2005
- 7.Übung, Abgabetermin: 19.12.2005
- 8.Übung, Abgabetermin: 16.01.2006
Präsentationaus der Übung zum 8. Übungsblatt
- 9. Übung, Abgabetermin: 23.01.2006
- 10. Übung, Abgabetermin: 30.01.2006
- 11. Übung, Abgabetermin:
02.02.2006
"Die in der Übung erarbeitete Klasse ColorTree.java"
|
Programmierprojekt: |
Das Programmierprojekt soll in Gruppen von 2-3 Presonen durchgeführt werden, wobei der Arbeitsaufwand pro Person etwa 40 Stunden betragen soll.
Das ganze Projekt verläuft in mehreren Phasen:
- In der ersten Phase haben Sie zwei Möglichkeiten:
Entweder: Erstellen Sie zu einem von Ihnen gewählten Thema eine Projektbeschreibung von etwa einer Seite Umfang. Daraus sollte hervorgehen:
- was das Programm leisten soll (Spezifikation),
- welche Teilprobleme dafür gelöst werden müssen (z.B. Dateiformate entwickeln, Klassen oder Methoden implementieren und dokumentieren),
- welche Dokumentation erstellt werden soll.
Legen Sie uns die Projektbeschreibung vor. Diese werden wir gegebenenfalls kürzen oder erweitern.
Oder: Wählen Sie aus den vorgegebenen Projektbeschreibungen eine aus:
- Dechiffrierung
- Zellulare Automaten
- Molekülvisualisierung
- DNS-Puzzle
- Räuber-Beute-Simulation
- Ergebnisvorhersage
- DNS-Vervollständigung
- Schiffe versenken
- Führen Sie das Projekt gemäß der Projektbeschreibung durch.
- Geben Sie Ihre Programmdokumentation von 2-3 Seiten ab und führen Sie uns Ihr fertiges Projekt vor.
Abgabetermin: 31.03.2006 |
Evaluation |
Evaluationen: |
01.12.2005 WS 2005/06(Ergebnisse der schriftlichen Evaluation vor Weihnachten. Die Bewertung ist in der Tabelle relativ zu den Bewertungen der Grundstudiumsveranstaltungen der Fakultät für Elektrotechnik und Informatik der TU Berlin gezeigt.) |