Universität Bremen  
  Universität Bremen FB3 TZI BISS  
  AG BS > Lehre > WiSe 2006/07 > Deutsch
English
 

Praktische Informatik 1, WiSe 2006/07

 

Diese Seite gibt weitere Informationen zur Vorlesung. Wir bemühen uns diese Informationen so aktuell wie möglich zu halten.


Aktuelles

  • Bringt bitte zu den Fachgesprächen die dazu nötigen Formulare mit:
    • Im Studiengang Informatik (Diplom) einen Sudienbegleitenden Leistungsnachweis (SBLN) der wie folgt ausgefüllt ist Vorlage und zudem Euren Namen und Eure Matrikelnummer enthält.
    • Für die Studiengänge Informatik (Bachelor) oder Digitale Medien (Bachelor) ebenso ein SBLN wie oben mit passend ersetztem Studiengang: Vorlage
    • Studierende im Studiengang Systems Engineering brauchen nichts mitzubringen, die entsprechenden SBLNe erhalten die Veranstalter vom zuständigen Prüfungsamt.
    • Studierende in den Studiengängen Mathematik(Diplom) oder Technomathematik(Diplom) geben bitte bis spätestens zum Fachgespräch ihr Anmeldeformular zur Fachprüfung im Nebenfach Informatik beim jeweiligen Tutor ab. Zum Fachgespräch selbst ist der ausgefüllte SLBN Vorlage mitzubringen.
    • Studierende anderer Studiengänge klären bitte mit ihrem Prüfungsamt, welche Formulare nötig sind. Im Zweifelsfall ist auch in diesem Fall ein SBLN des FB3 mitzubringen Vorlage.
    Die Prüfungsordnung bestimmt im Übrigen, das die Kandidaten sich ggf. durch Vorlage eines Identitätsnachweis mit Lichtbild ausweisen müssen.
  • Die Fachgespräche zur Veranstaltung finden ab dem 12. Februar statt. Die Fachgespräche werden vom jeweiligen Tutor im Beisein des Praktikumsbetreuers durchgeführt, Terminvereinbarungen werden mit dem Tutor direkt getroffen. Alternativ ist es möglich, als Gruppe das Fachgespräch mit Jan Peleska am Montag, dem 12. Februar abzuhalten, hier bitte auch Terminabsprache per mail.
  • Die Wiederholungsprüfungen finden am Freitag, dem 30. März statt, bitte auch hier Terminabsprache direkt mit Jan Peleska per mail.

Inhalt dieser Seite


MZH HS Termine

VAK: 03-05-G-700.01/03-05-G-700.04
 
Semester: WiSe 06/07
 
Vorlesung: Mo. 13:00 - 15:00, HS Grosser Hörsaal (2010),
regulär ab 23.10.2006 (inkl. Tutoriums- und Praktikumsbetrieb)
 

Tutorien und Praktika werden in kleinen Übungsgruppen abgehalten. Die Eintragung in die Gruppen findet während der Einführungswoche statt. Bitte sorgt für eine gleichmässige Auslastung der Gruppen. Praktika und Tutorien beginnen ab dem 30.10.2006.
Tutorien/Praktika:
Gruppe 1 Tutorium:
Praktikum:
Mo. 15-17 Uhr, MZH 7230
Di. 13 - 16 Uhr, MZH 0210/0220 (P2)
Inessa Seifert
Gruppe 2 Tutorium:
Praktikum
Mo. 15-17 Uhr, MZH 7220
Di 13 - 16 Uhr, MZH 0230/0240 (P5)
Achim Mahnke
Gruppe 3 Tutorium:
Praktikum:
primär für Mathematik/Technomathematik
Mo. 17-19 Uhr, MZH 8090
Di 16 - 19 Uhr, MZH 0210/0220 (P2)
Ulrich Hannemann
Gruppe 4 Tutorium:
Praktikum:
primär für Digitale Medien
Mo. 17-19 Uhr, MZH 7260
Mi 16 - 19 Uhr, MZH 0210/0220 (P2)
Inessa Seifert
Gruppe 5 Tutorium:
Praktikum:
Di. 8-10 Uhr, MZH 7250
Mi 13 - 16 Uhr, MZH 0210/0220 (P2)
Shi Hui
Gruppe 6 Tutorium:
Praktikum:
Di. 8-10 Uhr, MZH 7230
Mi 13 - 16 Uhr, MZH 0230/0240 (P5)
Arne Schuldt
Gruppe 7 Tutorium:
Praktikum:
Di. 8-10 Uhr, MZH 1380 (kl. Senatssaal)
Do 9 - 12 Uhr, MZH 0210/0220 (P2)
Raimar Falke
Gruppe 8 Tutorium:
Praktikum:
primär für Systems Engineering
Mi. 13-15 Uhr, IW3 0210
Fr 13 - 16 Uhr, MZH 0210/0220 (P2)
Achim Mahnke
Gruppe 9 Tutorium:
Praktikum:
primär für Mathematik/Technomathematik
Mi. 17-19 Uhr, MZH 7210
Do. 13 - 16 Uhr, MZH 0210/0220 (P2)
Lutz Frommberger
Gruppe 10 Tutorium:
Praktikum:
primär für Digitale Medien
Mi. 17-19 Uhr, MZH 7220
Do 13 - 16 Uhr, MZH 0230/0240 (P5)
Chen Qizhi
Gruppe 11 Tutorium:
Praktikum::
primär für Systems Engineering
Mi 17-19 Uhr, MZH 7230
Fr. 13 - 16 Uhr, MZH 0230/0240 (P5)
Christof Efkemann


Struktur der Veranstaltung

Die Veranstaltung ist in drei Bereiche gegliedert:
  • In der Vorlesung werden die Themenbereiche der Praktischen Informatik im Überblick vorgestellt. Wir versuchen, Fragestellungen und ihre Lösungen zu motivieren, Schwerpunkte zu setzen, Zusammenhänge deutlich zu machen, wichtige Probleme zu verdeutlichen und ganz allgemein den Zuhörern Appetit auf weitere Vertiefung des Lehrstoffs zu machen.

  • In den Tutorien (= Übungen/Lektüre-Stunden) wird der vertiefte Stoff in Gruppen eigenständig erarbeitet: Wir sind überzeugt, dass echtes Verständnis nur aus der selbständigen intensiven Beschäftigung mit der Materie entstehen kann. Daher wird im Rahmen der Übungen Fachliteratur erarbeitet und zusammen mit den Tutorinnen und Tutoren besprochen. In diesem Teil werden auch die Lösungsansätze für die Aufgaben besprochen, die von den Teilnehmern im Programmierpraktikum zu lösen sind.

  • Keine Theorie ohne Praxis: Im Programmierpraktikum werden die erarbeiteten Konzepte im Rahmen von Programmieraufgaben umgesetzt.

Veranstaltungsinhalte

Die folgende Liste von Lerninhalten wird im Laufe des Semesters fortgeschrieben. Sie dient als Checkliste, mit welchen Themen und Begriffen die Veranstaltungsteilnehmer vertraut werden sollten. Eine "Session" entspricht einer zusammengehörigen Lerneinheit, sie muss nicht notwendig in genau einer Vorlesung abgehandelt werden.

Session 1: Grundlagen aus der technischen Informatik

Vorlesung:
  • Begriffe: von-Neumann'sche Rechnerorganisation und Rechnerarchitektur
  • CPU und ihre Grundstruktur (Register und Befehlszähler)
  • Datenbus und Adressbus, Cache, RAM und ROM, Hintergrundspeicher
  • Bytes, Bits, Maschinenworte
  • Ein-/Ausgabeeinheit
  • Arbeitsweise einer CPU ("fetch"-"execute")
  • Assembler und Maschinensprache
  • Speicheradresse versus Speicherinhalt, Speicherwort
  • Der Begriff des Algorithmus: terminierender Algorithmus - deterministischer Ablauf eines Algorithmus - determiniertes Ergebnis eines Algorithmus
  • Die Hierarchie der Programmiersprachen (von "unten nach oben", d.h. von hardwarenah bis anwendungsnah): (1) CPU Mikrocode (2) Maschinencode (3) Assembler (4) Wide-spectrum Languages, 3rd generation (C,C++,Java,Ada,...) (5) Domain-specific Languages (anwendungsspezifische Sprachen)
  • eine fiktive Assemblersprache und ihre Realisierung im Mikrocode
  • Compiler und Interpreter
  • Java Compiler, Java Virtual Machine, Java Laufzeitumgebung

Übungen - Lektüre:

  • Wiederholung von Grundbegriffen aus der Logik
  • Funktionen und Relationen
  • binäre Darstellung positiver ganzer Zahlen
  • Beispiele zur Umsetzung einer fiktiven Assemblersprache in Maschinencode
  • Beispiele zur Umsetzung von Pseudocode in eine fiktive Assemblersprache

Programmierpraktikum:

  • Textverarbeitung in LaTeX
  • Emacs im LaTeX Mode
  • pdflatex und Acrobat Reader - xdvi - ghostview
  • LaTeX-Templates für die Abfassung von Übungsaufgaben

Material zu Session 1:

  • Folie zur von Neumannschen Rechnerarchitektur aus der Vorlesung vom 30.10.2006: pdf
  • Folie zum Aufbau des Speichers aus der Vorlesung vom 30.10.2006: pdf
  • Folie zum Aufbau einer CPU aus der Vorlesung vom 30.10.2006: pdf
  • Folie zum I/O aus der Vorlesung vom 30.10.2006: pdf
  • Hintergrund: Mikroinstruktionen und Pseudoassembler: pdf
  • Hintergrund: Unix- und Latexgrundlagen: pdf

Literatur zu Session 1:

  • Oberschelp und G. Vossen: Rechneraufbau und Rechnerstrukturen, Kapitel 8
  • Gunter Saake, Kai-Uwe Sattler: Algorithmen und Datenstrukturen, Abschnitt 2.1

Session 2: Erste Schritte in Java

Das Lernziel dieser Session besteht darin, ein intuitives Verständnis für die Programmiersprache Java zu bekommen. Weiterhin wird das Verständnis für den Entwurf einfacher Algorithmen vertieft. Dabei sollten die Vorzüge einer algorithmischen Beschreibung mit den Kontrollstrukturen einer 3GL-Programmiersprache wie Java gegenüber der Umsetzung in Assembler klar werden.

Vorlesung:

  • Grundstruktur eines Java-Programms - die main-Methode
  • Kommentare
  • Deklaration lokaler Variablen: die Basisdatentypen int, long, float, double, boolean,
  • Deklaration lokaler Variablen: Arrays von Basisdatentypen, Strings
  • Ausdrücke (expressions) und Anweisungen (commands)
  • Zuweisungen
  • Operatoren auf Basisdatentypen
  • Kontrollstrukturen:
    • Sequenzoperator ;
    • Bedingte Verzweigung if-else
    • Verzweigung durch switch
    • Schleifen: while, do-while, for
  • Ausgabeanweisung System.out.println()
  • Datenabstraktion - Verfeinerung - Abstraktionsfunktion - korrekte Implementierung von n-stelligen Operatoren

Übungen - Lektüre - Praktikum:

  • Vertiefung der in der Vorlesung vorgestellten Java-Konstrukte, Beispiele in Java

Programmierpraktikum.

  • Einstieg in die Programmierung mit Java: Shell, Editor, Compiler

Material zu Session 2:

  • Das Beispielprogramm mit den einfachsten Deklarationen und Anweisungen (Vorlesung vom 13.11.2006): Beispiel1.java
  • Die zu Beispiel1 gehörige Dokumentation (mit Doxygen erstellt): Beispiel1-Dokumentation
  • Das Doxygen-Konfigurationsfile, welches für Eure Aufgaben in gleicher oder ähnlicher Form verwendet werden kann): Doxyfile
  • Das Java-Beispiel (class Set32) für Verfeinerung von Operatoren (Implementierung der Mengenalgebra für Teilmengen von {0,---,31}): Set32.java
    Dieses Programm zeigt auch den Stil der Doxygen-Dokumentation, wie sie für alle zukünftigen Aufgabenblätter erforderlich ist.
    Dabei bitte beachten, dass auch der algorithmische Teil im Code mit Standard-Kommentaren zu versehen ist. Diese erscheinen dann in der Dokumentation an der Stelle, wo sie im Code aufgeführt worden sind. Das Beispiel gibt einen Eindruck, wie der Tiefegrad der Dokumentation in Euren Java-Lösungen aussehen sollte.
    Die mit Doxygen formatierte Dokumentation findet Ihr hier.
    Das zugehörige Konfigurationsfile zur Erstellung der Doxygen-Dokumentation: Doxyfile

Literatur zu Session 2:

  • Die unten angegebene Literatur über Java.
  • Oberschelp und G. Vossen: Rechneraufbau und Rechnerstrukturen, Kapitel 11.4, bzgl. Linker Loader etc.
  • Gunter Saake, Kai-Uwe Sattler: Algorithmen und Datenstrukturen, Abschnitt 3.3 bzgl. imperativen Algorithmen

Session 3: Erste Algorithmen und Datenstrukturen

Vorlesung:

  • Rekursive Sortieralgorithmen: Quicksort
  • Devide-and-Konquer Algorithmen versus Greedy Algorithmen

Übungen - Lektüre - Praktikum:

  • Binäre Suche
  • Bubblesort
  • Mergesort

Material zu Session 3:

  • Das "Quicksort"-Programm aus der Vorlesung vom 04.12.2006 (neu): Qsort.java

Literatur zu Session 3:

  • Gunter Saake, Kai-Uwe Sattler: Algorithmen und Datenstrukturen, Kapitel 5
  • Die algorithmischen Strategien Devide-and-Konquer und Greedy werden bei Gunter Saake, Kai-Uwe Sattler: Algorithmen und Datenstrukturen, Abschnitte 8.2 und 8.3 diskutiert.

Session 4: Systematische Java-Spracheinführung

Vorlesung:

  • Grammatik-Beschreibung mit BNF und EBNF
  • Ausdrucksmächtigkeit von BNF im Vergleich zu regulären Sprachen

Übungen - Lektüre - Praktikum:

  • Syntaxdiagramme
  • Ableitungsbäume

Literatur zu Session 4:


Session 5: Algorithmen und Datenstrukturen: Listen und Stacks

Vorlesung:

  • Listen: mathematische Definition
  • Operationen auf Listen: erstellen, einfügen, löschen, traversieren, ...
  • Pre- und Postconditions zur Spezifikation von Methoden
  • Last-in-first-out (LIFO)- und First-in-first-out (FIFO)-Queues

Übungen - Lektüre - Praktikum:

  • Doppelt verkettete Listen
  • Stacks auf Basis von Listen

Material zu Session 5:

Literatur zu Session 5:

  • Gunter Saake, Kai-Uwe Sattler: Algorithmen und Datenstrukturen, Kapitel 13

Session 6: Algorithmen und Datenstrukturen: Hashing

Vorlesung:

  • Ziel der Streuspeicherung (=Hashing): schnelles Suchen über Schlüsselwerte möglich machen, wobei der Wertebereich der möglichen Schlüsselwerte sehr groß sein kann

Material zu Session 6:

  • Einfaches Beispiel Hashing mit String-Schlüsselnin Java: MyHashS.java

Literatur zu Session 6:

  • Gunter Saake, Kai-Uwe Sattler: Algorithmen und Datenstrukturen, Kapitel 15

Übungszettel

In diesem Abschnitt findet Ihr die Aufgabenblätter und gegebenenfalls Zusatzinformationen für die Lektürestunden zum Herunterladen und ausdrucken.

Die Lösungen zu den Aufgabenblättern müssen mit LaTeX gesetzt werden. Dazu gibt es die Dokumentenklasse und ein Beispiel für die Erstellung der Lösungsvorschläge mit LaTeX/pdfLaTeX. Für manche Installationen (z.B. MikTeX) werden auch noch fancyhdr.sty und moreverb.sty benötigt. Diese kann man aber auch über das Setup-Programm nachinstallieren (empfohlen)

Für die Bewertung der Programmieraufgaben haben wir unsere Grundzüge aufgeschrieben, ebenso wie Hinweise zum Kommentieren und Testen der Programme.

Die mit Latex gesetzten Übunszettel werden ausgedruckt und montags zu Beginn der Vorlesung abgegeben. Quellcode müsst außerdem per Email an eure Praktikumsleiter schicken.

  • Übungsblatt 1, Abgabe am 06.11.2006
  • Übungsblatt 2, Abgabe am 13.11.2006
  • Übungsblatt 3, Abgabe am 20.11.2006 - Dazu auch der Programmrahmen Bubblesort.java
  • Übungsblatt 4, Abgabe am 27.11.2006
  • Übungsblatt 5, Abgabe am 04.12.2006 - Dazu auch der Programmrahmen K2-Programmrahmen.java
  • Übungsblatt 6, Abgabe am 11.12.2006
  • Übungsblatt 7, Abgabe am 18.12.2006
    Der Hinweis zu Aufgabe 1 " Die Tripel werden als Instanzen von Java Klassen mit entsprechenden Attributen und einem Konstruktor gebildet, ..." muss nicht beachtet werden. Als Alternative bietet es sich an (wie in der Vorlesung demonstriert), für jede Komponente des Ergebnistripels einen eigenen 2-dimensionalen Array anzulegen.
  • Übungsblatt 8, Abgabe am 08.01.2007
    Wie in der Vorlesung angemerkt, ist die BNF Index of JAVA language grammar nicht vollständig. Für die Aufgabe 2 sollen folgende weitere Produktionen verwendet werden:
    • Statement ::= ExpressionStatement;
    • ExpressionStatement ::= Assignment ";" ;
    • Assignment ::= LeftHandSide AssignmentOperator ( numeric_expression | bit_expression);
    • LeftHandSide ::= ( ( "-" | "++" "--" ) identifier ) | ( identifier ( "++" | "--" ) )
    • AssignmentOperator ::= "=" | "*=" | "/=" | "%=" | "+=" | "-=" | "&=" | "< <=" | "> >=" | ">>>=" | "^=" | "|=" |
  • Übungsblatt 9, Abgabe am 15.01.2007 - Dazu auch der Programmrahmen AsmInterpreter.java
  • Übungsblatt 10, Abgabe am 22.01.2007 - Dazu auch der Programmrahmen MyList-programmrahmen.java
  • Übungsblatt 11, Abgabe am 29.01.2007 Abgabe am 05.02.2007
  • Die letzte Aufgabenserie: Übungsblatt 12, Abgabe am 05.02.2007

Übungsblatt 11 wird aus der (n-1) - Regelung herausgenommen. Dafür sind nur die n=11 Serien 1 - 10 und 12 relevant. Als Anreiz zur Bearbeitung der Serie 11 werden die erzielten Punkte zusätzlich zu den Punkten aus (n-1) Serien gutgeschrieben.


Kriterien für den Erwerb eines Leistungsnachweises

Die Kriterien für den Erwerb eines Leistungsnachweises werden in der ersten Vorlesung verhandelt. Der Vorschlag der Lehrveranstalter sieht folgendermaßen aus:

Ein Übungszettel gilt als erfolgreich bearbeitet, wenn er zu mindestens 40% gelöst wurde. Es darf nur maximal ein Übungzettel nicht bestanden werden. Bei der Benotung wird der Übungszettel mit der schlechtesten Bewertung nicht berücksichtigt, wobei dies auch ein nicht bestandener Zettel sein kann. Die Note ergibt sich aus der Durchschnittsprozentzahl der erfolgreichen Bearbeitung der restlichen Übungsblätter:

Ab 95%: 1,0
Ab 90%: 1,3
Ab 85%: 1,7
Ab 80%: 2,0
Ab 75%: 2,3
Ab 70%: 2,7
Ab 65%: 3,0
Ab 60%: 3,3
Ab 55%: 3,7
Ab 50%: 4,0
Unter 50% oder bei mehr als einem nicht bestandenen Übungszettel: nicht bestanden

Aus den Übungszetteln ergibt sich die Vornote für das Fachgespräch am Ende des Semesters. Hier wird die Einzelleistung der Gruppenmitglieder überprüft und bewertet.

Alle Fachgespräche werden vom jeweiligen Tutor im Beisein des Praktikumsbetreuers durchgeführt. Wiederholungsprüfungen werden bei Jan Peleska abgelegt. Wer im Bachelor-Studiengang ist, muss Diplom/Master durchstreichen und Bachelor drüberschreiben. Es gibt bis jetzt keine gesonderten Scheine.


Literatur

An dieser Stelle findet sich eine kleine Auswahl an Literatur zur Vorlesung. Weitere Lerninhalte, die nicht direkt in der hier genannten Literatur verfügbar sind, werden als Skripte im Laufe des Semesters im WWW veröffentlicht, die Links werden in diesem Abschnitt angegeben.

Literatur zur Vorlesung

Zum Erlernen der Programmiersprache Java verfahren wir folgendermaßen:
  • Die intuitive, motivierende ;-) Einführung in Java erfolgt auf Grundlage des Tutoriums The Java Tutorial - A practical guide for programmers welches im WWW unter http://java.sun.com/docs/books/tutorial zu finden ist.
  • Das systematische, wissenschaftlich ausgerichtete Erlernen von Java Syntax und Semantik erfolgt auf Grundlage der "offiziellen" Dokumentation The Java Language Specification von James Gosling, Bill Joy, Guy Steele und Gilad Bracha. Auch dieses Dokument ist im WWW erhältlich: http://java.sun.com/docs/books/jls/index.html
  • Einen guten Einstieg bietet das Handbuch Java 2 , Grundlagen und Einführung geeignet, welches beim Zentrum für Netze erhältlich ist.
  • Die Java-Klassenbibliothek zum Nachschlagen
  • Java-Buch das auch 1.5 behandelt: Programmieren mit Java von Reinhard Schiedermeier, Pearson Studium

Online-Literatur zur Java

Algorithmen und Datenstrukturen

  • Zu den Themen Algorithmen und Datenstrukturen wird im Wesentlichen folgendes Buch verwendet:
    Gunter Saake, Kai-Uwe Sattler: Algorithmen und Datenstrukturen. dpunkt 2004

Rechnerorganisation und -architektur

  • Einige Grundlagen in Bezug auf Rechnerorganisation, -Architektur und Assembler-/Maschinensprachen werden auf Basis des Buches W. Oberschelp und G. Vossen: Rechneraufbau und Rechnerstrukturen. Oldenburg 1998 eingeführt.

Latex

  • Für die eingehendere Beschäftigung mit diesem System zum anspruchsvollen Setzen von Dokumenten ist als Einstieg Leslie Lamport: Das LaTeX Handbuch. Addison-Wesley 1995
  • ebenso wie Helmut Kopka: LaTeX Einführung, Band 1. Addison-Wesley 2000 zu empfehlen.
  • Alles, was in Bezug auf LaTeX für die Abgabe der Aufgabenblätter notwendig ist, findet man ebenfalls in der online verfügbaren Kurzanleitung zu LaTeX

Linux und Unix

  • Eine Einführung in die Grundlagen der Benutzung des UNIX bzw. Linux Betriebssystems findet man in dem SuSE-Linux Handbuch im Kapitel 19. Interessant sind dabei insbesondere die Abschnitte 19.5 bis 19.9.

Nachschlagewerke

Allgemeine Fachbegriffe und auch spezielle Begriffe der Informatik werden häufig sehr gut in den im WWW verfügbaren Nachschlagewerken erklärt.

Online-Wörterbuch Deutsch-Englisch

Ein sehr gutes Wörterbuch für Übersetzungen Deutsch-Englisch wird von der TU-Chemnitz zur Verfügung gestellt: http://dict.tu-chemnitz.de

Java, Emacs und LaTeX für zu Hause

Wenn Ihr lieber zuhause arbeiten möchtet, so könnt Ihr das unter allen gängigen Betriebssystemen tun - alle notwendigen Tools dafür stehen kostenfrei im Internet zur Verfügung.

Für Linux (auch auf jeder aktuellen Distribution vertreten):

Für Windows:

Eine Einführung in die Installation von Latex unter Windows findet ihr hier (Miktex-Webseite) und hier (bebildertes pdf-Dokument).

Für MacOS:
 
   
Autor: jp
 
  AG Betriebssysteme, Verteilte Systeme 
Zuletzt geändert am: 16. Oktober 2015   Impressum