WS 2010/2011: Informatik für Ingenieure / Einführung in die Programmierung,  Prof. Dr.-Ing. M. Heiner

Latest update: February 01, 2011

 I N D E X

Zielgruppe
Zusammenfassung
Ziele
Voraussetzungen
Organisatorischer Rahmen
Inhaltsübersicht
Literatur
Vorlesungsmaterialien
Übungen

Zielgruppe

Zusammenfassung       

 Ziele

Voraussetzungen

Organisatorische Rahmen

Hinweise

Entsprechend der Rahmenregelung der BTU, die für alle Studierende gilt, erfolgt die Anmeldung für einen Modul ONLINE beim Prüfungsamt  und muß von jedem Teilnehmer eigenverantwortlich innerhalb der ersten zwei Wochen durchgeführt werden.

Von dieser Anmeldung kann man innerhalb der ersten sieben Wochen schriftlich/online zurücktreten. Für diese Veranstaltung wurde diese Frist um eine Woche verlängert und endet damit am 04.12.2010 (diese Sonderregelung wurde bestätigt) .

Mit der Anmeldung zu einer Lehrveranstaltung ist man für die zugehörige Prüfung angemeldet.

Die Lehrveranstaltung besteht pro Woche aus einem Block Vorlesung,  einem Block Laborübung und einem ergänzenden Block Hörsaalübung (4 SWS, 6 ECTS).

Vorlesungen 

dienstags, 3. Block, Audimax 2; Beginn: 12.10.2010;

Hörsaal-/Laborübungen

Gruppeneinteilung und organisatorische Leitung:
Frau  Mielcarek-Claus, claus(at)informatik(dot)tu-cottbus(dot)de
Für weitere Informationen siehe Übungsseite.

Jeder Teilnehmer muss sich zu EINER Laborübung und zu EINER Hörsaalübung anmelden. Diese Einschreibung erfolgt ONLINE über das Einschreibsystem  LEHVIS (LEHrVeranstaltungsInformationsSystem) vom 12.10.2010 - 31.10.2010 und ist für jeden Teilnehmer verpflichtend. Die Teilnahme an den Laborübungen ist verpflichtend, die Teilnahme an den Hörsaalübungen ist fakultativ.

Hörsaalübungen werden im Hörsaal durchgeführt und dienen dem interaktiven Vorrechnen von ergänzenden Übungsaufgaben, Fragen sind willkommen.

Laborübungen werden im Computerlabor durchgeführt und dienen v.a. zur Bearbeitung der Übungsblätter mit individueller Betreung durch Tutoren.

Jedes Übungsblatt enthält  Pflichtaufgaben.  Die Pflichtaufgaben sind von jedem Teilnehmer SELBSTÄNDIG zu lösen. Die Lösungen sind termin- und formgerecht und INDIVIDUELL beim Tutor per eMail abzugeben. Die Entscheidung hierüber liegt beim Tutor.

Die Lösungen werden mit 0 ("nicht bestanden!), 1 ("ausreichend") oder 2 ("gut") bewertet.

Während der Laborübungen werden zufällig ausgewählte Studenten gebeten, ihre Lösungen vorangegangener Übungsblätter zu erläutern. Sollten Sie dabei in "Erklärungsnot" geraten, gilt die Abgabe als "nicht bestanden".

Pro Laborübung sind ca 2/3 der Zeit für Hilfestellungen beim Lösen neuer Übungsaufgaben vorgesehen und 1/3 für individuelle Kontrollfragen zu eingereichten Lösungen.

Die Übungen beginnen in der zweiten Vorlesungswoche (42. KW 2010).

Prüfung

Die Prüfung besteht aus drei Teilen:
Hinweis für Wiederholer: eine erfolgreiche Übungsteilnahme aus früheren Jahren wird auf Antrag bei Frau Claus anerkannt. Diese Anerkennung schließt die Belegung eines Platzes in den Laborübungen aus.

Termin Wiederholungsprüfung: 01.04.2011, 8.00 - 10.00 Uhr

Zum Bestehen der Prüfung sind 50% der erreichbaren Gesamtpunktzahl erforderlich. Die Benotung erfolgt nach dem üblichen Notenspiegel.

Alle Klausuren werden ohne Unterlagen (d.h. auch ohne Handy) geschrieben.
Alle Prüfungsteile werden im Audimax 1, Audimax 2 bzw. GH geschrieben. Die Aufteilung wird rechzeitig bekanntgegeben.
Und hier ein Beispiel, wie eine Prüfungsklausur etwa aussehen könnte.

Allgemeines

Ein Credit entspricht 25 - 30 Arbeitstunden (siehe bundesweite Rahmenvorgaben, Anlage, Abschnitt 1.3 Vergabe von Leistungspunkten). Somit gilt

Vorlesung mit 6 Credits = 150 - 180 Arbeitsstunden; bei 18 Wochen (15 Wochen Vorlesung + 2 Woche Prüfungszeit + 1 Woche) macht das 8.3 - 10 Arbeitstunden pro Woche! Davon sind 3 h sogenannte Kontaktstunden, womit 5.3 - 7 h pro Woche zur Vor-/Nachbereitung der Vorlesung bzw. Bearbeitung der Übungsaufgaben verbleiben.

Diese Aufwandskalkulation ist beim Verfassen des Vorlesungsstoffes un der Übungsthemen berücksichtigt worden.

Inhaltsübersicht (to be updated)

1. Grundlegende Begriffe

Informatik, Hardware/Software,
geozentrische/heliozentrische Weltbild der Informatik,
Algorithmus, Notationen, Eigenschaften; Beispiel Euklid;

2. Einführung in die Programmierung

2.1 Erste Programmierschritte

Lineare Programme (Konstanten, Variablen, Wertzuweisung, E/A-Anweisung), Typkonzept,
Verzweigte Programme (if-Anweisung, switch-Anweisung),
Programme mit Schleifen (while-Anweisung, do-while-Anweisung, for-Anweisung);
strukturierte Sprünge (break, continue);
Syntax, Semantik, Pragmatik;

2.2 Komposite Datenstrukturen/Typen

Reihungen (Arrays),  Strukturen (Records) und deren Kombination;
Umgang mit Pointern (Zeigervariablen);

2.3 Unterprogramme

Motivation, Deklarationsniveau, Deklarationsreihenfolge, Abarbeitungsreihenfolge;
Unterprogramme mit/ohne Parameter bzw mit/ohne Ergebnis; Prozeduren/Funktionen;
call-by-value/call-by-reference - Parameterübergabe; Pointer als Parameter;
gleichnamige Unterprogramme; rekursive Unterprogramme;

2.4 Robuste Programme

Tolerieren einfacher Nutzungsfehler wie Overflow/Underflow bzw. unzulässiger Eingabewerte;
Reagieren auf Standard- bzw. nutzerdefinierte Ausnahmen;

2.5 Graphische Oberflächen (GUI)

zwei Klassenbibliotheken: AWT bzw. Swing, wesentliche Unterschiede;
Aufbau einer GUI aus Interaktionselementen (Button, Choice, Canvas, Label, Textfield, ...) und Darstellungsflächen (Frame, Panel, ...);
drei Layout-Prinzipien: Flow, Grid, Border;
Ereignisbehandlung: Hörerklassen, Hörerobjekte und deren geeignete "Einplanzung";

2.6 Zum Programmieren im Großen

in vier Schritten vom
(1) (top-down strukturierten) monolithischen Programm über
(2) modulare Programmierung und
(3) Verwendung abstrakter Datentypen (ADT) zur
(4) objekt-orientierten Programmierung;

Darstellung der Abhängigkeiten in einem Modulgraphen = Klassendiagramm mit drei Relationen (Kantentypen): "benutzt", "implementiert", "beerbt";
die Schlüsselwörter: static, public, private, interface, implements, extends, abstract;

Grundideen der Objektorientierung:
drei Merkmale: Datenkapselung (-> ADT), Polymorphie, Vererbung;
graph. Darstellung der Vererbungshierarchie durch einen Baum (bei Einfachvererbung) -> Klassendiagramm;
Prinzip zur Auswahl der auszuführenden Operation (aufwärts entlang der Vererbungslinie);
sprachliche Feinheiten: super, this, abstract, cast (Zuschnitt);


2.7 Dateiarbeit ergaenzendes Material

Datei als externes Speichermedium zur Kommunikation zwischen Programmen;
Grundidee in Java: jede Art von E/A basiert auf dem Lesen/Schreiben von Datenströmen (sequentiellen Dateien); ungetypte und getypte einfache Dateiarbeit; ]

--------------- 2010 / 2011 --------------- 2010 / 2011 --------------- 2010 / 2011 --------------- 2010 / 2011 ---------------

3. Ausgewählte Datenstrukturen und Algorithmen

3.1 Dynamische Datenstrukturen/Typen

einfach und doppelt verkettete lineare Listen (Zeigerstrukturen);
Grundoperationen  zum Erzeugen, Einfügen, Löschen von Listenelementen und zum Durchlauf durch eine Liste;
Anwendungsbeispiele: dynamische Integer-Zahlen, Adjazenzlisten-Implementierung für Graphen;

3.2 Bäume

Graphen in der diskreten Mathematik;
allg. Bäume: Eigenschaft, wesentliche Begriffe zur Arbeit mit Bäumen;
binäre Bäume:  Eigenschaft, zwei Implementierungsvarianten; Durchlaufverfahren: Preorder, Inorder, Postorder;
binäre Suchbäume: Eigenschaft, Suche im Suchbaum;
ausgeglichene Suchbäume;

3.3 Formelauswertung

ein allg. Verfahren zur Auswertung beliebiger Formeln mit Hilfe von Formelbäumen und dem ADT Keller;

3.4 Sortieralgorithmen

zum Begriff der Laufzeitkomplexität - ein Ansatz zum (groben) Vergleich von Algorithmen;
elementare Verfahren, spezielle Verfahren, höhere Verfahren - ein Überblick;

3.5 Petrinetze

Model-basierter Entwurf technischer Systeme, einige Grundbegriffe;

--------------- aktueller stand --------------- aktueller stand --------------- aktueller stand ---------------

Literatur 

eine sehr kleine Auswahl nützlicher Literatur:

Einführung in die Informatik

Einführung in die Programmierung anhand Java

Anmerkung:
Diese Bücher gefallen mir persönlich recht gut. Das schließt nicht aus, daß Sie andere nützliche Bücher finden, die Ihnen vielleicht sogar besser gefallen und besser helfen.

Und hier noch ein on-line Tutorial:

Vorlesungsmaterialien

Folien aus der Vorlesung als pdf-Dateien (2 Folien auf einer Seite)
bzw. Demo-Programme als Java-Quellen,
ggf. im zip-Format:
Die mit *) gekennzeichneten Quellen sind [Rauh 2002] entnommen.

zu 1.  Grundlegende Begriffe

Euklid.pdf  (2 p.)

zu 2.1 Erste Programmierschritte

Einführung in die Programmierung, das Wichtigste in Kürze (4 p.)
Kurzeinführung in Mini-Java (14 p.)
Wuerfel.java    Hello.java    ProgramPattern.java

Ein-/Ausgabe

Hier ein alternatives EA-Paket dssz.io.zip; entpacken und das Verzeichnis in die Systemvariable "classpath" eintragen. Hier ein Testprogramm: Wuerfel_dssz_io.java. Alle weiteren Beispiele benutzen dieses Paket "dssz.io".

Achtung beim Divisionsoperator:

DivDemo.java demonstriert den Unterschied zwischen ganzzahliger und reeller Division.

IfDemo1.java    IfDemo2.java    IfDemo3.java    IfDemo4.java *)
SwitchDemo1.java    SwitchDemo2.java    SwitchDemo3.java *)
WhileDemo1.java    WhileDemo2.java    WhileDemo3.java
DoWhileDemo1.java    DoWhileDemo2.java
ForDemo1.java    ForDemo2.java    ForDemo3.java

zu 2.2 Komposite Datenstrukturen/Typen

Umgang mit Pointern.pdf (6 p.)         Umgang mit Pointern, animated
PointerDemo.java
ArrayDemo1.java    ArrayDemo2.java  
StructDemo1.java    StructDemo2.java    StudentDb1.java    StudentDb2.java

zu 2.3 Unterprogramme

Parameterorganisation (6 p.)

ProcDemo1.java    ProcDemo2.java    ProcDemo3Euklid.java    ProcDemo4.java
Fakultaet.java     ProcDemo5.java
Max.java  -> Skript Mini-Java

zu 2.4 Robuste Programme

Euclid_non_robust1.java    Euclid_non_robust2.java    Euclid.java
Fak.java    Fak1.java    Fakultaet.java
ProgramErrorsDemo.java
ExceptionDemo1.java    ExceptionDemo2.java    ExceptionDemo3.java    ExceptionDemo4.java
ProgramPattern1.java

zu 2.5 Graphische Oberflächen

crash-Kurs in AWT.zip *)  
von AWT zu Swing: ein einfacher Taschenrechner in sechs Varianten.zip
Skript zu GUI in Java/Swing.pdf (8 p.)

Grundlegende Fensterorganisation
    FirstFrame.java        EinFrame.java         Frame1.java       Haus.java

drei Layout-Manager
    Flow-Layout                - Farbwahl1.java        
    Grid-Layout                - Farbwahl4.java         Farbwahl2.java       
    Border-Layout            - Farbwahl5.java

Interaktionselement 'Auswahlliste'
    Farbwahl3.java

Ereignis-Behandlung
    Farbwahl2a.java      Farbwahl2b.java      Farbwahl3a.java

Beispiel 'Calculator'
       Calculator1.java     - Grid-Layout
       Calculator2.java     - Mix aus den drei Layout-Varianten
       Calculator3.java     - actionPerformed in nur einem UP
       Calculator4.java     - Swing-Anpassungen
       Calculator5.java     - modales Dialogfenster    WarningDialog.java 

zu 2.6 Zum Programmieren im Großen

    Schritt1:     Hello1.java    Hello1a.java   
    Schritt2:     Hello2a.java     Hello2b.java     Hello3.java     Hello4.java
    Schritt3:     Hello5.java    Hello6.java
    Schritt4:     Hello7.java    Hello8java

mehr zur Objektorientierung
    Anmerkung: diese Demo-Programmen wurden  in der Vorlesung nicht behandelt.
    (1) Einsatz von Vererbung *)     (2) Arbeit mit abstrakten Klassen *)
    Vererbungshierarchien.sld zu (1) und (2), (2 p.) *)

[ zu 2.7 Dateiarbeit

    von Byte-Strömen zu (getypten) Objekt-Strömen - sieben Demos     Skript zur_Dateiarbeit (2 p.)
    Anmerkung: Dateiarbeit wurden  in der Vorlesung nicht behandelt.
]

--------------- 2010 / 2011 --------------- 2010 / 2011 --------------- 2010 / 2011 --------------- 2010 / 2011 ---------------

zu 3.3 Formelauswertung

Eine einfache Implementierung für Formeln in Postfix-Notation, die nur die vier binären Grundoperationen zulassen, diese aber in beliebiger Kombination;
basiert auf den java.util-Klassen Stack und StringTokenizer, ausserdem wird die Wrapper-Klasse Double für den primitiven Typ double verwendet;
demonstriert auch sehr schön die Trennung von Funktionalität und (textueller bzw. graphischer) Oberfläche:

 Postfixrechner.java *)    PostCalcT.java *)    PostCalcG.java *)     IntIO.class *)

zu 3.4 Sortieralgorithmen

zur Laufzeitkomplexität.pdf

hier eine txt-Datei mit dem Java-Programmkode der in der Vorlesung angesprochenen Algorithmen,
... und hier zwei Programme zur Visualisierung ausgewählter Algorithmen als jar-Dateien (Aufruf:  java -jar <file name>.jar)
sortDemo1.jar    sortDemo2.jar

zu 3.5 Petrinetze

Einführung Petrinetze.pdf (8 p.)
Hier gibt es einpaar im Web-Browser animierbare Beispiele,
diese Petrinetze.zip können mit unserem Petrinetz-Werkzeug Snoopy ausgeführt werden.

--------------- aktueller stand --------------- aktueller stand --------------- aktueller stand ---------------

. . . T H E  E N D . . .

sachdienliche Hinweise zu dieser Seite bitte an: