Universität Bremen  
  Universität Bremen FB3 TZI BISS  
  AG BS > Lehre > WiSe 2004/05 > Deutsch
English
 

Praktische Informatik 1, WiSe 2004/05

 

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


Aktuelles

  • Denkt bitte daran, den ausgefüllten Schein zum Fachgespräch mitzubringen! Weiteres unter "Kriterien für den Erwerb eines Leistungsnachweises"
  • Bitte beachtet, dass bei Aufgabenblatt 11 die einfach verkettete Liste als vorlage dienen soll. Das bedeutet konkret, dass der Anfang und das Ende der Liste durch Dummy-Elemente markiert werden und es einen Zeiger auf das aktuelle Element gibt.
  • Die einfach verkettete Liste aus der Vorlesung ist online. Sie dient auch als Vorlage für den neuen Übungszettel.
  • Aufgrund der Aktionen gegen die Einführung von Studiengebühren ist die Abgabe des nächsten und letzten Zettels ausnahmsweise auf die Praktika am Mittwoch und Donnerstag verlegt.
  • Die Fachgesprächstermine und Räume stehen fest (zu finden unter "Kriterien für den Erwerb eines Leistungsnachweises").
  • Neue Literaturhinweise zu Java (Klassenbibliothek und Buch, dass Java 1.5 behandelt).
  • Die Nachhilfestunden finden ab dem 14.12.2004 immer dienstags von 12-14 Uhr im Raum P1 der Ebene 0 statt. Eine Anmeldung ist nicht erforderlich. Dieses Angebot richtet sich insbesondere an alle, denen im Zwischenfachgespräch die Teilnehme empfohlen wurde, aber natürlich auch an alle, die gerne zusätzliche Vertiefung am Rechner machen möchten.
  • Die Java-Bücher im Rechenzentrum sind ausverkauft, neue Exemplare wird es im nächsten Jahr geben.
  • Aufgrund der großen Nachfrage wurde eine weitere Übungsgruppe (Gruppe 12) eingerichtet. Für diese Gruppe meldet euch bitte direkt bei an und gebt unbedingt eure vorige Gruppennummer an. Hier sind besonders die Leute aus den Übungsgruppen mit mehr als 30 Teilnehmern angesprochen. Ihr bekommt dann eine Bestätigungsmail, ob ihr in die neue Gruppe wechseln könnt oder nicht. Ziel ist es, für eine möglichst gleimäßige Verteilung der Teilnehmer auf die Tutorien zu sorgen. Wenn ihr als komplette Gruppe von 3-4 Leuten wechseln wollt, schickt bitte eine Mail mit allen Namen!

Inhalt dieser Seite


MZH HS Termine

VAK: 03-700.01 / 03-700.01a
 
Semester: WiSe 04/05
 
Vorlesung: Mo. 10:00 - 12:00, HS Grosser Hörsaal (2010),
regulär ab 25.10.2004 (inkl. Tutoriums- und Praktikumsbetrieb)
 

Tutorien und Praktika werden in kleinen Übungsgruppen abgehalten. Die Eintragung in die Gruppen findet am 21.10.2004 ab 9.00 Uhr in der Ebene 7 des MZH statt. Bitte sorgt für eine gleichmässige Auslastung der Gruppen.
Tutorien/Praktika:
Gruppe 1 Tutorium:
Praktikum:
Mo. 15-17 Uhr, MZH 7230
Mi. 9-12 Uhr, MZH 0190 (P1)

Gruppe 2 Tutorium:
Praktikum
Mo. 15-17 Uhr, MZH 7220
Mi. 9-12 Uhr, MZH 0210/0220 (P2)

Gruppe 3 Tutorium:
Praktikum:
Mo. 17-19 Uhr, MZH 7210
Mi. 9-12 Uhr, MZH 0230/0240 (P5)

Gruppe 4 Tutorium:
Praktikum:
Mo. 17-19 Uhr, MZH 6240
Mi. 13-16 Uhr, MZH 0190 (P1)

Gruppe 5 Tutorium:
Praktikum:
Mo. 17-19 Uhr, MZH 7220
Mi. 13-16 Uhr, MZH 0230/0240 (P5)

Gruppe 6 Tutorium:
Praktikum:
Mo. 17-19 Uhr, MZH 7230
Do. 9-12 Uhr, MZH 0190 (P1)

Gruppe 7 Tutorium:
Praktikum:
Di. 8-10 Uhr, MZH 7230
Do. 9-12 Uhr, MZH 0210/0220 (P2)

Gruppe 8 Tutorium:
Praktikum:
Di. 8-10 Uhr, MZH 7250
Do. 13-16 Uhr, MZH 0210/0220 (P2)

Gruppe 9 Tutorium:
Praktikum:
Di. 8-10 Uhr, MZH 7260
Mi. 16-19 Uhr, MZH 0190 (P1)

Gruppe 10 Tutorium:
Praktikum:
Mi. 17-19 Uhr, MZH 7210
Do. 16-19 Uhr, MZH 0210/0220 (P2)

Gruppe 11 Tutorium:
Praktikum:
Mi. 17-19 Uhr, MZH 7220
Do. 16-19 Uhr, MZH 0230/0240 (P5)

Gruppe 12 Tutorium:
Praktikum:
Mi 13-15 Uhr, 5210
Do. 13-16 Uhr, MZH 0190 (P1)

Die Studenten der Hochschule für Künste haben eine separate Veranstaltung , die in der HfK stattfindet. Nähere Auskünfte erteilen hier:

,
und


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
  • Darstellung nicht-negativer ganzer Zahlen
  • 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 25.10.2004: pdf
  • Folie zum Aufbau des Speichers aus der Vorlesung vom 25.10.2004: pdf
  • Folie zum Aufbau einer CPU aus der Vorlesung vom 25.10.2004: pdf
  • Folie zum I/O aus der Vorlesung vom 1.11.2004: 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()
  • Blöcke und Scope
  • Statische Funktionen
  • Imperative Algorithmen
  • Spezifikationen, Precondition, Postcondition
  • Datenabstraktion
  • Semantik imperativer Algorithmen/Sprachen

Übungen - Lektüre - Praktikum:

  • Vertiefung der in der Vorlesung vorgestellten Java-Konstrukte, Beispiele in Java
  • Integerzahl als Bitcode ausgeben
  • Elemente im Array suchen
  • Minimum/Maximum im Array suchen
  • Konstanten
  • Übungen zur Semantik imperativer Anweisungen

Programmierpraktikum.

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

Material zu Session 2:

Literatur zu Session 2:

  • Die unten angegebene Literatur über Java, insbesondere Java 2 , Grundlagen und Einführung (in den Tutorien wurden bereits Sammelbestellungen aufgenommen).
  • 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:

  • Quicksort

Übungen - Lektüre - Praktikum:

  • Binäre Suche
  • Bubblesort
  • Mergesort

Material zu Session 3:

  • Das "Quicksort"-Programm aus der Vorlesung vom 6.12.2004: QuickSort.java

Literatur zu Session 3:

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

Session 4: Systematische Java-Spracheinführung

Vorlesung:

  • Grammatik-Beschreibung mit BNF und EBNF
  • Ausdrucksmächtigkeit von BNF im Vergleich zu regulären Sprachen
  • Syntaxchecker
  • Objektorientierung und Java:
    • Klassen und Instanzen
    • Geheimnisprinzip/Kapselung
    • Operationen/Methoden
    • Vererbung und Polymorphismus
    • Überladen und Überschreiben von Methoden

Übungen - Lektüre - Praktikum:

  • Syntaxdiagramme
  • Ableitungsbäume
  • Java und Objektorientierung
  • Dynamische Typen, dynamisches Binden von Methoden

Material zu Session 4:

  • Der Syntaxchecker aus der Vorlesung vom 10.1.2005: Simplesyncheck.java
  • Der Syntaxchecker aus Kirsten's Tutorium vom 12.1.2005: Syntaxchecker.java
  • Ein kleines "Zeichenprogramm" mit Interfaces, Vererbung und was es sonst noch so gibt (als eigenständiges Java-Programm und als Applet) aus Kirsten's Tutorium vom 19.1.2005: malennachzahlen.zip
  • Noch ein Beispiel zu Vererbung und Javadoc aus Kirsten's Tutorium vom 26.1.2005: funktionen.zip
  • s. auch Beispiel zuege.zip aus Session 5
  • Hintergrundmaterial zur Objektorientierung

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:

  • Beispiel für die Tutorien: Zuege als Listenimplementierung mit weiteren Aspekten der Vererbung (u.a. dynamisches Binden): zuege.zip
  • Beispiel aus der Vorlesung: Einfach verkettete Liste

Literatur zu Session 5:

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

Ü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.


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.

In der Mitte des Semesters findet ein "kleines Fachgespräch" statt. Dies betrifft nur Gruppen, deren erste Übungszettel nicht so erfolgreich waren. In der zweiten Hälfte des Semesters werden Leute, die Schwierigkeiten mit dem Stoff haben, in kleinen Gruppen speziell gefördert.

Alle Fachgespräche werden vom jeweiligen Tutor im Beisein des Praktikumsbetreuers durchgeführt. Wiederholungsprüfungen werden bei Jan Peleska abgelegt.

Termine für die Fachgespräche:

Gruppe Datum Raum
1(Paul/Matthias) 16.2.05MZH 8190
2(Shi/Nikola) 17.2.05MZH 8140
3(Jan Oliver/Jan Ole) 14.2.05MZH 5400
4(Artur/Matthias) 14.2.05MZH 7230
5(Stefan/Jan) 14.2.05MZH 5140
6(Tom/Vadym) 14.2.05MZH 7230
7(Shi/Zicheng) 15.2.05MZH 8140
8(Elena/Torsten) 18.2.05MZH 7230
9(Thomas/Alexandre) 15.2.05MZH 7230
10(Elena/Vu) 17.2.05MZH 7230
11(Kirsten/Stefan) 16.2.05MZH 8175
12(Kirsten/Matthias) 16.2.05MZH 8175

Jan Peleska prüft auf Wunsch am 14.2.05 im Raum MZH 8175.

Die Wiederholungsprüfungen finden am 30. und 31.3.05 ebenfalls im Raum MZH 8175 statt.

Zur Prüfung muss der ausgefüllte Schein (gibt's in der 7. Ebene oder hier als Vordruck zum Ausdrucken) mitgebracht werden:

  • Informatik: Vordruck
  • Digitale Medien: Vordruck
  • Systems Engineering: Scheine liegen bereits vor, nichts mehr mitbringen
  • Technomathematik/Mathematik/Nebenfächler: eigene Scheine mitbringen oder Informatik-Scheine benutzen und im eigenen Prüfungsamt anerkennen lassen
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. In den Tutorien werden in der ersten Woche Sammelbestellungen aufgenommen.
  • 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: 5. Oktober 2005   Impressum