Material

Vorlesungsfolien

Die alten Vorlesungsfolien (s.u.) werden laufend zur Vorlesung aktualisiert und mit ein paar Tagen Verzug hochgeladen und in der unten stehenden Tabelle verlinkt.

 Inhalt   Druckvorlage (4 auf 1)  Druckvorlage (1 auf 1)   Datum
 Folien zur Organisation   Abschnitt 0.3 (2 auf 1)    26.10.10
 Folien Einführung in SE1       slides1.pdf (2 auf 1)    26.10.10
 Grundkonzepte von Softwaresystemen I  SE-1_2.1-2.2.1.pdf (2 auf 1)    29.10.10
 Grundkonzepte von Softwaresystemen II  SE-1_2.2.2.-Kapitel2Ende.4auf1.pdf  SE-1_2.2.2.-Kapitel2Ende.pdf   01.11.10
 Funktionales Programmieren I      SE-1_3-3.1.7.4auf1.pdf  SE-1_3-3.1.7..pdf  17.11.10
 Funktionales Programmieren II     se1.3.1.8-3.1.11.4auf1.pdf  se1.3.1.8-3.1.11.pdf   18.11.10
 Funktionales Programmieren III   se-1_3.1.12.4auf1.pdf  se-1_3.1.12.pdf   23.11.10
 Funktionales Programmieren IV - 3.1.13 - Module  SE-1_3.1.13.4auf1.pdf  SE-1_3.1.13.pdf  02.12.10
 Funktionales Programmieren IV - 3.2 -  Polymorphie und Funktionen höherer Ordnung *  SE-1_3.2.4auf1.pdf  SE-1_3.2.pdf  02.12.10
 Funktionales Programmieren IV - 3.3 -  Algorithmen auf Listen und Bäumen *          SE-1_3.3.1.4auf1.pdf  SE-1_3.3.pdf  02.12.10
 Funktionales Programmieren V - 3.3.3 - Testen und Verifikation                                                      SE-1_3.3.3.4auf1.pdf
 SE-1_3.3.3.pdf   08.12.10
 Prozedurales Programmieren I - 4.0. - (Einführung) Prozedurale Programmierung in Java **     SE-1_4.0.4auf1.pdf  SE-1_4.0.pdf  09.12.10
 Prozedurales Programmieren II - 4.0.4 - Prozedurale Programmierung in Java (Fort.) **    SE-1_4.0.4.4auf1.pdf  SE-1_4.0.4.pdf  14.12.10
 Prozedurales Programmieren I - 4.0 Prozedurale Programmierung und 4.1. Programmablauf    SE-1_4.1.4auf1.pdf  SE-1_4.1.pdf  06.01.11
 Prozedurales Programmieren II - 4.2 Speicher und Datenstrukture  SE-1_4.2.4auf1.pdf  SE-1_4.2.pdf   06.01.11 
 Prozedurales Programmieren III - 4.3 Algorithmen in prozeduraler Formulierung   SE-1_4.3.4auf1.pdf  SE-1_4.3.pdf  13.01.11
 Prozedurales Programmieren IV - 4.4.0 Spezifikation von Prozedureigenschaften und 4.4.1 Verifikation prozeduraler Programme   SE-1_4.4.1.4auf1.pdf  SE-1_4.4.1.pdf  17.01.11
 Prozedurales Programmieren V - 4.4.2 Verifikation von Prozeduren   SE-1_4.4.2.4auf1.pdf SE-1_4.4.2.pdf 19.01.11
 Objektorientiertes Programmieren I - 5.1 Objektorientiertes Programmieren + 5.2. Objektorientiertes Paradigma SE-1_5.1-5.2.4auf1.pdf SE-1_5.1-5.2.pdf 20.01.11
 Objektorientiertes Programmieren II - 5.3 Objekte, Klassen, Kapselung - 5.3.6 Zusammenwirken der Spracherweiterungen SE-1_5.3-5.3.6.4auf1.pdf SE-1_5.3-5.3.6.pdf 24.01.11
 Objektorientiertes Programmieren III - 5.3.7 Rekursive Klassen + 5.3.8 Typsystem von Java und parametrische Typen SE-1_5.3.7-5.3.8.4auf1.pdf SE-1_5.3.7-5.3.8.pdf 28.01.11
 Objektorientiertes Programmieren VI - 5.3.9 Kapselung und Strukturieren von Klassen SE-1_5.3.9.4auf1.pdf SE-1_5.3.9.pdf 01.02.11
 Objektorientiertes Programmieren V - 5.4.1. Klassifizieren von Objekten SE-1_5.4.1.4auf1.pdf SE-1_5.4.1.pdf 03.02.11
 Objektorientiertes Programmieren IV - Subtypen und Vererbung, UML, Execptions, JAVA I/O, Typkonvertierung  oofinish.4auf1.pdf oofinish.pdf 08.02.11

 * Durch eine Änderung in der Struktur der Vorlesung, wurde aus Kapitel 3.3.1 "Polymorphie und Funktionen höherer Ordnung" Kapitel 3.2.1. Wenn Sie sich schon die alte PDF, SE-1_3.3.1.4auf1.pdf, vom 29.11.10 ausgedruckt haben, brauchen Sie aus der neuen PDF, SE-1_3.2.4auf1.pdf, noch das Kapitel 3.2.2 "Funktionen höherer Ordnung".

 ** Aus Konsistenzgründen wurde die Nummerierung der Abschnitte 4.0 bis 4.0.4 aktualisiert. Die Inhalte von SE-1_4.0.pdf und SE-1_4.0.4.pdf finden Sie jetzt zusammengefasst in SE-1_4.1.pdf (Prozedurales Programmieren I - 4.0 Prozedurale Programmierung und 4.1. Programmablauf). Weiterhin finden Sie in SE-1_4.1.pdf neun 'neue' Folien, die Kapitel 4.1. (alt 4.0.4.) mit den Themen Seiteneffekte und Determinismus abschließen. Wenn Sie sich schon die Datei SE-1_4.0.4.pdf heruntergeladen und ausgedruckt haben, brauchen Sie also aus SE-1_4.1.pdf nur noch die letzten neun Folien.


Glossar

Zu den in der Vorlesung verwendeten Begriffen gibt es nun einen Glossar. Sie können dort schnell nach der Bedeutung und Anmerkungen zu vielen Begriffen suchen. Die Auflistung ist natürlich nicht vollständig und der Inhalt soll nur eine Hilfestellung sein und versteht sich nicht als Definition der Begriffe.
Im wesentlichen dienten die Folien aus Vorjahren als Quelle, was bedeutet, dass viele Begriffe in einem speziellen Kontext erwähnt wurden, der im Glossar natürlich nicht mehr sichtbar ist. Alles in allem ist weiterhin die Vorlesung selbst ausschlaggebend, sowie die aktuell bereitgestellten Folien und sonstigen Quellen. Bitte beachten Sie auch, dass sich der Inhalt des Glossars jederzeit ändern kann.

Alte Vorlesungsfolien

Die alten Vorlesungsfolien unterscheiden sich von den in der Vorlesung benutzten, Sie werden aber als Unterstützung für interessierte Studenten online gestellt. Alte Vorlesungsfolien für SE-1 (PDF)


Haskell Beispiele aus den Vorlesungen

 Link  Beschreibung   Vorlesung 
 "Taschenrechner"    mit lexikographischer Analyse und Parsing   23.11.10
 Rule 110     23.11.10
 Map-Reduce  Funktionen höherer Ordnung  25.11.10
 PQ-Sort  Priority Queue Sort (auch Heapsort)  02.12.10
 Natural Binary Tree  Natürliche Bäume und deren Validierung   02.12.10

Haskell Quick Reference



Java Beispiele aus den Vorlesungen NEU


 Link
 Beschreibung
 Java Beispiele.  Java-Äquivalente der Haskell Beispiele
 Storage Management with Pools  Beispiel für den Gebrauch manueller Speicherverwaltung in Java
 Storage Management in Memory  Abbildung manueller Speicherverwaltung auf den Hauptspeicher einer CPU; Implementierung von Listen in Sprache, wie C
 Lists as Arrays  Darstellung von Listen durch Felder; Algorithmus am Beispiel von Quicksort.
 Garbage Collection Example  Illustriert die Grundideen zu Gargage Collection (automatische Speicherverwaltung).
JButtonDemoIllustriert den Gebrauch von inneren Klassen.
 MyComponentIllustriert den Gebrauch von Vererbung und dynamischer Bindung in der Erstellung neuer Funktionalität.
 Beispiele für Datentypen NEU Quellcode des MiniCollection Beispiels 
 IntSet NEU   Verschiedene IntSet Implementierungen
 Weitere Java Beispiele NEU  Convert.java, Cov.java, Test.java, Throw.java, Override.java


Weitere Assertion Beispiele NEU

Weitere Beispiele zu den Annotationsbeweisen der Vorlesung finden Sie in folgender PDF: assertion_beispiele.pdf
(Update: 20.01.11, Die Nachbedingung im Fließtext des Quad Beispiels stimmte nicht mit der in den Annotationen überein.) 


Übungsblätter und Lösungshinweise/-vorschläge

Sie erhalten die Übungsblätter in Ihrer eigenen Übung vom Tutor. Nach dem jeweiligen Ausgabezeitraum werden die Blätter dann online gestellt.
Übrig gebliebene Blätter der jeweils vergangenen Woche werden in der AG Breuel nahe der Fachschaft ausgelegt.

 Nr.    Blatt   LHV   Materialien   Kommentar
  1  pdf  pdf    Dieses Blatt ist komplett vor der ersten Übung zu bearbeiten. 
  2  pdf  pdf    Dieses Blatt erhalten Sie in Ihrer ersten Übung.
  3  pdf  pdf  RoboLib.hs  Beachten Sie die Hinweise unten, zur Installation auf eigenen Rechnern und der Benutzung von außerhalb.
  4
 pdf  pdf    
  5
 pdf  pdf  mensaplan.hs
 Exp.hs
 Update: Plan jetzt für diese und nächste Woche, einfach in das eigene Programm kopieren.
 
  6  pdf  pdf  Exp.hs  Erweiterte Variante für die Folgeaufgabe auf diesem Blatt.
  7  pdf  pdf  Dictionary.hs
 mapreduce.hs
 RoboLib.hs
 Signatur des Dictionary zur einfachen Erweiterung (Aufgabe 2).
 Definition von mapreduce, zur Benutzung zusammen mit shakespeare-romeo-48.txt.
 Modifizierte und erweiterte RoboLib (Aufgabe 4).
  8  pdf  pdf  IO.java
 HSTurtle.zip
 HSTurtle.tgz
 Beim prozeduralen Java verwenden wir diese Programmstruktur.
 Beachten Sie die Hinweise zur Turtle-Bibliothek unten.
  9
 pdf  pdf    
 10  pdf  pdf  PC.java  Material zu Aufgabe 4. Extrablatt.
 11  pdf  pdf  Routenplanung.zip   Material zu Aufgabe 4.
 12  pdf  pdf  Secret.zip
 SEGraphics.java
 Materialien zu den Aufgaben 3 und 5.
 In Aufgabe 3 sind correctPlace und correctDigit wie bei Mastermind üblich zu verstehen.
 13 pdf pdf Environment.java Material zu Aufgabe 5.
 14 pdf pdf  
       Grammars.hs
 Ein kleines Programm zur Definition von Grammatiken und Darstellung von Worten und deren Ableitungen.

  • Hinweis: Wenn Sie zu Hause oder auf einem Laptop Haskell - und vor allem den Roboter - verwenden wollen, empfehlen wir die Haskell Plattform zu installieren (Link). Damit erhalten Sie auch das Tool cabal, mit dem Sie zusätzliche Pakete installieren können. Für den Roboter brauchen Sie zusätzlich zu denen aus der Plattform noch vty, vty-ui, data-accessor und data-accessor-template. All diese können Sie, mit allen Abhängigkeiten, durch den Befehl cabal install vty-ui data-accessor-template installieren. Vor dem ersten Aufruf von cabal müssen Sie einmalig ein cabal update ausführen. Beachten Sie außerdem, dass auf Ihrem System die beiden Bibliotheken pcre-light und terminfo installiert sein müssen. (Unter Ubuntu geht dies z.B. einfach über den Paketmanager; Pakete libghc6-pcre-light-dev und libghc6-terminfo-dev.)
  • Hinweis: Wenn Sie an der Uni mit dem Roboter gearbeitet haben, können Sie von außerhalb einfach mit SSH auf dem SCI weiter arbeiten. Dies geht insbesondere auch von Windows aus, wo sich der Roboter auch nur sehr schwer installieren lässt. Sie benötigen dafür ein Programm wie PuTTY. Informationen dazu finden Sie unter anderem auch auf der Webseite des SCI: SCI Rechnerzugang FAQ
  • Hinweis: Für die Weihnachtsaufgabe benötigen Sie entweder das Paket hpdf (für PDFTurtle) oder glfw (für GLTurtle). Beide sind mit cabal, wie oben beschrieben, leicht zu installieren. Die Archive enthalten jeweils Turtle.hs, sierpinski.hs, sowie die beiden Implementierungen PDFTurtle.hs und GLTurtle.hs, wobei letztere noch SOE.hs mitbringt. Auf dem SCI wird vermutlich nur hpdf installiert sein, weshalb Sie dort auf PDFTurtle zurückgreifen sollten.