sondern Mädels. Also nicht nur Jungs, auch Mädchen,
also alles, alle. Ich bin Studiengangsleiter von Software-Systementwicklung.
Deswegen liegen die mir so ein bisschen am Herzen.
Aber liegt mir alle am Herzen, gar keine Frage.
Und es gibt natürlich auch noch andere. Ich habe gesagt,
ich habe jetzt noch eine Abstimmung dazu,
dann machen wir das auch gleich mal.
Ich finde das einfach zu spannend hier, ob das auch wirklich alles funktioniert.
Und diese Zahlen habe ich nämlich früher immer mühsam auf Papierumfragebögen erhoben.
Und jetzt mache ich das einfach mit einem Klick hier auf diesem Gerät.
Ich bin begeistert. Ich möchte dazu sagen,
diese Software ist in Java geschrieben.
Also das, was ihr hier lernt,
das ist
richtig heißer Stoff
Oh, ich muss das wegschalten. So. Ich studiere,
A, Informatik, B, Wirtschaftsinformatik, C,
Mensch, Computerinteraktion und so weiter.
Ihr wisst jetzt, was ihr wählen sollt. Ich starte
die Umfrage und höre mal, was da so rauskommt.
So, ihr könnt jetzt wieder wählen. A,
dürften wieder so 300 Stimmen zusammenkommen, hoffe ich mal so.
Sagenhaft, gleich sind wir bei
Ja, ja, ja. Ich mache auch noch einen.
Ich habe mal Informatik studiert. Ha, toll. So. Ihr könnt
natürlich auch schummeln. Ja, ihr könnt auch zweimal abstimmen,
wenn ihr irgendwie ein Smartphone habt und einen Clicker.
Das fände ich ziemlich unfair. Macht nicht so viel Sinn
. Also, okay, ich beende die Umfrage.
Wir haben jetzt 320, 325. Jetzt habt ihr,
glaube ich, alle abgestimmt, oder?
Wer möchte nochmal abstimmen? Wer hat noch nicht.
So, ich halte das wieder an
Wir schauen mal. Wir schauen mal, wie die Verteilung so ist.
Ah, sehen wir mal hier. 28 Prozent Informatiker.
25 Prozent Wirtschaftsinformatiker. Software-Systementwicklung um in 15 Prozent. Computing
in Science wenig. Aber hier sind auch so ein paar andere.
Juniorstudent und Seniorstudent. Anderes Fach mit Nebenfach, toll.
Physiker, wenige Mathematiker. Das ist großartig. Ich darf mal eben
ganz kurz um einen tosenden Ablauf spippen für diese Software von Wolf.
Die werden wir... Super.
Die werden wir nämlich jetzt, wenn das hier so gut klappt,
einfach das ganze Semester durch einsetzen. Ich werde versuchen,
da noch mal vielleicht so ein paar Vorwissenfragen zu fragen,
aber auch eben halt inhaltliche Sachen zu fragen.
Zur Veranstaltung ist eine Frage. Ob man das
auch mit einem Kuchendiagramm darstellen kann, fragt er.
Das ist so eine dieser Fragen, die ich so liebe.
Natürlich kann man das. Man kann nämlich diese Informationen jetzt hier
auch exportieren und dann in Excel reinbinden oder mit Excel darstellen.
Aber diese Software, diese Software kann das erstmal nicht.
Das ist, muss ich dazu sagen, auch wirklich ganz wichtig.
Das ist eine Bachelorarbeit, das ist ein Prototyp,
das in einer Bachelorarbeit etwas Produktreifes rauskommt, ist äußerst selten,
wird nicht erwartet, dass das hier der Fall ist,
dass man es wirklich einsetzen kann, das ist toll,
aber das muss nicht so sein.
Also üblicherweise wird man bei Bachelorarbeiten nicht davon ausgehen,
dass da irgendwas rauskommt, was man direkt einsetzen kann, ja?
Gar nicht, die andere, sehr stimmt.
Die Skala Linksanzahl der Stimmen, Wolf, stimmt die?
Plus minus 0,5 Prozent. Naja, da müssen wir mal gucken,
das sind hier nur 28 Stimmen für Informatik,
scheint mir ein bisschen wenig zu sein.
Ja, das sind Prozent eben, es sind Prozent,
also es steht hier Stimmen,
aber es sind eigentlich Prozent
Okay, also da ist noch was verbesserungswürdig, ja.
Okay. Aber okay, okay, okay. Also jetzt
machen wir das mal weiter. Worum geht es hier überhaupt
? Ja, ihr seht, es geht um Programmieren.
Diese Veranstaltung heißt Softwareentwicklung 1. Und wir werden hier uns primär
mit Objektorientierung beschäftigen. Das heißt, wir werden ein Paradigma,
der Programmierung thematisieren, das schon eine große Rolle spielt für Anwendungssoftware
Das heißt, wenn ihr Java lernt, habt ihr gute
Möglichkeiten in sehr vielen Bereichen, vernünftige Software zu entwickeln.
Die Konzepte, die wir hier vermitteln sind sowieso,
hoffentlich universell, wir machen das am Beispiel einer Programmiersprache,
aber es sollte so sein, dass ihr Dinge lernt,
die ihr auch in anderen Sprachen gut anwenden könnt.
Wir sind so ein bisschen, sagen wir, objektorientiert geprägt,
also unser Lehrstuhl, wir haben da sehr viel Erfahrung mit Objektorientierung,
Heinz Züllichhofen hat schon vor 20 Jahren zur Objektorientierung promoviert.
Ich habe vor, weiß nicht,
zehn Jahren über Objekte und Teleprimiersprachen promoviert,
also wir sind da relativ fit und es ist so,
dass es eben halt auch eine hohe praktische Relevanz hat.
Objektorientierung. Wenn ich sage, Zukunft der Anwendungssoftware,
dann ist das so, dass man natürlich differenzieren kann.
Es gibt verschiedene Arten von Software, ganz fürchterlich viele verschiedene Arten von Software.
Wir unterscheiden so ein bisschen zwischen Anwend-Dunks-Software. Also das ist so
diese Frage von, da sitzen Leute wirklich davor, Menschenanwender.
Und die müssen irgendwelche Probleme lösen, müssen irgendwelche Aufgaben bearbeiten,
müssen irgendwelche Verwaltungstätigkeiten durchführen. Und dann ist es eben halt wichtig,
wenn man für Leute, die solche Probleme haben,
solche Problemstellungen haben, Software entwickelt, muss man sich überlegen,
was sind denn die Aufgaben, die die Anwender haben,
kann ich da wirklich mit Software entstützen, unterstützen, entlasten?
Das ist etwas, was wir hier sehr stark vertreten,
so einen menschenzentrierten Ansatz, also nicht irgendwie Mensch,
der Computer ist so ein tolles Gerät und das ist das,
das beten wir jetzt an wie einen Götzen, sondern nein,
das ist wirklich nur ein Rechenknecht und sollte uns möglichst in allen Lebenssituationen unterstützen.
Das ist in ziemlich vielen Lebenssituationen inzwischen, das wisst ihr ja,
dass der Computer fast überall drinsteckt, ist ja bekannt.
Demgegenüber steht so ein bisschen technische Software,
also so auch eingebettete Systeme genannt, also was weiß ich,
Software, die in Toastern steckt oder in Backöfen oder in Steuerungsanlagen für Maschinen in Fabriken und ähnliches.
Da geht es dann eher um Prozessautomatisierung, um automatische Erkennung
von Dingen. Und da natürlich dann auch wieder,
wie lassen sich dann diese technischen Geräte miteinander verbinden?
Das ist eine eher technische Ausrichtung. Das ist nicht etwas,
was wir hier nicht auch vermitteln.
Das ist nicht unser Fokus in unserer eigenen Forschung. Aber das,
was wir hier thematisieren, was wir hier lernen,
das ist natürlich die Grundlage auch für solche Systeme.
Ganz klar. Was aber auch noch ganz wichtig ist,
was wir auch in den letzten Jahren deutlich beobachtet haben,
ist, dass es früher einen starken Schwerpunkt gab auf Idee,
dass man in der Informatik sich mit Algorithmen beschäftigt.
Das ist eigentlich meine früheren Lehrveranstaltungen so aus diesem Zyklus in meinem eigenen Studium,
die hießen irgendwie Algorithmen und Programmierung oder Algorithmen und Datenstrukturen oder ähnliches.
Das heißt, früher war das klar, wenn man programmieren lernte,
lernte man Algorithmik oder wie man Algorithmen entwickelt oder wie man sie programmiert und ähnliches.
Das ist die Idee, ich habe irgendwie klar definierte Eingaben,
dann rümpelt der Algorithmus, macht irgendwas und dann kommt eine klar definierte Ausgabe raus.
Schön theoretisierbar, formalisierbar, da gibt es ganz viel Stoff
in der Informatik dazu. Das ist früher so gewesen,
früher war das einfach so und das ist sicherlich auch wichtig,
Aber der Fokus hat sich so ein bisschen verschoben in der Informatik hin zu dem Computer als Interaktionsmaschine.
Ja, wir sehen das ja jetzt hier schon irgendwie,
ich habe hier so ein Smartphone, ich kann damit irgendwie ins Netz gehen,
ich kann in der Mitte surfen, ich kann mit Leuten kommunizieren.
Ich habe da eine Grafik, ich kann irgendwie, kriegt da was angeboten,
reagiere darauf, dann kommt jetzt die nächste Reaktion vom Computer.
Das heißt also, das ist ein Zusammenspiel zwischen Mensch und Computer.
Also auch da wieder dieser Fokus auf, ja, menschenzentrierte Software.
Und das ist das ist das, was so die ganz großen Herausforderungen sind für die Informatik. Also in der Algorithmik ist,
ich will nicht sagen, dass da alles erforscht ist,
das ist natürlich Quatsch,
aber Da ist wirklich ganz viel theoretischer Arbeit geleistet worden und die Herausforderungen sind jetzt zukünftig,
wie kriegen wir solche interaktiven Systeme stärker integriert,
wie werden die nützlicher, wie können wir sie schneller auf Bedürfnisse zuschneidern,
die wir als Menschen so in verschiedenen Lebenssituationen haben.
Da geht es eben halt auch unter anderem nicht nur darum,
Mensch- und Computerkommunikation zu machen, also interaktive Systeme zu bauen,
sondern natürlich auch Kommunikation zwischen technischen Einheiten.
Okay. Also, was machen wir hier in Softwareentwicklung 1
und 2, 2 ist die Veranstaltung im nächsten Semester.
Beides Pflichtveranstaltungen in den meisten Studiengängen, die jetzt hier sitzen.
SE1 sieht so aus. Wir haben hier zwei Stunden Vorlesung
, zwei Stunden Übung
Vorlesung und Übung, objektnotierte Programmierung.
Das ist der Gegenstand dieser Veranstaltung. Und das heißt,
wir machen hier Objektentitel und Imperative Grundlagen von OOP.
Am Beispiel von Java. Ich habe schon Java erwähnt.
Java ist, die am wenigsten schlechte Programmiersprache,
am wenigsten schlechte Objekte und jete Programmiersprache für die Lehre, finde ich.
Wir beschränken uns bewusst auf die Konzepte von Java,
insbesondere in SE1. Wir machen eigentlich einen Fokus auf Programmierung.
Man kann Programmierung auch Anders betrachten, nämlich,
dass man ja Probleme lösen will.
Das heißt, man muss oft den Anwendungsbereich,
in dem das Problem gelöst werden soll, erstmal modellieren.
Man muss also sozusagen die Kernbegriffe sich erschließen. Diese Modellierungsaspekte
, die kommen erst in SE2. Also hier machen wir jetzt
ganz klar Programmierung. Es geht wirklich um Grundlagen der Programmierung.
Bewusste Einschränkung auf Java, bewusst nicht der volle Sprachumfang.
Wir werden tatsächlich hier nicht komplett Java durchhühnern.
Das ist völliger Quatsch in einem Semester. Das bleibt einfach
nicht hängen, weil wir hier auch davon ausgehen,
dass ganz viele von euch
Programmieranfänger sind
Das ist ganz wichtig. Wir machen das Ganze mit Blue Jay,
Blue Jay ist eine Software,
die speziell dafür entwickelt wurde, Programmieranfänger in Objektantierung auszubilden.
Haben wir seit über zehn Jahren im Einsatz,
ist eines der erfolgreichsten Lehrsysteme für Java weltweit.
Hat eine unglaubliche Verbreitung, ist ein unglaublich schönes Werkzeug.
Ich finde es auch deshalb so schön, weil ich ganz,
ganz früher mal tatsächlich daran mitgearbeitet habe.
Das ist in Australien entwickelt worden und ich war zu der Zeit
auch in Australien, habe dann da an der Uni mitgearbeitet.
Dadurch habe ich es dann mit nach Deutschland gebracht sozusagen und
habe das dann hier so in Hamburg relativ stark installiert.
Gut,
Ausblick auf
Da geht es dann auch um Modellierung, also dann mehr zu Java,
da geht es dann um Vererbung, Fehlerbehandlung, Gui-Programmierung,
also auch tatsächlich interaktive Systeme. Entwurfen, Modellierung,
erster Kontakt auch mit Entwurfsmustern, also wir haben ein größeres System,
wie können wir denn das ein bisschen schlauer strukturieren,
größere Beispielsysteme, da haben wir dann auch so zwei Beispielsysteme,
die so beide so 30 bis 100 Klassen groß sind,
weil das ist größer im Sinne von SE1,
für reale Softwaresysteme sind das kleine Systeme,
aber die sind immer noch groß genug,
um euch genügend Komplexität zu machen.
Auch ja, ganz wichtig. Im zweiten Semester wechseln wir
auf Eclipse. Das ist immer die wichtigste Frage von
den Leuten, die schon programmieren können. Oh Gott,
jetzt müssen wir ein Semester lang mit BlueJ programmieren.
Das ist ja schrecklich. Ich kenne auch schon die Clips und
die Clips ist doch alles wie einfacher und so weiter.
Da müsst ihr durch. BlueJ ist wirklich gut geeignet für
Programmieranfänger. Es ist aber auch nicht so schlimm,
in BlueJ zu programmieren. Es sind so einige Sachen,
die früher an BlueJ ein bisschen genervt haben,
sind inzwischen für die Leute,
die programmieren können,
ganz gut behoben
Das ist alles, was wir hier jetzt an Inhalten beschäftigt, durchnehmen wollen.
Das ist relativ viel Zeug. Man sieht da so ein paar Fachbegriffe,
variablen Typen, Ausdrücke, Zuweisung, Syntax-Semantik von Programmiersprachen,
UML, Umgang mit APIs, Schnittstellen, Interfaces.
Wir werden Interfaces von Java hier thematisieren, obwohl wir nicht über Vererbung reden.
Das wird viele verwundern, ja, die das schon kennen.
Sammlungen benutzen und so weiter. Das ist mehr oder weniger
Grundkonzepte der Imperativen und Objekte und Hirten Programmierung. Wieder,
wir wollen euch nicht sozusagen zu früh drauf loslassen,
einen Anwendungsbereich zu modellieren, also zu überlegen,
wie man denn die Begriffe geeignet abbildet in einem Computersystem,
sondern erstmal kriegt ihr von uns die Modelle,
ihr bauen sollt und die müssen noch die Software schreiben.
Das ist eine Gliederung von SE1, die sich so über die Jahre
eigentlich ganz gut bewährt hat. Wir haben vier Stufen,
jetzt kann man fragen, warum vier Stufen,
warum diese Gliederung, ich bin das mal gefragt worden,
habe ich gesagt, naja, wenn man mehrere Teile hat,
dann wird das Ganze irgendwie handhabbarer.
Das heißt, ihr habt jetzt irgendwie vor euch irgendwie vier Stufen,
vier Stufen der Erkenntnis und die müsst ihr jetzt nacheinander erklimmen.
Die ersten vier Wochen Stufe 1,
da geht es eigentlich um sehr einfache Objekte.
Also wir beschäftigen uns mit Klassen und Exemplaren von diesen Klassen,
das werden wir noch alles genauer ansehen.
Und da sind diese Objekte
relativ einfach gestrickt
Also nur aus relativ einfachen Zuständen. Also halten relativ einfache Zustände.
Und da kann man aber schon eine Menge dran machen,
nämlich dann so Zuweisungen, Ausdrücke, primitive Typen und so weiter.
Das wird dann da ein bisschen thematisiert. Auf der
zweiten Stufe geht es um Referenzen. Das ist was,
was ganz Zentrales bei Java-Programm, dass ich irgendwie Objekte habe,
die miteinander kommunizieren, damit ich mit einem anderen Objekt kommunizieren kann,
brauche ich eine Referenz auf das Objekt.
Dieses Konzept von Referenzen ist extrem anspruchsvoll,
wieder für Leute, die programmieren lernen.
Das wissen wir, haben wir über die Jahre festgestellt.
Deswegen machen wir das
relativ explizit hier als einen weiteren Komplexitätsschritt
Da werden wir auch über Schleifen und Rekursion sprechen.
Das haben wir auf Schufa 1 noch nicht gemacht.
Rekursion sowieso, ganz lustiges Thema in diesem Semester.
Auf Stufe 3 werden wir uns dann Sammlungen mal ansehen,
also das Collections Framework von Java, das extrem nützlich ist,
umso Mengen und Listen und sowas zu benutzen,
für verschiedene Zwecke sehr, sehr effektiv.
Und wir werden uns auch angucken, wie man denn so
Schnittstellen von Klassen beschreiben kann, mit Hilfe von Interfaces.
Also dass man wirklich sagen kann, das,
was eine Klasse so anbietet, kann man explizit beschreiben und
dann kann man da auch tatsächlich dann Blackbox-Tests schreiben und so weiter.
Das wird Stufe 3. Und am Ende, auf Stufe 4
geht es dann um Eigentlich kaum noch neue Programmiersprachenthemen.
Also da werden wir noch Arrays einführen in Java und Static-Methoden.
Aber das war es dann auch, was die Sprachkonzepte angeht.
Ansonsten werden wir auf der letzten Stufe primär alles das,
was vorher dran war, üben. In verschiedenen Kontexten.
Insbesondere werden wir ein bisschen Algorithmik schon in diese Veranstaltung mit reinziehen.
Also dadurch, dass wir Java nicht vollständig machen und das
ins zweite Semester geschoben haben, können wir klassische Inhalte,
die sonst im zweiten Semester laufen, hier nach vorne ziehen.
Machen eben halt so ein bisschen Algorithmik. Das heißt,
verkettetalisten, Hash-Verfahren, Sortierverfahren, Algorithmen auf Graphen,
das ist alles sehr, sehr lustiges Zeug.
Ich kann mal was zeigen, ich starte mal Blue Jay.
Das ist Blue Jay, juhu. Ja. Zum Beispiel
auf Stufe 4 werden wir unter anderem uns mit Race beschäftigen.
Und da haben wir als eine Anwendung dafür,
dass man hier so Bilder bearbeiten möchte.
Ich kann also jetzt hier tatsächlich irgendwie sagen, ah,
Moment, Bilder, kiss.punkt.giff.
Dann kann ich hier so ein Bild laden, eine Bilddatei.
Und das ist nichts weiter, so eine Bilddatei ist nichts
weiter als ein Array von Bildpunkten, ja, zweidimensional.
Schwarz-Weiß, Graustufen, wie auch immer. Ja,
und jetzt kann ich hier tatsächlich, das ist mein Objekt,
mein Java-Objekt, meine Referenz auf As Java Objekt, was dieses Bild repräsentiert.
Und ich kann tatsächlich jetzt bei diesem Schwarz-Weiß-Bild hier jetzt Dinge aufrufen,
also Operationenaufruf, man sieht hier,
kann zum Beispiel jetzt hier mal irgendwie das invertieren,
ja, so, oder eben halt das wieder zurückinventieren.
Ich kann es auch ein bisschen dunkler machen,
da kann ich jetzt also Parameter übergeben,
ich kann also hier ganz interaktiv an jedem Java-Objekt beliebige Methoden aufrufen.
Das könnt ihr in keiner anderen IDE, das könnt ihr
nur in Blue Jay, das ist schon ein ziemlich cooles Zeug.
Also das wird auch die Leute interessieren, die es schon können,
da kann man tatsächlich hier also dann,
das wird dann mal ein bisschen dunkler da oben,
kann man da so ganz knapp erkennen.
Das ist ganz nett
Wir haben dann aber auch noch weitere Projekte,
ich habe zum Beispiel hier was zum Sortieren, das auch auf Level 4,
wenn ich hier so eine, ich mache das erstmal zu,
das andere Projekt, machen wir das mal weg hier,
weg damit, schieben wir das mal ganz nach rechts.
Wenn ich mir hier zum Beispiel jetzt so eine Visual-Int-Liste erzeuge,
ein Exemplar dieser Klasse, dann wird die hier so visualisiert,
das ist eine, auch wieder eine Liste von Zahlen,
also das sind jetzt irgendwie 200 Zahlen und zwar die Zahlen von 1 bis 200 und irgendwie ist es so,
die Die Liste wird so auf der X-Achse visualisiert und welchen Wert,
an welcher Stelle in der Liste steht,
ist sozusagen auf der Y-Achse visualisiert.
Wenn man das jetzt sortieren will, könnt ihr euch überlegen, dann muss das eine Diabonale geben.
Da müssten sozusagen die Punkte alle auf einer Diagonale liegen,
weil auf der ersten Zelle soll die 1 liegen und so weiter. Ja,
dann kann man jetzt hier tatsächlich dann,
das sollt ihr programmieren, das ist dann nicht vorgegeben,
aber hier ist schon mal die Musterlösung,
also so ein mit Quicksort kann man dann hier sagen,
Mensch, Quicksortierer,
sortiere doch mal und dann kann ich als Parameter hier dieses Objekt übergeben und schwupps,
wird das Ding hier sortiert und das ist schon sehr schön,
wie das dann so visualisiert wird.
Man kann das tatsächlich sehen,
wie der Sortieralgorithmus funktioniert oder ob er eben nicht funktioniert.
Das sieht man dann auch
sehr deutlich
Also das ist schon ganz hübsch. Dann habe ich hier noch eine Kleinigkeit,
so das Graphenprojekt, das ist so eines meiner Lieblingsprojekte.
Das habe ich selbst mal gebaut. Ist allerdings Aufgabenblatt 14
und deswegen gar nicht mehr Teil der Scheinbedingungen,
aber da kann man eben halt auch dann ganz hübsche Sachen machen.
Aber Moment, ich muss jetzt hier, da gibt es auch,
man kann in Java auch eine Main-Methode aufrufen,
also in Blue J, das geht auch.
Ja, zack. Und dann sieht das hier so aus und
dann habe ich hier so ein Fenster und habe tatsächlich so einen Graphen visualisiert,
kann dann hier die Knoten so ein bisschen hin und her schieben,
das ist eigentlich eher so ein bisschen Spielerei,
kann neue Knoten dazu packen und kann aber auch hier Knoten verbinden,
kann also hier sagen, mach mal irgendwie 49.
So, jetzt verbinde doch mal neue Verbindung. Erst den Startknoten,
dann den Zielknoten, dann sind die hier verbunden.
So, jetzt kann ich tatsächlich auch Fragen stellen an den Grafen.
Also zum Beispiel kann ich fragen, ist dieser Knoten mit Steuerung,
so, mit diesem Knoten sind die verbunden, ja,
verbunden, dann sagt er, sind nicht verbunden.
Das ist jetzt keine Überraschung, das kann man sehen, ja.
Ich weiß, ihr seid jetzt nicht beeindruckt, ja,
aber das, das, jetzt diese beiden Knoten,
wenn ich da jetzt frage, ob die verbunden sind,
sagt er, ja, die beiden Knoten sind verbunden.
Das untersteht hier unten ganz klein in der Ecke.
Kann man nicht so gut erkennen. Das sieht so einfach aus,
ja, aber wenn so ein Graf erstmal größer wird,
dann könnt ihr es nicht mehr auf einen Blick sehen und
dann sind Computer unheimlich gut da drin,
das schnell zu machen.
Das ist aber gar nicht so einfach,
in so einem Grafen rauszufinden,
ob da jetzt zwei Minuten
miteinander verbunden sind
Erstmal programmiert hat, wird das merken,
ihr könnt das hier programmieren, Blatt 14,
eher was für die Feinschmecker, weil wir das,
wie gesagt, nicht mehr so ein Pflichtprogramm drin haben,
aber trotzdem eine schöne Aufgabe.
Gut, das so ein bisschen zur Übersicht,
dann die Struktur ist Vorlesung hier, immer mittwochs,
die Einführung heute dann noch 13 weitere Vorlesungen zur OP und den imperativen Grundlagen.
Die Übung, ich werde gleich hier auch noch was zu den Übungen sagen,
also eine etablierende Sitzung heute hier, dann gibt es 13 Labortermine,
ihr werdet also an 13 Terminen im Labor sitzen,
was das heißt,
im Labor zu sitzen,
werde ich
gleich erklären
Es wird außerdem auch noch ein Tutorium geben.
Gab es die letzten Jahre immer, also die Möglichkeit,
dass man Inhalte noch mal gezielt wiederholt. Das heißt also,
da steht dann jemand zur Verfügung und dann können sich die Leute,
die Fragen haben oder Probleme haben mit bestimmten Themen,
das noch mal wiederholen und sich noch mal erklären lassen.
Gibt es meistens einen, vielleicht sogar zwei Termine pro Semester.
Frage, Beginn der Vorlesung 14 oder 14.15 Uhr.
Wie ist hier das Meinungsbild? Ich fange gerne um 14.15 Uhr an,
kann aber auch, wenn es sein muss,
um 14 Uhr anfangen, wenn das irgendwie dienlich ist.
Wer kann nicht um 14 Uhr
hier sein
Naja, die Clicker habe ich jetzt nichts vorbereitet.
Ich könnte jetzt nicht spontan einen Clicker versuchen, aber das ist mir jetzt,
wir haben schon ziemlich viel Zeit verloren mit den Clickern.
Deswegen würde ich jetzt erst mal, also ich sehe so,
dass es, wer ist für 14.15 Uhr?
Okay, das sieht mir ja nach ziemlich viel aus.
Wer ist für 14 Uhr? Wer von denen,
die für 14 Uhr sind, können erst, können,
nee, Moment, die 45. Wer von denen,
die für 14.15 Uhr sind, können nicht um 14 Uhr,
um 14 Uhr schon hier sein.
Okay, das hält sich fast die Waage.
Also ich würde sagen, wenn es kein Problem ist,
dass wir um 14.15 Uhr anfangen,
dann fangen wir um 14.15 Uhr an
Ja, da ist eine Frage. Ich würde auch mal die bissen Kleinleute auflassen,
weil sie mit Gesichtswissenschaften laufen, das ist die Stresserfrage.
Also er fragt, ob wir dann auch früher aufhören können.
Ich fange üblicherweise um Punktvierteln nach an und ich höre üblicherweise
um viertel vor vier auf. Das heißt,
90 Minuten, ich mache aber auch gerne eine Fünf-Minuten-Pause.
Das sind immer zwischendrin, das ist so ein kleiner Bruch,
und dann fünf Minuten vor.
Das ist eigentlich auch sehr gut angenommen worden die letzten Jahre,
dass man mal eben kurz rausgehen kann,
sich die Füße vertreten kann, vielleicht noch eine rauchen kann.
Das können wir weglassen, dann wird es vielleicht zehn
vor vier ab und zu mal.
Meistens wird es aber auch Viertel vor vier bleiben.
Da ist eine Frage
Ach, das war schlecht. Er fragt, in welcher Sprache
wir hier die Software entwickeln, das ist eine sehr interessante Frage.
Bluetay ist lokalisierbar, das heißt, man kann es auch
in Deutsch benutzen. Die Sprache, die wir benutzen,
ist Java und die Fachlichkeit, die da modelliert wird,
wird meistens Deutsch sein, aber das ist kein Muss.
Das heißt, es hängt tatsächlich, es gibt eigentlich keinen
Keine klare Ansage, was da der richtige Weg ist.
Es hängt davon ab, was man modelliert. Wenn ich in einer Versicherung,
in einer deutschen Versicherung versuche, Versicherungsverträge zu modellieren,
dann wäre es Quatsch, das aus Englisch zu machen.
Weil die Begriffe, die Fachbegriffe sind da eben halt auf Deutsch.
Da jetzt eine künstliche Abbildung in Englisch zu machen, ist albern.
Es gibt aber genügend Kontexte, in denen man auch,
wo die Fachlichkeit, die programmiert wird, Englisch ist,
in Forschungsprojekten und Ähnlichem.
Dann wird das natürlich auf Englisch sein, aber wir werden
tatsächlich überwiegend hier in SE1 mit deutschen Projekten arbeiten.
Also deutsche Fachlichkeit, aber natürlich englisches Java. Gut,
das führt zu solchen Vermischungen. Also im Quelltext gibt es
dann deutsche Namen für, und Bezeichner und Variablen und englische Schlüsselwörter in der Sprache.
Kann man als negativ ansehen, man kann es auch als gut ansehen.
Das diskutiere ich dann auch mal ausführlich an SE2. Gut,
dann inhaltliche Aufteilung, da gehe ich jetzt mal ein bisschen schneller rüber.
Also hier werde ich überwiegend Konzepte vorstellen, Einschätzung,
auch persönliche Einschätzung, ist kein Programmierkurs. Ich werde hier nicht irgendwie,
ich werde hier auch programmieren, das ist mir ganz wichtig,
dass ich auch live programmiere in jeder Vorlesung SO1,
schmeiße ich mindestens einmal Blue Jay an, aber üblicherweise auch keine Vorbereitung für die Übung.
Das ist schon hier das hier so ein bisschen,
dass davon abgetrennt ist, aber es ist schon eng gekoppelt mit dem Übungsbetrieb.
Das heißt, wir werden schon dann auch Aufgaben stellen in den Übungen,
die irgendwie in der Folie so mal dran waren vorher.
Im Übungsbetrieb geht es um praktische Erfahrung, Konstruktionsaufgaben,
Kleingruppen, unmittelbares Feedback. Gibt es da,
warum inmodulares Feedback werde ich noch erzählen?
Geht aber eben halt auch darüber hinaus, um mit Fremdsprachen.
Ihr müsst ja irgendwie eine Programmiersprache lernen, das ist eine Fremdsprache.
Es gibt noch andere Notationen, die UML ist eine andere Notation.
Syntaxdiagramme,
also die Syntax von Programmiersprachen beschreiben,
eine weitere Notation
Texte schreiben, auch wichtig. Ihr sollt ab und zu
auch mal Text schreiben. Ich sage es euch jetzt
ganz ehrlich. Ihr müsst tatsächlich deutsche Sätze aufschreiben.
Also in den Übungen, so auf Papier oder so.
Ihr könnt es auf dem Bildschirm machen.
Aber das schockiert immer viele Studierende bei uns,
dass sie nicht nur programmieren in unseren Übungen,
sondern wir wollen tatsächlich auch manchmal so Texte da stehen haben.
Und es geht auch ein bisschen darum, dass ihr lernt,
etwas zu präsentieren, was ihr gemacht habt.
Ich werde ab und zu auch ein bisschen was erzählen zu
den Menschen hinter der Informatik. Ja, und dann geht
es ihnen halt auch um das Arbeiten in Gruppen.
Das ist uns ziemlich wichtig, dass ihr hier lernt,
der Softwareentwicklung einen Prozess ist,
an dem
mehrere Menschen beteiligt sind
Und man üblicherweise ein Teamplayer sein muss, um das gut zu machen.
Das heißt, Kommunikation und Kooperation ist sehr wichtig.
Und wir haben das auch in unserem Übungskonzept sehr zentral verankert.
So, das Übungskonzept, das will ich jetzt mal eben erläutern.
Ihr sollt aktiv Umgang mit Java lernen. Ihr sollt tatsächlich
bei uns programmieren lernen. Das werdet ihr. Wer bei uns
programmieren lernen will, der kann das bei uns lernen.
Und auch wirklich solide und fundiert. Wer es nicht
lernen will, den können wir nicht zwingen.
Das hat noch nie funktioniert. Geht aber auch so ein bisschen
um Konzepte verstehen und auch diese Konzepte erklären zu können.
Also programmieren,
ganz viel
Konstruktion, handwerkliche Tätigkeit, aber auch schon so ein bisschen,
was passiert im Team.
Wir bleiben hier also relativ auf einer kleinteiligen Ebene.
Wir gucken uns diese kleinen Objekte an, wie die zusammenspielen und so.
Das könnte viele erstmal ein bisschen klein wirken,
aber es ist schon ziemlich zentral und wichtig.
Konzept in der Umsetzung. Wir machen das anders,
als es häufig an der Uni passiert.
Ich habe selbst studiert in einem System, da war es so,
es gab jede Woche eine Vorlesung, eine Übung.
In der Übung hat man so 90 Minuten zusammengesessen,
da hat ein Tutor, der die Übungsgruppe betreut hat,
so ein bisschen die Vorlesung wiederholt, dann wurde das Aufgabenblatt besprochen.
Dann hat man eine Woche zu Hause das Aufgabenblatt bearbeitet
Dann hat man,
also eine Woche später bei dem Tutor dann seine Bearbeitung abgegeben,
dann eine Woche später, wenn man Glück hatte,
hat der Tutor das dann korrigiert und man hat das das Feedback gekriegt.
Das heißt, hier wird die Aufgabe gestellt,
hier hat man die Abgabe, hier hat man das Feedback.
Super, ja, also in der Vorlesung ist inzwischen schon der nächste Stoff dran,
also das ist irgendwie nicht toll. Wir machen das anders,
wir versuchen möglichst unmittelbar Feedback zu geben, das heißt,
ihr seid nicht 90 Minuten in einer Übung und müsst dann zu Hause arbeiten,
sondern ihr seid drei Stunden im Labor.
Ihr seid drei Stunden bei uns im Labor,
sitzt in Paaren am Rechner,
ihr arbeitet also mindestens immer in Zweierteams und ihr
programmiert die Aufgaben direkt da vor Ort
Die Aufgaben sind von uns so gestellt, dass ihr das schaffen könnt.
Wir haben sehr viel Erfahrung mit diesem Konzept inzwischen.
Wir haben die Aufgaben über Jahre glatt geschliffen.
Wir haben Sachen abgeschnitten, die zu viel waren.
Wir haben Sachen ergänzt, wo es zu wenig war und so weiter.
Also das ist schon sehr, sehr gut ausgefeilt.
Und ihr seid da aber auch betreut. Wir sind auch
da. Das heißt, ich werde auch Übungen betreuen,
aber auch ungefähr 40. Andere Leute werden hier Übungen betreuen.
Wir haben also eine relativ große Gruppe von Betreuern,
die in den Übungen sitzen und euch helfen.
Also insbesondere bei so kleinen Problemen können wir sofort helfen.
Also beim Programmieren kann man sich ziemlich leicht verhaken mit
so Randproblemen
Die echt blöd sind,
die eigentlich mit dem Programmier nichts zu tun haben,
aber wenn man die dann nicht ausgeräumt kriegt,
kann man schnell den Mut verlieren.
Das passiert bei uns nicht so.
Und die Abnahmen erfolgen dann auch direkt im Labor.
Also ihr müsst ja nicht nur irgendwelche Aufgaben zu Hause bearbeiten.
Was aber nicht davon abhalten sollte, trotzdem was zu Hause
zu arbeiten. Also, intensivere Beschäftigung mit dem Stoff,
weniger Zeitbedarf, schnellere Hilfe bei Fragen, gemeinsames Erarbeiten,
unmittelbare Betreuen direkt am Problem.
Alles toll. Finden wir super, hat sich auch gut bewährt die letzten Jahre.
Wir machen es jetzt wieder mit euch. Die Aufgabenblätter,
die wir verteilen, die sind relativ klar strukturiert.
Jedes Aufgabe hat neben den Aufgaben
auch einen einleitenden Text
Das kann bis zu einer Seite Text sein.
Wow, den müsst ihr lesen, um Himmels Willen.
Auch das wieder so, Texte lesen, hohe Anforderungen.
Das ist immer ganz praktisch, weil dann auch auf dieser
bis zur einen Seite die Dinge kurz benannt sind,
die auf dem Blatt thematisiert werden.
Das hilft auch den Betreuern, um mal wieder so den
Fokus zu haben, worum geht es hier überhaupt heute?
Aber auch die Leute, die schon programmieren können,
können dann schon sehen, ah ja,
es geht um das und das, das ist ganz hilfreich.
Bitte unbedingt vorher lesen. Ihr müsst ihn nicht vollständig verstanden
haben. Ihr müsst ihn nur erst mal gelesen haben.
Also euch Mühe gegeben haben,
dass ihr das mal vielleicht vorher euch angeguckt habt,
dann solltet ihr
die Aufgaben machen
Und nachdem ihr die Aufgaben bearbeitet habt,
dann solltet ihr einleitende Text eigentlich verständlich sein.
Das ist, das ist die Idee.
Wenn das nicht der Fall ist, keine Panik,
ihr könnt ja immer jemanden fragen, es sind immer Leute da.
Ihr seid nicht allein. Gut. Zeitaufwand, ganz wichtig,
finde ich immer sehr, sehr wichtig, dass ich das klar mache.
Mit dem Einführung des Bachelor und Master-Systems in Deutschland und
auch hier an der Uni sind die Leistungspunkte angeführt worden.
Ein Konzept, das es vorher nicht gab,
ist primär dazu gedacht, euch die Studierbarkeit zu gewährleisten.
Das heißt, die Leistungspunkte sollen irgendwie Umfänge andeuten,
wie viel Zeit
ihr investieren müsst
So ein Leistungspunkt soll ungefähr 30 Zeitstunden entsprechen, innerhalb des Semesters.
Also können wir mit unseren sechs Leistungspunkten,
die SE1 hat, euch 180 Stunden abverlangen. 180 Stunden,
die verteilen wir nicht auf die 14 Vorlegungswochen,
sondern auf ein halbes Jahr, weil das ist ja ein Semester,
das ist ja ein halbes Jahr,
ziehen da so ein bisschen was ab,
so ein bisschen Urlaub.
Also 22,5 Wochen ungefähr. Das ergibt dann acht Stunden pro Woche.
Das ist so eine Rechnung, die wir mit der Fachschaft auch abgestimmt haben.
Also das ist nicht irgendwie jetzt absurd viel, sondern es ist einfach,
ihr müsst acht Stunden in SE1 dabei sein und was dafür tun.
Erstens zwei Stunden Vorlesung, drei Stunden Übung sind fünf Stunden,
bleiben noch drei Stunden für Heimarbeit.
Mal was lesen,
mal was nachgucken,
Skript gucken
Das ist wichtig und das ist wirklich ein Minimum.
Das ist die Untergrenze. Wer Talent und so weiter hat,
sollte trotzdem diese Zeit investieren, vor Erfahrung,
aber wer da möglicherweise noch neu mit dem ganzen Zeug
unterwegs ist und auch vielleicht Schwierigkeiten hat mit der Programmierung.
Da kann es auch mehr Zeit sein. Es darf nicht
zu viel mehr werden, damit es irgendwie studierbar bleibt.
Und da achten wir sehr drauf. Also bei uns könnt ihr
davon ausgehen, dass das, was wir euch abverlangen,
leistbar ist, wenn man dabei bleibt.
Gut. Oh, ja, auch wieder sehr beliebt.
Habe ich jedes Jahr da. Das ist ein Informatikerwitz
Ihr fangt jetzt an, so euch mit diesen ganzen Leuten
hier rumschlagen zu müssen, die so Informatiker sind.
Ihr wolltet ja selber vielleicht welche werden. Ich bin auch einer.
Das ist so ein Witz, man soll ja Witze nicht erklären.
Ich erkläre jetzt mal diesen Witz, das mache ich sonst nicht gerne.
Aber was da steht, ist there are 10 kinds of
people in the world those for understand binary and those who don't.
Da steht natürlich eigentlich 1-0 und 1-0
kann man ja verschieden lesen. Im Dezimalsystem ist es 10,
aber im Dualsystem, also im Binär-System binary,
ist es die 2. Das heißt also,
es gibt zwei Arten von Menschen,
nämlich die,
die binär kurz verstehen und die,
die es nicht tun
Zerklärt den Witz. Sehr schön. Hat ein bisschen Hintergrund
. Es gibt, es gab mal so Untersuchungen hier,
Coding, Horror, Programming, Sheep and Non-Programming-Boats.
Die besagen irgendwie so Beobachtungen von Leuten, die einführende Programmierveranstaltungen machen.
Oh Mensch, ich habe so die Leute, die können das
einfach und dann andere, die werden es nicht lernen.
Die Programming-Goats, die weigern sich irgendwie, das Programmieren zu
lernen und die schiebt, die sind super, das klappt wunderbar.
Und die haben dann so Theorien, dass es vielleicht daran liegt,
dass es irgendwie so ein Gehen gibt, so ein binäres Gehen.
Man hat oder man hat es nicht und so.
Ich glaube, das ist vollkommener Quatsch. Ich glaube,
es gibt tatsächlich Jeder kann programmieren lernen, wenn er sich
einfach nur die Zeit nimmt, es auch zu tun.
Das ist nicht wirklich schwierig, es ist keine Hexenkunst.
Es gibt sicherlich talentierte Programmierer und es gibt auch weniger talentierte Programmierer,
aber es ist nicht unmöglich, das hier zu lernen,
was wir machen. Wo wir gerade über Binär reden,
es gibt tatsächlich immer für alles zwei Möglichkeiten.
Wir können ja mal wieder so Fragen, Programmieranfänger oder alter Hase.
Dazu habe ich zufällig hier eine Umfrage vorbereitet.
Ich mache das hier mal wieder weg
Ich gehe mal zur nächsten Frage. Hast du schon vor dem Studium
Erfahrung mit Programmierung gesammelt? Also wer ist totaler Programmieranfänger,
der sagt, nein, wer schon irgendwie mal was mit Programmierung macht,
es muss nicht viel sein, aber irgendwie in der Schule,
im Beruf, was weiß ich wie.
Der tippt bitte ja. Ich dachte jetzt die Umfrage,
jetzt könnt ihr klicken.
Das ist
Ja. So, langsam fertig werden, ja,
die Stimmen fließen so langsam rein.
Es tröpfelt so. Okay, die Zeit,
die Zeit wird knapp,
noch läuft es hier
5, 4, 3, 2, 1 und,
naja, ich lasse noch so ein bisschen laufen,
da kommt noch was, da kann man was.
Aber jetzt ist Schluss. Okay, abgestammt, also es
geht ja nur erstmal um so einen prozentualen Eindruck hier.
Also, wir gucken mal, wir gucken mal, okay.
Ja, das ist nicht überraschend,
das ist so das übliche Verhältnis, was wir haben.
Wir hatten früher immer so ein Verhältnis, 70 zu 30,
das hat sich sogar teilweise zu 50 zu 50 verschoben.
Also, das wird tatsächlich 50 Prozent Programmieranfänger haben
Das heißt, es ist überhaupt keine Schande-Programmieranfänger zu sein,
weil ihr solltet es hier lernen. Das heißt,
wir müssen auch davon ausgehen, dass ihr Programmieranfänger seid.
Es gibt aber eben halt auch ziemlich Leute,
die können schon programmieren. Und da kann man sich jetzt
wieder fragen, wie gehe ich damit um?
Also nehmen wir mal an, einer, ihr seid jetzt irgendwie Programmieranfänger.
Da gibt es ja zwei Möglichkeiten, was ihr machen könnt.
Ihr könnt hier einfach einen minimalen Aufwand durchranhängen an stärkere.
Ihr kennt jemanden, der kann das. Setzt euch immer
schön ein paar daneben. Grinst ganz wissend und so.
Wenn ihr Glück habt, kommt jemand,
der die Abnahme macht, der das nicht merkt.
Ich merke das immer,
aber ja
Oder ihr nehmt aktiv an den Übungen teil,
nutzt jede Gelegenheit praktische Erfahrung mit der Programmierung zu sammeln.
Ups, da ist jetzt irgendwas fetter, das ist wahrscheinlich Zufall,
dass das eine fett ist, das andere nicht.
Ah, okay. Andere Möglichkeiten,
ihr habt schon Programmiererfahrung, was ist das mit Leistungskursinformatik,
was weiß ich, ihr probiert schon für Geld,
dann kann SE1 zumindest in der ersten Hälfte sehr einfach sein.
Die ersten Stufen sind leicht für Leute, die programmieren können.
Die zweiten, die dritte und vierte Stufe sind schon anspruchsvoll.
Die ersten beiden Stufen sind für Anfänger anspruchsvoll,
da muss man wirklich, darf man nicht sich abhängen lassen,
dann kann man die dritte und vierte Stufe auch schaffen,
aber wer auf den ersten beiden Stufen Probleme hat,
wird auf drei und vier
sicher abgehängt
Das auch nur so als kleine Ansage.
Auch da ist für die zwei Möglichkeiten, viele Leute,
die programmieren können, minimaler Aufwand, gute Note abstauben.
Oder interessierte Teilnahmen an den Übungen, Erfahrungen weitergeben an Teilnehmer ohne Feuerfahren.
Wir wollen also tatsächlich, dass die Leute, die was können,
dieses Vorwissen mit einbringen. Wir wollen hier nicht versuchen,
alle gleich zu machen, irgendwie mit irgendwelchen abstrakten Zeug anzufangen,
dass das keiner versteht, damit alle gleich sind.
Das ist irgendwie das falsche Konzept. Wir wissen,
dass viele von euch programmieren können, wir wollen das nicht
als Nachteil sehen oder als Schwierigkeit, sondern als Chance.
Also bringt euch hier mit ein, das ist sehr,
sehr vorteilhaft.
Jetzt zu den Formalia-Unterlagen und ähnliches,
Folienskripte wird es geben, und zwar im Komsi.
Was ist das Komsi, das werde ich gleich erklären.
Wir werden also die Folien, die ich hier zeige,
werden als PDF-Dateien im Komsi verfügbar gemacht, im Netz.
Außerdem werden wir auch gedruckte Fassungen verteilen. Der Druck des ersten Teils ist schon fertig,
also für Stufe 1, es sind die Folien schon fertig,
werden am Donnerstag, dann morgen in Übungen verteilt.
Und die Vorlesungsfolie werde ich immer nach der Vorlesung direkt als PDF reinhängen ins Komsi.
Außerdem schreiben wir an einem Buchentwurf zu SE1,
das haben wir schon vor Jahren gemacht, das ist dann irgendwann stagniert.
Jetzt habe ich wieder Zeit dafür. Ich will hoffen,
dass ich dieses Semester da mal Mehr produziere soll also in kleinen Dosen,
nicht in Pfanddosen, sondern in kleinen Portionen,
als PDF 4 ins Komsi kommen.
Aufgabenblätter werden jede Woche kommen. Und wir werden als PDF da zur Verfügung stehen,
im Komsi und werden aber auch auf Papier ausgedrückt in Übungen verteilt.
Das ist, das kommen sie. Hier mal in Live
und in Farbe. Das ist das Komsi. Da kann
man sich jetzt anmelden irgendwie. Und dann kann man da
irgendwie, da tatsächlich SE1 kommen, sie Wintersemester
2013. Christian Spee hat das moderiert hier, hat das eingerichtet
Ich da jetzt reingehe, dann wird man da eben
halt dann so ein paar Materialien finden zu dieser Veranstaltung.
Das ist also unser Raum, in dem wir uns hier austauschen.
Das dauert hier alles ein bisschen lange, aber wupp,
ja, toll, so.
Das Aufgabenplatz 1 ist schon drin, die Scheinkriterien sind da,
da sag ich gleich noch mehr zu.
Account beantragen und so weiter, das könnt ihr alles machen.
Wird also alles hier auch ein bisschen noch erläutert
Scheinkriterien, die stehen im Komsi, finde ich ganz wichtig,
dass wir das kurz hier besprechen.
Das ist die erste Veranstaltung, das ist der Vertrag,
den wir schließen, so, ihr als lernte ich,
wir, die Betreuer als Lehrende.
Semester hat 14 Wochen, 13 Präsenztermine in den Übungen,
je drei Zeitstunden. Übungswoche beginnt am Donnerstag, also immer
nach der Vorlesung. Also morgen ist der erste Übungstermin,
dann geht die Woche bis Mittwoch. Das heißt also,
auch in der letzten Woche geht es dann nur bis Mittwoch.
Das heißt, wir haben nur von den 14 Wochen 13 Übungswochen.
Das ist wichtig für die Fristen. Es gibt mindestens drei
Aufgaben pro Blatt, meistens sind es vier.
Ihr müsst alle Aufgaben bitte bearbeiten. Ihr sollt an
mindestens elf Terminen anwesend sein
Dass es ganz wichtig ist. Das heißt nicht,
wenn ihr an elf Teilen anteilnehmt ist,
dass ihr auch eine Elf bearbeiten müsst.
Die sollen alle bearbeiten, ihr könnt aber auch an zwei einfach fehlen.
Mehr oder weniger unentschuldigt, wenn ihr häufiger fehlt,
müssen wir Ateste einfordern. Wenn ihr zu lange nicht teilnehmt oder
zu häufig nicht teilnehmt, können wir euch keinen Schein geben.
Ihr solltet regulär in diesem Übungsbetrieb diese Übungsaufgaben euch abnehmen lassen.
Wir haben so Abnahmeblätter, das wird dann auch in den Übungen nochmal erläutert.
Für die Abnahme müsst ihr die Lösung vorführen und erklären können.
Das kann sein, dass ihr die Lösung von woanders kopiert.
Okay, wenn ihr sie erklären könnt, ist das uns fast wurscht.
Wir werden schon nachfragen. Das Gute an diesen interaktiven Übungen ist,
wir sehen ja, ob ihr wirklich verstanden habt,
was ihr da getan habt
Alle Aufgaben sollen bearbeitet werden. Die letzte Aufgabe muss nicht
gegengezeichnet werden. Das heißt, ihr sollt alle bearbeiten,
aber die letzte muss nicht abgenommen werden. Das ist einfach
so ein Kapazitätsthema. Und ihr werdet in Paaren arbeiten.
Ihr müsst nicht in Paaren arbeiten, wir haben immer wieder
Studierende, die sich sträuben, im Paar zu arbeiten.
Niemand wird gezwungen, aber das ist hier die bevorzugte Arbeitsform.
So, dann, wir empfehlen euch, ein Glossar zu pflegen.
Das heißt also, euch Notizen zu machen,
die Kernbegriffe, die wir euch so vermitteln,
in so einer Art kleinen Lexikon selbst aufzuschreiben, handschriftlich durch auch sinnvoll,
weil wir gerade in den ersten Wochen ziemlich viel Begriffe hier reinpompen.
Das ist einfach viel Zeug. Und gerade die, die Probleme haben,
da haben wir über die Jahre Festplatzation Glossard zu führen, hilft stark.
Wenn wir in den Übungen bei den Abnahmen feststellen,
jemand hat große Probleme, dann werden wir auch darauf drängen,
dass man ein Glossar macht.
Das ist erstmal so eine Empfehlung.
Es ist hilfreich, aber es muss nicht gemacht werden.
Erst wenn es Schwierigkeiten gibt, dann drängen wir drauf.
So, hier jetzt der Wochenplan. Ihr seht,
das sind die ganz heißen Zahlen heute aus der Druckerpresse von
Christian Spe
Ihr seht, die Termine sind ziemlich voll. Es gibt noch
Platz am Dienstag und es gibt noch Platz am Freitag.
Vor allem am Dienstag ist noch relativ viel frei,
aber so viel nun auch nicht. Was ganz wichtig ist,
viele von euch haben schon E-Mails geschrieben, wie ist das?
Ich bin in der falschen Übungsgruppe, ich kann da nicht.
Ihr könnt euch noch ummelden. Instine, bis zum 29.10
.. Ihr könnt es über Stine machen. Also wechselt tatsächlich
in die Gruppen, die euch da passen.
Aber möglichst nicht in die vollen Termine rein.
Das macht nicht viel Sinn. Aber ihr könnt natürlich noch
in die Dienstagstermine reinwechseln. Das kann durchaus sinnvoll sein,
damit es einfach nicht so voll ist
Jetzt gibt es hier gerade Unruhe. Da ist eine Frage.
Könnt ihr mal bitte leise sein? Ich verstehe ihn nicht.
Ich verstehe kein Wort. Es kommt nichts an, sorry.
Mit übergesteinigt. Die Körper der Philippe lasieren auch an mich
, scheide für Klub. Ich glaube,
wenn meine Rose kommt und das wusste die Profession so irgendwie,
dass wir die hatten,
und haben die uns dann angerechnet,
scheide eine Formatik in der Welt oder das hatte
meinen Stein in die Klub bekommen
Die Frage ist, wie das mit den Scheinen ist.
Also ob man hier tatsächlich dann einen Schein bekommen muss.
In der Physik sagt er, es ist durchaus anders,
dass man da irgendwie Bonuspunkte sammelt oder ein anderes Konzept.
Ich kann nicht für die ganze Informatik sprechen.
Ich weiß, in dieser Veranstaltung ist es so,
ihr müsst hier einen Schein machen.
Also es gibt zwei Leistungserbringungsanteile, einmal die Übung und einmal die Klausur.
Und beides muss für das Bestehen des Moduls erbracht werden.
Das heißt, die Übung müsst ihr einen Schein machen.
Wir haben hier tatsächlich ein sehr, sehr klares Scheinkonzept.
Aber das ist auch in der Informatik ziemlich weit verbreitet,
würde ich mal sagen.
So, gut
Wo bekomme ich Hilfe, Anmeldung zur Übung? Ja,
Stine kriegt ihr Hilfe. Christian Spee ist heute nicht hier,
sei da krank, sonst werdet ihr ja selber ein bisschen was gesagt.
Ist ein sehr hilfsbereiter Mensch, der das Organisatorische für diese Veranstaltung
macht, insbesondere die Übung. Wenn ihr Fragen habt,
immer an Christian wenden, er ist da sehr hilfsbereit.
Wenn ihr Inhaltliches habt zur Vorlesung zu den Übungen,
das ganze Konzept, dafür stehe ich gerade, E-Mail an mich.
So, damit sind wir auch mit dem organisatorischen durch.
Haben wir jetzt noch organisatorische Fragen,
sonst würden wir jetzt vielleicht gleich mal eben fünf Minuten Pause machen,
aber nochmal eben ganz kurz,
ja,
da ist eine Frage
Die Adresse vom Komsi, ja, Moment,
da müssen wir einfach nochmal zurückgehen, www.min-komsi-uni-hamburg.de.
Und da gibt es dann den, das SE1 kommen,
sie als einen Raum SE1, müssen einfach nur nach SE1 suchen,
da kann man suchen nach so einem Raum und dann findet man den auch.
Mir fällt gerade noch was ein. Ich habe
noch bei der Umfrage was vergessen. Ich habe noch
eine Frage
Falls du vorher erfahren mit der Objektorientierung hast,
in welcher Objekt und Hinsprache hast du die meiste Erfahrung?
Die meiste Erfahrung. Mach nochmal eben einmal mit und dann,
wir machen jetzt nochmal 30 Sekunden hier, Abstimmung läuft.
Dann könnt ihr nochmal eben das Feedback gehen,
dann sammle ich das noch auf.
Sind noch Fragen? Da ist noch eine Frage.
Die Übungen finden statt. Die Frage ist, wo finden
die Übungen statt? Die Übungen finden statt in Stellingen.
In Hause D. Das wird auch im Kommen sie stehen,
aber die finden alle statt in Hause D in den Kellerräumen.
Wir haben da Laborräume vom Informatik-Rechenzentrum.
Noch eine Frage, da ist eine Frage
Da fehlt das andere. Ja, tut mir leid.
Habe ich bei der Abfrage vergessen. Es gibt ja
auch Leute, die vielleicht mit Smalltalk-Erfahrung gesammelt haben.
Sonst noch Fragen, dann würde ich jetzt sagen,
da ist noch eine Frage. Macht es kommen die Aufgaben,
bleibt verpackt,
prophet zu sein
Also er fragt, wie das ist mit dem Bearbeiten der Aufgaben,
ob man da was vorarbeiten muss, zu Hause und so weiter.
Ich habe es versucht, eben anzudeuten,
die Aufgaben werden im Labor bearbeitet, vor Ort,
alles Material, was ihr braucht,
könnt ihr dann online in den Übungen runterladen,
also auch die Projekte und so weiter.
Die Übungsblätter sind alle online. Ihr könnt also in
den Übungen direkt loslegen. Was ihr braucht,
ist ein Account für die Rechner in Stelling.
Das werden die meisten von euch haben. Einige müssen dann
sich noch einen Account besorgen, also die Nebenfachstudierenden in üblicher Weise.
Noch eine Frage. Keine Frage. Fünft nur da,
da, da, da, da, okay.
Da wollen wir da auch aus der übungsmädischen Ukraine bereiten
Nein, die Übersblätter werden ausgedruckt, verteilt in den Übungen,
stehen da zur Verfügung und sie stehen außerdem digital zu verfügen.
Ihr könnt sie euch also vorher schon angucken,
aber ihr müsst sie nicht ausgedruckt mitbringen.
Gut, noch eine Frage. Der Zugang Lecture to Go
der letzten Jahre ist im Web verfügbar.
Googeln. Lecture to Go SA1. Alle Vorlesungen des letzten Jahres
sind schon verfügbar. Wenn ihr wollt, könnt ihr die
ganze Vorlesung schon vorweg gucken.
Sonst noch Fragen
Dann machen wir jetzt aber mal eben fünf Minuten Pause.
Fünf Minuten. Und dann machen wir noch mal so ein
bisschen Abschluss. Also, jetzt bitte noch mal eben zuhören.
Die letzten, ja, jetzt doch 25 Minuten.
Wir müssen halt heute tatsächlich bis zehn vormachen aufgrund der Pause.
Das ist mit den Klickern immer so ein bisschen zeitaufwendig gewesen heute.
Aber ich glaube, dass es sich lohnt, dass wir
diese Klicker einsetzen. Wir werden natürlich auch am Ende des
Semesters dann so ein bisschen auch euer Feedback einholen,
ob ihr mit diesem Klicker-Zeugs jetzt zufrieden wart oder nicht.
Was ich gelernt habe oder was ich schon gehört habe,
ist, wenn man mit Klickern arbeitet, dann bitte das ganze Semester durchgängig.
Also nicht so ab und zu mal,
sondern ich werde es versuchen, das jetzt durch vergänglich zu machen.
Auch ganz wichtig, die Koffer für die Klicker,
die stehen jetzt da oben, an dem Ausgang.
Also wenn ihr gleich nett seid, dann packt ihr die
da wieder rein, wenn ihr rausgeht und bitte ordentlich.
Also nicht da so reinwerfen, sondern irgendwie,
die kann man ja so schön reinstellen, alle gleich geordnet.
Das ist irgendwie netter für die Leute, die das dann hinterher sortieren müssen.
Das wäre schon sehr schön. Gut, jetzt versuche ich
hier nochmal so ein bisschen inhaltlich was zu machen.
Das heißt, ich werde versuchen, ein bisschen zu erklären,
was wir hier inhaltlich machen, das war primär organisatorisch ist.
Erstmal werde ich was sagen zu den Lehrbüchern.
Wir haben hier so ein paar Literaturhinweise hingegeben
Das ist vor allen Dingen auch, um so einen Alternativen zu sehen.
Wir empfehlen relativ stark dieses Buch von Barnes und Kölling.
Das ist auch in der Informatikbibliothek in mehrfacher Ausfertigung ausleihbar.
Ist sehr gut geeignet, wenn man das begleitend sozusagen als Lernbuch nimmt.
Es ist nicht genau das Gleiche, was wir machen.
Wir haben unser eigenes Konzept. Wir haben einige Reihenfolgen,
anders als in dem Buch. Das heißt also,
das wissen nicht direkt als leeren Buch geeignet.
Wir schreiben ja unser eigenes Buch dazu jetzt gerade.
Aber wer da eher, sagen wir,
so ein bisschen nochmal einen anderen Zugang haben will,
kann das auf alle Fälle lesen
Und durcharbeiten. Ich kann es sehr empfehlen, das Buch.
Ich kann das unter anderem deshalb empfehlen, weil ich das mal übersetzt habe.
Das ist also die deutsche Version ist von mir. Ja,
ich verdiene da kein Geld dran, also das nützt mir gar nichts,
aber ich hätte es nicht getan. Ich bin kein Übersetzer,
wenn ich nicht sehr überzeugt gewesen wäre von dem Buch.
Die anderen Bücher eher so konventionelle Geschichten zu Java. Hier,
Schiedermeier, ein Buch nur mit Programmieraufgaben, auch ganz cool,
wenn man wirklich ernsthaft programmieren lernen will,
sollte man einfach möglichst viele Aufgaben lösen.
Und hier auch empfehlenswert der Joshua Bloch,
aber das ist eher was für Fortgeschrittene.
Auch da will ich jetzt nicht
zu viel darüber erzählen
Weitere Grundlagenwerte. Klar, das Informatikhandbuch, dann Dudeninformatik.
Und wenn man was zur UML haben will,
gibt es natürlich auch den Klassiker von den drei Amigos.
Englischsprachig und weiterführend, auch das eher so Ausblick,
wenn man da irgendwie mehr machen will.
Unter anderem hier auch ein Buch von Heinz Zürichhofen und Kollegen.
Das ist so ein bisschen der Beitrag, der hier,
sagen wir, fort für weiterführend geleistet worden ist.
Das ist etwas, was relativ hilfreich ist. Wir haben so versucht,
so eine gewisse Symbolsprache da einzuführen auf unseren Folien.
Also am Anfang immer so ein Ausblick,
am Ende so eine Zusammenfassung.
Das habe ich
versucht durchgängig zu machen
Naturliste auch klar, zentraler Begriff ist immer sowas,
sollte man tatsächlich sich mal merken, diese Folie,
das ist was, was vermutlich in der Klausur wichtig ist.
Vertiefung im Gegensatz dazu eher so, naja,
das ist eher so weiterführend, interessant, aber nicht so wirklich wichtig.
Autoren werden meistens auch mit angegeben von irgendwelchen Geschichten, die wir zitieren.
Das ist der Merker, das ist der schlaue Kopf,
der immer irgendwie da seinen Zeigestock auf irgendwas hält.
Der gestreifte Merker ist ein bisschen so ein bisschen was Besonderes,
immer wenn wir, wir machen ja hier Objekte und die Programmierungen,
aber imperative Begriffe hat, die manchmal eine etwas andere Begrifflichkeit haben,
dann ist das da angedeutet,
also da zum Beispiel der Begriff Methode in der objektontierten Programmierung ist meistens in der imperativen Programmierung,
das ist nur eine Prozedur, sowas.
Da war das Männchen hier, das ist Duke,
Negativbeispiele immer mit so einem kleinen, gelben Symbol hier,
ihr kennt das, atomar verseucht,
UML haben wir natürlich auch ab und zu mal mit dabei und Softwaretechnik,
dieses Symbol so ein bisschen, da diskutieren wir Erfahrungen,
also so Dinge, die wir einfach schon aus langer Erfahrung wissen,
dass das funktioniert oder nicht funktioniert.
Gut, ich werde jetzt versuchen,
so ein High-Level-Einstieg zu geben in das, was wir hier machen,
wir werden ja relativ schnell runterkommen auf diese Ebene von diesen kleinen Zahnrädern,
die in solchen objektantierten Systemen sich drehen, Objekte.
Und das will ich halt jetzt hier mal so ein bisschen motivieren.
Nehmen wir mal ein Szenario, ein Bankkunde geht zu seiner Bank.
Das könnt ihr euch alle vorstellen, ihr seid ja auch
Bankkunden vermutlich, ich habe vermutlich auch irgendwo ein Konto.
Ihr geht in die Schalterhalle, ihr zieht euch eure Kontoauszüge
und dann geht ihr an den EC-Automaten und zieht irgendwie 300 Euro.
Das ist ein klassischer Use-Case, ein Szenario,
Personen erledigen Aufgaben, um ein Ziel zu erreichen,
Aufgaben werden durch verschiedene Tätigkeiten Handlungen erledigt,
Handlungen sind charakterisiert durch die Art und Weise,
wie die Personen mit Gegenständen umgehen.
Wir haben gesehen, er ist so ein Geldautomat beteiligt,
ein Kontoaus Auszugsdrucker, da ist eine Karte beteiligt.
Das gehört alles mit dazu. Das ist die fachliche Seite.
Das ist das, was in diesem Szenario dazugehört. Uns interessiert natürlich,
was ist da jetzt hinter, was passiert jetzt in diesen Systemen,
die dahinter diese Software, die das ermöglichen.
Und da kann man jetzt sehr verschieden draufgucken. Man kann
auf Software sehr unterschiedlich gucken. Man kann Software sehr unterschiedlich bauen.
Und wir vermitteln ja hier die Objekte und hinter die Sichtweise.
Und das ist nur eine von verschiedenen möglichen Sichten auf die Welt.
Also hier ein Paradigma, das Objekt antierte Paradigma,
also eine Sichtweise, die uns hilft,
Dinge besser zu verstehen
Das ist gut. Wir wollen hier objektorientiert programmieren mit euch
. Und ich habe vorhin schon angedeutet,
so modellieren und programmieren unterscheiden wir so ein bisschen.
Und wir trennen das relativ stark und sagen, hier,
in der SE1 geht es ums Programmieren.
Wie gesagt, das sind so, ihr baut kleine Maschinen,
die irgendwie rettern und irgendwas tun.
Das ist wirklich wichtig. Deswegen hier eher so die Andeutung
so, Lego-Bausteine zusammenstecken und wissen, wie sie funktionieren.
Modellieren ist eher was Weiches. Hier so Modelliermasse. Ja,
also ich habe da einen Anwendungsbereich und ich will jetzt da
irgendwie Software für schreiben. Ja, was ist denn das
eigentliche Problem? Welche Begriffe sind denn wichtig in dem Anwendungsbereich?
Da sind ganz viele Details, die man ausblenden muss.
Modellieren heißt einfach Details weglassen
Dinge ausblenden. Das ist nicht einfach. Und das kann
man eigentlich nicht vernünftig machen, wenn man nicht weiß,
wie die Maschinen funktionieren, für die man dann das Modell entwirft.
Deswegen sagen wir, ihr solltet erst die Maschinen kennenlernen,
wie sie gebaut sind und wie sie funktionieren.
Und dann im zweiten Semester fangen wir da langsam an, über modellieren zu sprechen.
Wenn wir jetzt mal so eine Insider-Sicht auf dieses System haben,
dann kann man sagen,
das ist jetzt hier mal so eine Art UML-Diagramm,
so ein Use-Case so ein bisschen hier, der Kunde angedeutet,
dann hat man hier so eine Systemgrenze.
Und dann hat man jetzt hier Objekte. Also man kann
sich vorstellen, wahrscheinlich ist da so ein EC-Automat beteiligt,
eine EC-Karte, die gibt es wahrscheinlich irgendwo eine Kontoverwaltung
Die irgendwie weiß, wie viel auf dem Konto drauf ist,
da hat man vielleicht ein einzelnes Girokonto als ein Objekt.
Das ist eine starke Vereinfachung hier. Das muss ich dazu sagen.
Es ist erstmal zur Veranschaulichung. Und dann hat man vielleicht auch
so etwas wie einen Betrag, tatsächlich die 300 Euro.
Und die scheinen hier irgendwie zusammenzuarbeiten.
Das sind also Objekte, die irgendwie miteinander kommunizieren.
Das heißt, was tatsächlich passiert in solchen Objektwelten,
in so einem objektiven System, da laufen Prozesse auf Daten ab.
Das heißt, ein System besteht aus Objekten,
die Objekte interagieren und diese Objekte bieten Dienstleistungen.
Also zum Beispiel bei einem Girokonto,
das ist eine klassische Dienstleistung,
etwas einzahlen oder etwas abheben
Das ist etwas, was in der Objektorientierung sehr zentral ist,
dass man sich überlegt, dass diese Objekte, ja, kleine Dienstleister sind.
Dass es immer so was gibt wie ein Objekt,
das ein anderes Objekt benutzt, Klient und Dienstleister.
Eine ganz wichtige Vereinfachung, die wir hier vornehmen in SE1
, ist, wir betrachten keine Nebenläufigkeit.
Also mehrere Prozesse, die parallel laufen. Das heißt,
wir gucken uns einfach sequenzielle Programmierung an. Das heißt,
für uns ist es einfach so, wenn irgendwas passiert auf diesen Objekten,
dass da irgendwie so ein Betrag abgehoben wird von einem Konto,
dann ist das nicht so,
dass diese Objekte alle unabhängig voneinander sind.
Das ist oft das intuitive Bild, was man hat,
sondern dass tatsächlich da irgendwie so ein Kontrollfluss durchläuft
Alle Objekte sind passiv und warten darauf, dass irgendjemand von ihnen eine Dienstleistung anfordert.
Wenn jemand diese Anfrage stellt, ich bin ein Dienstleisterobjekt,
jetzt kommt so ein Klient und will von mir was,
dann kann ich entweder sofort antworten oder ich muss erst wieder
andere Objekte fragen, die mir vielleicht helfen können.
Und das ist das, was hier passiert.
Also irgendwie kann man sich das so vorstellen,
dass so ein Ball des Kontrollflusses, der ist immer in irgendeinem der Objekte.
Und das heißt also, wie so ein roter Faden läuft
dieser Kontrollfluss durch die Objekte durch. Das heißt auch,
wenn so ein Programm abläuft, ist immer irgendeines der Objekte,
das gerade aktuelle Objekt, wenn wir nur einen Kontrollfluss haben,
ist aber genau ein Objekt gerade aktiv.
Das ist so ganz gut um sich das ein bisschen zu veranschaulichen.
Das ist ganz hilfreich, dass man weiß,
es ist eigentlich immer nur ein Objekt zurzeit aktiv.
Wie gesagt, Nebenläufigkeit blenden wir erst mal aus.
Ich habe jetzt schon die beiden Kernbegriffe genannt, Klienten und Dienstleister.
Das ist sehr zentral. Das ist aber nicht nur in
der Objektorientierung zentral. Hier sprechen wir jetzt von Objekten.
Das Objekt, das den Dienst leistet, ist ein Dienstleister,
das Objekt, das den Anspruch nimmt.
Also zum Beispiel könnte ja jetzt dieser IC-Automat,
wenn der Zugriff auf das Konto hat, sagen, hier,
Konto, ich möchte jetzt hier 300 Euro abheben bei dem Konto.
Und dann sagt der, ja gut,
kann man bei mir machen
Das heißt, die Dienstleistung, die er anbietet, ist wirklich da.
Das müssen aber nicht nur Objekte sein. Das ist bei Software
allgemein so, dass es da wirklich immer zwei Seiten gibt.
Wenn er eine Prozedur in einer beliebigen Programmiersprache aufruft, gibt es immer jemanden,
der sie aufruft und jemand anders, der die Prozedur dann anbietet.
Dieses Verhältnis ist zentral bei Softwareentwicklung. Gut,
jetzt habe ich schon gesagt, diese Dienstleistungen,
die da angeboten werden, die kann man irgendwie zusammenfassen,
also zum Beispiel bei einem Konto,
kann ich jetzt sagen, es gibt einzahlt,
es gibt Auswahl und ich kann den Saldo abfragen.
Das wird in der Objektorientierung über Methoden gemacht,
das heißt also ein Objekt bietet Methoden an Und diese Methoden
kann man aufrufen und jetzt sozusagen abstrahiert im Sinne von Dienstleistung
, ist es so, der Klient fordert Dienstleistung an.
Der Dienstleister hat hier so ein ganzes Portfolio an Dienstleistungen.
Das sind dann die Methoden, die man so anbietet.
Und es kann aber auch durchaus sein, dass der Dienstleister
diese Dienstleistung wieder von woanders einholt. Und dann wird,
und das ist verwirrend bei der Programmierung und gerade bei der Objektorientierten Programmierung,
dass dann der Dienstleister,
der eigentlich diesen Klienten gegenüber eine Dienstleistung anbietet,
selber zu einem Klienten wird bei einem weiteren Dienstleister
Das ist sehr zentral, wenn man sich mit Objektorientierung beschäftigt,
dass man eigentlich ständig diese Perspektive wechseln muss.
Bin ich jetzt gerade klärend? Bin ich jetzt gerade Dienstleister?
Wenn ich Dienstleister bin, habe ich immer eine Schnittstelle.
Das heißt, ich biete Services an, Dienstleistungen. Das ist das Was,
was ich biete, aber wie ich das umsetze,
also wie tatsächlich hier der Dienstleister das intern macht,
ist dem Klienten üblicherweise verborgen.
Das vereinfacht Systeme, das ist zentral,
um große Systeme handhabbar zu halten. Das heißt,
diese Idee einer Schnittstelle werden wir auch das ganze Semester durch
immer wieder aufgreifen.
Und die ist sehr zentral
So zentral, dass wir tatsächlich einen Sprachmechanismus in Java haben,
Interfaces, mit denen man Schnittstellen beschreiben kann.
Und den werden wir auch tatsächlich auf Level 3 einführen.
So, das ist schon mehr oder weniger das.
Klientobjekt kann so vultierend also Dienstleister sein. Das ist
schon das, was ich zur Objektorientierung heute sagen will.
Das ist wirklich nur so ein ganz grober Einstieg.
Das ist der Fokus, den wir hier haben.
Ich will aber auch ganz deutlich nochmal betonen,
dass es natürlich auch andere Sichtweisen auf die Programmierung gibt.
Es gibt auch noch funktionale Programmierungen und es gibt logische Programmierungen.
Zwei andere Paradigmen
Sichten auf die Programmierwelt. Und die sind von den Grundideen
erstmal anders. Man kann damit genauso Software programmieren.
Manche Paradigmen sind für manche Problemstellungen besser oder schlechter geeignet.
Da gibt es schon Unterschiede, das sollt ihr natürlich auch lernen in eurem Studium.
Wir fangen hier mit Imperativ und objektorientiert an, weil das die größte Verbreitung hat.
Aber es gibt eben halt auch andere Sichten.
Und das ist gerade spannend, diese Sichten auch zu kennen.
Und dann in bestimmten Kontexten auch zu wissen,
da ist es jetzt vielleicht das funktionale Paradies mehr besser geeignet.
Wenn ihr zum Beispiel viel in der Mathematik arbeitet,
da sind die fachlichen Probleme natürlich mathematisch geprägt.
Und da ist es dann sehr viel netter,
wenn das ganze Paradigma auf Funktionen aufbaut.
Also ein Programm besteht dann in der Funktionalsicht aus Funktionen.
Kennt ihr aus der Mathematik vermutlich? Eine Funktion berechnet immer
einen Ergebniswert auf Basis von Eingabewerten, also Argumenten, die reinkommen.
Die Funktionen können kombiniert werden. Und ein Wertausdruck kann immer
durch einen Wertgleichen anderen Ausdruck substituiert werden.
Das ist sehr zentral in der funktionalen Programmierung.
Hier ist mal so ein kleines Beispiel. Also ich habe
hier eine Funktion Max, die wird mit Define hier definiert.
Max und die kriegt irgendwie zwei Parameter A und B und die
ist implementiert als mehr oder weniger wenn das Prädikat bin,
hier gilt es größer für A und B, erfüllt ist,
dann ist es A, ansonsten ist es B.
Also es gibt sozusagen tatsächlich den Größeren der beiden Werte raus.
Funktionale Programmierung ist extrem nützlich für viele Kontexte. Also es ist gut,
wenn ihr eine solide imperative Ausbildung habt in Programmierung und dann da das funktionale Paradima draufsattelt.
Da höre ich immer wieder von Leuten,
wenn sie das belegt haben, Mensch,
das hat mir nochmal so ein bisschen den Horizont geweitet.
Ihr könnt funktionale Programmierung hier explizit wählen bei uns.
SE3 ist ein Modul im Wahlpflichtbereich. Ihr müsst es
nicht machen, aber ihr könnt es machen.
Ihr müsst bei uns OO und Imperativ lernen.
Ihr könnt funktionale Programmierung dazulernen,
wenn ihr wollt
Sehr empfehlenswert. Andere Sicht, logische Sicht, die logische Programmierung,
üblicherweise manifestiert in Pro-Look, einer Programmiersprache, die Logikprogrammierung ermöglicht.
Das ist wieder eine ganz andere Sicht. Da sagt man
, ein Programm besteht aus logischen Regeln und Fakten.
Und dann kann ich tatsächlich an diese Regel- und Faktenbasis Anfragen formulieren.
Und die werden dann evaluiert. Und dann wird eben halt
abgeleitet, ob eine logische Anfrage wahr ist oder falsch.
Hier auch nochmal ein ganz kurzes Beispiel.
Ich bin kein Experte für logische Programmierung. Ein Prädikat.
Dreistellig wird hier definiert
Mit dreistellig. Also erste Regel, wenn zwei Zahlen gleich sind,
dann ist es auch das Maximum, Maximum gleich.
Maximum von A und B ist A, genau dann,
wenn A, größer B ist oder Maximum von A,
B ist B, genau dann, wenn A, kleiner B ist.
Das sind dann also hier solche Regeln,
die hier aufgestellt sind und dann kann man tatsächlich,
wenn man dann irgendwelche Werte angibt, konkrete Werte,
dann kann diese Regel- und Faktenbasis ausspucken, ja,
das ist größer oder das ist kleiner.
Auch das ist etwas, was extrem nützlich ist,
weil es insbesondere in Unternehmen oft so Regelmaschinen gibt,
also Regelgeschäftsregeln werden abgelegt in Repositories und diese Regel müssen verarbeitet werden.
Dafür ist es gut, einfach mal sich intensiv mit dieser Idee von logischer Programmierung beschäftigt zu haben.
Auch das ist wählbar. Die Empfehlung von den Veranstaltern dieser beiden Module ist,
wenn man beides machen will,
man kann auch beides machen, man kann beides wählen,
dann sollte man zuerst die funktionale Ausprägung besuchen von SE3 und dann die logische.
Die sind sozusagen, das ist ein guter Übergang,
weil man schon in der Objektnotiertenpromierung häufig funktional programmieren kann.
Und die logische Promierung ist sozusagen am abstraktesten,
da muss man schon deutlich mehr Erfahrung haben,
um das auch gut nachvollziehen zu können.
Ja, okay, das ist auch schon mehr oder weniger
das, was ich heute hier erzählen wollte.
Jetzt haben wir tatsächlich noch zwei Minuten,
ich bin erstaunt, ich bin doch schneller durch,
als ich dachte, ich habe ein bisschen schnell gesprochen.
Gibt es noch Fragen jetzt zu dem, was ich heute
hier erzählt habe? Gibt es noch irgendwie inhaltliche Fragen?
Sonst wird es nämlich morgen losgehen mit den Übungen und
wir sehen uns dann.
Vielen Dank