Ganz herzlich willkommen zur ersten Vorlesung der Lehrveranstaltung, Softwareentwicklung 1.
Ich bin nicht Guido Gozan, Fred Winkler sitzt da hinten,
der wird den zweiten Teil übernehmen.
Ich könnte jetzt Carla uns sagen, ich bin all.
Mein Name ist Hans Zülikoven. Ich habe hier in der
Informatik den Lehrstuhl für Softwarearchitektur. Und ich kann sagen,
ich habe etwas mit ihrer Lehrveranstaltung zu tun,
nämlich vor 22 Jahren, 23 Jahren.
Habe ich hier begonnen, meine Arbeit als Professor
und habe damals den Urvater oder die Urmutter dieser Lehrveranstaltung begonnen
zu entwickeln
Das ist halt so eine relativ lange Zeit. Und was es
immer wieder Spaß gemacht hat mit neuen Generationen von Studierenden,
diese Lehrveranstaltung zu machen, ist,
dass wir sie eigentlich in all den vielen Jahren immer wieder verändert haben.
Und ich bin jetzt hier an der Uni in meinem letzten Semester und freue mich ganz besonders,
dass wir diese Lehrveranstaltung wieder ein Stück weiterentwickelt haben.
Gut, Sie werden also aus meiner Sicht,
und das darf ich so ganz bescheiden sagen,
weil ich fühle ja nur noch die ersten anderthalb Vorlesungen mit Ihnen gemeinsam.
Diese Lehrveranstaltungen gehört für mich und für die meisten,
die in der Informatik studiert haben, zu den besten Lehrveranstaltungen,
die wir so im Angebot haben,
behaupte ich mal einfach so.
Und ich hoffe, nach einem Jahr sind Sie
auch der Meinung, dass das hier eine tolle Lehrveranstaltung ist
Denn wir haben die Ehre oder das Vergnügen, sie in das Kerngebiet dessen einzuführen,
was zur Informatik oder zumindest zur anwendungsorientierten Informatik gehört.
Das heißt, wir sitzen hier gemeinsam, um an dem zu arbeiten,
was man mit Fugenrecht so als das Handwerkszeug,
jeder Informatikerin und jedes Informatikers bezeichnen kann. Also es ist das,
wenn sie Bauarchitekte oder Architektin werden wollten, dann wäre es sinnvoll,
dass sie irgendwann mal wirklich auf dem Bau gearbeitet hätten und beispielsweise wüssten,
wie man eine Wand mit Ziegelsteinen hochzieht,
so etwas Ähnliches, ganz grob übertragen,
erleben sie hier,
denn heute wird die Welt ja
weniger dadurch verändert
Dass wir neue Städte bauen und damit die große Wanderung vom Land
in die, für die damalige Wahrnehmung zivilisierten Städte stattgefunden hat.
Heute ist ja die große Wanderung aus vielen Berufsbereichen hin in
die virtuellen Architekturen von IT-Systemen. Und was es damit auf sich hat,
das sollen sie hier in SE1 und SE2 lernen.
Also deshalb finde ich das immer sehr schön.
Sie hier begrüßen zu können und zu sagen,
es warten ganz viele spannende Dinge auf Sie.
Ja, Pathos genug, fangen wir an.
Hallo? Okay. Ganz am Anfang sollte ich Ihnen sagen,
damit Sie also gleich wissen, was hier abgeht.
Sie sehen hier vorne eine Kamera. Es ist mittlerweile zur Tradition geworden,
dass diese Vorlesungen auf Video aufgenommen werden und ihnen nach etwas Nachbereitung als Aufzeichnung zur Verfügung steht.
Also es ist eine Aufzeichnung, es ist kein Livestream.
Und mein gesprochener Ton ist hörbar, die Folien sind sichtbar in den Videos.
Und wenn Sie Fragen stellen in der Vorlesung,
dann sollte der Dozent sich daran erinnern, die Frage zu wiederholen,
damit das hinterher auf dem Video auch verständlich ist.
So, das sind also so die Spielregeln. Am Anfang,
also im Regelfall, ist das, was sie in den Bänken reden,
nicht zu verstehen, aber sie können sich natürlich vorstellen,
also wenn jemand irgendwie etwas laut sagt, kann das auch übers Mikro kommen,
nur dass sie wissen, was hier vorne mit den Videos passiert.
Und wir wissen, wir kriegen immer sehr positiv Feedback,
dass die studieren, das sehr schätzen,
auch in Vorbereitung auf die Klausuren, die dann irgendwann kommen werden,
dass sie sich einzelne Vorlesungen noch einmal ansehen können.
Heute nicht, aber im Laufe der Vorlesungsreihe werden wir auch ein System hier ausprobieren,
einsetzen, was Student Response System genannt ist.
Also das ist so, da können sie mit ihrem iPhone
oder einem Clicker oder über einen Webbrowser abstimmen zu Fragen,
die wir ihnen stellen werden.
Aber das werden sie sehen. Ich wollte nur ankündigen,
sie können das auch nachlesen, dass wir so ein System punktuell hier einsetzen wollen.
Näher möchte ich jetzt am Anfang nicht darauf eingehen. So,
jetzt die spannende Frage, wer sind Sie? Wir wissen,
hier sind nicht nur Formatiker und Informatikerinnen im Hauptfach,
sondern ganz viele aus angrenzenden Fächern vertreten,
nur um uns mal so ein Bild zu geben,
möchte ich es dir bitten, entsprechend die Hand zählen, wer ist aus der Wirtschaftsinformatik hier?
Wow. Ja, danke. Wer ist aus der Informatik
hier? Okay. Gut, wer hört das hier in
Mathematik im Hauptfach, dann als Nebenfach? Ja,
herzlich willkommen, freuen wir uns immer,
wenn wir hier Mathematiker und Mathematikerinnen haben, Physik passt auch dazu.
Ja, okay, auch sehr schön, vielen Dank.
Dann Lehramtskandidaten und Kandidatinnen, auch eine ganze Reihe.
Okay, jetzt nochmal die Untergruppen, wer studiert in der
Ausprägung MCI
Ah, das ist schon eine kleine Haufenbildung am Rande, ja.
CES. Auch eine ganze Menge. Und SSE. Ah,
die sind verteilt. Danke. Okay. Ja. Dann
gibt es immer noch einzelne aus teilweise ganz anderen Fachrichtungen.
Wer ist bis jetzt noch nicht aufgerufen? Studiert etwas anders
. Na, das ist ja auch eine ganze Menge.
Gut, vielen Dank. Okay,
ich will ganz kurz ein bisschen einführen in das Thema,
aber ansonsten haben wir heute, habe ich Ihnen noch einiges über die Spielregeln,
den Ablauf der Lehrveranstaltung insgesamt zu sagen.
Und dann wollen wir auch gleich in der zweiten Hälfte wird
Fred Winkler hier so ein bisschen Ihnen das Gefühl geben,
was passiert hier eigentlich inhaltlich?
Ich wollte beginnen mit dem Thema der Lehrveranstaltung
Als ich hier begonnen habe vor vielen, vielen Jahren,
war Objektorientierung eine der Paradigmen, sagt man,
wissenschaftlich oder eine der Art und Weisen, die man programmieren kann,
neben anderen, rein imperative oder funktionale oder logische Programmierung,
was immer das jetzt auch ist,
aber das gab halt Diskussionen,
was soll man in der Uni vermitteln und was wird in der Industrie gebraucht,
da gab es also heiße Diskussionen,
mittlerweile ist diese Diskussion weitgehend abgeeppt,
denn zumindest in der beruflichen Praxis gibt es für die neuere
Softwareentwicklung eigentlich nur diesen Ansatz der objektorientierten Programmierung,
den wir ihnen hier in den ersten beiden Semestern in dieser
Lehrveranstaltung beibringen
Auch an den Universitäten hat sich diese Idee durchgesetzt,
dass es sinnvoll ist, Studierende auch schon in einer Programmiersprache auszubilden,
die hinterher in der Praxis eingesetzt wird.
Also insofern muss ich hier vorne jetzt nicht sehr lange legitimieren,
weshalb wir objektorientierung und weshalb wir die Sprache Java ausgewählt haben,
dass wir es ein mittlerweile so Consens geworden.
Über was reden wir hier eigentlich? Wir reden hier an
der Universität eigentlich über die Entwicklung von Anwendungssoftware.
Das heißt Software, die von anderen Menschen meistens in ihrem Arbeitsleben,
aber auch darüber hinaus eingesetzt wird.
Das sind zwei ganz wichtige Dinge,
die man am Anfang sich schon klar machen sollte,
ich entwickle Software nicht für mich selbst
Das heißt, ich baue nicht Programmierwerkzeuge, die ich dann selbst einsetze und ausprobiere,
sondern im Endeffekt baue ich immer Software für andere Menschen,
die Menschen in ihrer Arbeit zum Beispiel einsetzen.
Und damit stellen sich Fragen,
wenn sie das später beruflich tun oder neben dem Studienberuflich tun,
dann stellen sich Fragen, die mit Softwareentwicklung,
mit Programmierung ganz wenig auf den ersten Blick zu tun haben.
Dann stellen sie also Fragen, was machen denn die Leute?
Verstehe ich überhaupt, was sie machen? Was ist nützlich,
Menschen darin zu unterstützen, dass sie ihre Arbeit tun?
Habe ich das gebaut, was von mir erwartet wird?
Habe ich das gebaut, was nützlich ist? Was mache ich,
wenn ich nicht das getroffen habe zu 100 Prozent,
was meine Anwender, was meine Auftraggeber von mir erwarten.
Also Fragen, die eigentlich an den Kern der Softwareentwicklung gehen,
die wir aber erst einmal hier ausklammern wollen und müssen,
weil handwerklich beruht alles darauf,
dass ein Stück Software abläuft und darüber reden wir hier.
Wenn Sie an einer technischen Hochschule Informatik studieren oder Softwareentwicklung studieren,
werden Sie im Regelfall mit einer Art von Software zu tun haben,
die man liegt ja nahe technische Software nennt.
Das heißt also, Software,
die primär dazu gedacht ist,
dass sie Maschinenanlagen steuert
Natürlich ist auch immer ein Mensch oder sind Menschen mit im Spiel,
sowie die Leute, die das Containerschiff farben oder die Kranführer,
die hier diese Entladekräne im Containerhafen bedienen oder die Kollegen meistens aus der Physik,
die Amdesi hier, die mit den Teilchenbeschleunigern arbeiten und die Ergebnisse auswerten.
Aber primär soll diese Art von Software halt die Maschinen so steuern,
wie sich das die, die damit umgehen, gedacht haben.
Das ist also so eine Art, mit Software umzugehen.
Ich habe das jetzt nur einmal in hier vorne gezeigt,
weil sich mittlerweile diese ganz klare Distanz,
die man vor zehn Jahren noch hätte,
so einfach sagen können, es gibt Software für technische Systeme,
dann gibt es Anwendungssoftware, dass sich die Grenzen immer mehr,
dass die Grenzen immer mehr verschwinden.
Das heißt, viele Anwendungssoftware-Systeme heute wirken mittelbar auch auf Gegenstände unseres Lebens ein.
Steuern sie, verändern sie, prüfen sie.
Das Stichwort Internet der Dinge ist in den letzten Jahren
ein Schlagwort gewesen und gewinnt immer mehr an Bedeutung.
Das heißt also, es ist ja durchaus üblich,
dass sie mit so einem Teil nicht nur telefonieren oder sich E-Mails ansehen können,
sondern dass sie auch beispielsweise über so einen Teil,
sollen wir ein Auto öffnen und starten können.
Da ist also schon die Trennung zwischen Anwendungssoftware für Mail und Software,
um ein technisches System zu steuern, ist schon dahin.
Also nicht unser Schwerpunkt hier, weil bestimmte Techniken, bestimmte Verfahren notwendig sind,
um solche Software zu programmieren, aber im Hinterkopf schon immer da.
Spannend, in den letzten Jahren für uns,
für mich ist geworden, dass wir Software in Endgeräten einsetzen,
die es in der Form vor, ja,
kann sagen, vor zehn Jahren noch gar nicht gab.
Das heißt, mittlerweile interagieren wir,
arbeiten wir mit Softwaresystemen in einer Art und Weise,
wie das vor zehn Jahren überhaupt nicht denkbar war,
vor zehn Jahren,
wenn man sagt,
ich arbeite mit Anwendungssoftware oder ich programmiere Anwendungssoftware,
hat jeder
maximal so etwas vor den Augen gehabt
Entweder auf dem Arbeitsplatz einen Rechner oder irgendeinen Laptop
mit einer Tastatur und einer Maus dabei.
Und das war die Schnittstelle, die wir zu unserer Software hatten.
Und die Software hat sich dargestellt, als irgendetwas auf einem Bildschirm,
vielleicht mit ein bisschen Ton dabei.
Meistens hat es ja nur gepiept. Was Sie hier sehen,
ist ja eine ganz andere Art von Endgerät und eine ganz andere Art,
Entschuldigung, mit Software umzugehen.
Mittlerweile gibt es berührungsempfindliche Tische, wie Sie hier ansehen.
Darauf stellt man Landkarten dar und dann kann man auf diesem
Tisch mit seinen Händen die Landkarte hin und her schieben.
Man kann sie vergrößern und verkleinern. Ich weiß,
das kennen Sie von iPads und ähnlichen Geräten.
Was Sie aber hier sehen,
ist so ein Stück mehr auf diese Tische,
kann man Gegenstände draufstellen,
was weiß ich
Jetzt nicht so eine Brille, aber um es zu verdeutlichen.
Sie legen eine Brille drauf. Dieser Gegenstand wird von dem
Tisch erkannt. Und dahinter steht irgendeine Art von Funktionalität.
Beispielsweise könnte diese Brille auf den Tisch gelegt dazu führen,
dass sie einen Ausschnitt wieder auf dem Bild jetzt nicht als Karte sehen,
sondern als Foto sehen.
Das heißt, wir sind da angekommen, dass wir heute
mit Anwendungssoftware umgehen, wie früher mit Brettspielen und Spielzeug.
Auch das ist Anwendungssoftwareentwicklung. Und damit haben wir so einen
Schritt getan in eine neue Anwendungswelt, die für mich ungeheuer faszinierend ist.
Und ich bin sicher, dass sie das also auch
sehr spannend finden mit solchen Systemen zu arbeiten.
Okay. Ja, das so als kurzer inhaltlicher Blick
Jetzt habe ich gesagt, erzähle ich Ihnen etwas wie die Lehrveranstaltung insgesamt abläuft,
bevor wir anfangen in ganz, ganz kleinen Schritten uns dahin zu bewegen, was Anwendungssoftwareentwicklung oder Programmierung ist.
Sie haben nachgelesen, dass diese Lehrveranstaltung aus zwei Teilen besteht,
einem Vorlesungsteil hier und einem Übungsteil nicht hier, sondern in Stelling.
Diese beiden Teile gehören zusammen und im Laufe dessen,
was ich Ihnen erzähle und im Laufe der nächsten Tage,
sollte Ihnen hoffentlich klar werden,
wie eng diese beiden Teile zusammengehören und dass das hier ein anderes Konzept ist,
als so dieses klassische Schulkonzept,
dann an der Lehrperson vorne steht, die ihnen irgendetwas erzählt,
eine Langstunde lang.
Und dann gibt es irgendwelche Zettel mit Aufgaben und die
können sie dann zu Hause machen. So funktioniert das hier
nicht. Und das macht die Lehrveranstaltung unter anderem spannend.
Wir werden von den Inhalten her beginnen mit einem neuen kleinen Teil,
den Fred Winkler hier in die Diskussion rangebracht hat,
so eine ganz kleine Miniaturversion einer Programmiersprache,
wo sie wie in einem kleinen Spiel ausprobieren können,
was die allerkleinsten und elementaren Bausteine der imperativen Programmierung sind.
Das wird so zwei Stunden inklusive oder zwei
Vorlesungen und zwei Übungswochen
In Anspruch nehmen. Ab Woche 3 geht es dann mit
der eigentlichen objektorientierten Programmierung los. Wir benutzen die Programmiersprache Java,
wird vielen von Ihnen schon etwas sagen, aber wir benutzen eine eingeschränkte Version,
die sich im Laufe der Jahre sehr bewährt hat, im Übungsbetrieb.
Das ist also ein etwas reduziertes Java mit einer eigenen kleinen Entwicklungsumgebung.
Das Ganze nennt sich Blue Jay. So,
brauche ich Ihnen jetzt nicht zusätzlich darüber zu sagen,
das werden Sie alles Schritt für Schritt kennenlernen. Im zweiten Semester,
in der Lehrveranstaltung SE2, schon im Namen ist klar,
SE1, er sieht zwei,
die gehören aus unserer Sicht und auch in ihrem Studienplan,
jedenfalls in den allermeisten Studienplänen gehört das ganz eng zusammen.
Im zweiten Semester werden wir dann noch ein weiteres Stück Programmierwissen draufsetzen,
aber wir werden auch beginnen, mit Ihnen Fragen zu diskutieren, die über das Programmieren hinausgehen.
Die sich also damit beschäftigen, wie entwerfe ich denn ein Programm?
So wie heute Architekten und Architektinnen im Regelfall ein Haus entwerfen,
bevor die Handwerker kommen, also in den allerseltensten Fällen,
wer ein Haus haben will,
der lässt sich ja nicht drei Lastwagen voll Ziegelsteine in den Garten
kippen und dann kommt ein Handwerker und dann legt er los und dann stehen die zwei davor und dann sagt der Hausbesitzer, also hier hätte ich ganz gern ein Fenster, selten.
So ähnlich ist es das auch in der Softwareentwicklung,
dass wenn man es professionell macht, man nicht einfach so,
ich kann ja ein Gianva tippen, beginnt loszulegen,
sondern dass man sich Gedanken macht, was man eigentlich will.
Und diese Entwurfsgedanken werden wir beginnen mit Ihnen im Zweiten Semester
zu diskutieren und einzuüben und dann benutzen wir also Entwicklungsumgebung auch nicht Blue Jay,
sondern die eigentlich heute einer der Standardumgebung, nämlich Eclipse.
Gut. Ja. Ich sage jetzt mal,
ich habe die Folie absichtlich so gemacht. Weil,
wenn ich Ihnen das jetzt erklären würde, würde es Ihnen ja sowieso nichts sagen.
Also brauche ich Ihnen auch nichts zu erklären. Das soll sagen,
wir haben eine Vorstellung von dem, was wir mit Ihnen zusammen schrittweise machen.
Also, Die Grundkonzepte der Imperativen und objektorientierten Programmierung,
darum geht es hier in SE1. Wir haben uns noch mehr Gedanken gemacht.
Wir haben gesagt, das Ganze passt in so ein,
seinen ersten einführenden Teil plus in vier Stufen.
Die Idee dabei ist, vom einfachen, schrittweise zum komplizierteren zu gehen.
Und am Anfang zu sagen, es gibt ganz,
ganz einfache Bausteine, mit denen man ein Programm überhaupt zusammensetzen kann.
Dann sollen sie lernen, dass die Objekte die Namens geben für die Objektorientierte Programmierung,
sind das die Objekte, als Programme etwas miteinander zu tun haben.
Und dann gehen wir in zwei Schritten weiter.
Auch das will ich Ihnen jetzt nicht näher erklären,
weil Sonst wüssten sie ja schon,
was wir hier in der Vorlesung mit mir vorhaben.
Also sie wachten sie ab. Ich hoffe,
dass sie im Rückblick sehen, okay, das hat das
System und es gibt also diese Einteilung in ein schrittweises vorgeht.
Ich habe gesagt, die Struktur ist nicht so die übliche Struktur.
Es gibt eine Vorlesung, es gibt eine Übung,
das gibt es schon, aber die sehen ein bisschen anders aus als üblich.
Also es gibt diese zwei mit heute Einführenden, Vorlesungsteile.
Es gibt zwölf Vorlesungen, wo es um Konzepte geht,
denn wir sind hier an einer Universität und nicht an irgendeinem Programmierkurs.
Also es geht nicht nur darum,
hier in der Vorlesung ihnen jetzt Schritt für Schritt zu zeigen,
wie programmiert man, sondern ganz, ganz wichtig.
Und da haben wir lange dran gearbeitet, ist zu sagen,
hinter einer Sprache wie Java, da stecken Grundkonzepte.
Und jede Objekt orientierte Programmiersprache sollte diese Grundkonzepte aufweisen.
Und sie sollten hinterher nicht nur Java beherrschen,
sondern sollten mit diesem konzeptionellen Wissen sich eigentlich sehr schnell in jede objektorientierte Programmiersprache anarbeiten können.
Sehr schnell heißt, wenn ich also auf die Leute schaue,
die mit mir zusammen professionell arbeiten,
wenn jemand das hier hinter sich hat und wirklich gut konzeptionell programmieren kann,
der sollte innerhalb einer Woche in der Lage sein,
sich, ich will jetzt nicht sagen flüssig,
aber sich in einer anderen Programmiersprache ausdrücken zu können
Das ist so unsere Anforderung an uns und an sie,
dass sie so viel Konzeptwissen hier mitbekommen,
dass ihnen der Umstieg in eine andere Programmierwelt nicht schwerfällt.
Das sind also die Vorlesungen. Dazu passen die Übungen,
die sind inhaltlich, denke ich, gut aufeinander abgestimmt.
Aber diese Übungen finden statt als sogenannte Labortermine. Das bedeutet,
sie haben sich ja schon dazu angemeldet, sie gehen hin,
sie bereiten sich vor, sie bekommen Übungsaufgaben,
sie lösen zu zweit oder in kleinen Gruppen im Laufe des Semesters,
lösen diese Übungsaufgaben.
Sie diskutieren mit ihren Betreuern über die Aufgaben und hinterher werden
die Ergebnisse das, was sie gelernt und gemacht haben,
werden von den Betreuern abgenommen und werden testiert.
Also keine Zettel mit nach Hause nehmen, Übungen Jungsaufgaben lösen,
Blätter abgeben. Nein, in den Laborterminen passiert alles,
was sie praktisch im Übungsbetrieb machen sollen. Wir wissen,
dass Leute mit sehr unterschiedlichen Vorkenntnissen hier bei uns beginnen zu studieren.
Deshalb so einmal die Frage an Sie, wer würde von sich sagen,
dass er schon einigermaßen in einer Programmiersprache programmieren kann?
Ah, okay, danke. Wer würde von sich ehrlich sagen,
dass er zwar weiß, was ein Rechner ist und was
Facebook ist, aber noch keine Zeile Programm geschrieben hat?
Das finde ich sehr ehrlich und sehr nett von ihm.
Sehen Sie. Okay, das soll aber allen zeigen,
wir müssen eine ziemlich offene Schere schließen
Das versuchen wir aus meiner Sicht sehr erfolgreich in den Übungen.
Das heißt, die Übungsgruppen, die Labortermine sind so aufgebaut,
dass auch für die erfahrenen Leute es garantiert nicht langweilig wird.
Und dass die Leute, die sagen, hu,
hier sitzen aber schon so viele rum,
die programmieren können und ich blödi,
habe mich vorher noch nicht damit beschäftigt,
werde ich das denn überhaupt schaffen?
Ja, sie werden das schaffen. Dafür werden wir sorgen
. Dazu unter anderem wird es Tutorien geben für die,
die ja so den Eindruck haben, ach,
das ist trotzdem alles so schwierig.
Oder die vielleicht, weil Deutsch nicht ihre erste Sprache ist,
die etwas Schwierigkeiten haben, eine Vorlesung zu folgen oder in den Übungen.
Auch dafür sind die Tutorien gut und gedacht.
Also das hieß der Grundaufbau. Ich habe ja jetzt schon
so gesagt, was die Idee dahinter ist
Vorlesung hat mit Konzepten zu tun, hat mit Erfahrungen zu tun,
die Softwareentwickler und Entwicklerinnen gesammelt haben und die wir,
weil wir auch in diesem Bereich ja schon teilweise sehr lange tätig sind,
für sie aufbereitet haben und ihnen mitgeben.
Das ist kein Programmierkurs, ich sage es nochmal.
Und es ist auch keine Vorbereitung oder Nachbereitung zur Übung,
sondern das sind Inhalte, das sind Erfahrungen,
die zu den Übungen passen, aber nicht so im Sinne,
dass wir hier vorrechnen oder nachrechnen, was sie in der Übung machen.
Über die Übungen habe ich schon etwas gesagt und ich will,
weil ich den Schulbetrieb durch Eigene Kinder,
wo die jüngste jetzt gerade Abitur macht, den Schulbetrieb,
kenne ich halt, wie er heute ist,
glaube ich, noch ganz gut.
Ein wesentliches Merkmal, auf das wir hier abheben,
ist, wir machen hier keine Einzelkämpferausbildung.
Sondern wir wollen ihnen von vornherein versuchen beizubringen,
dass die wesentliche Qualifikation einer guten Softwareentwicklerin eines guten Softwareentwicklers ist,
zusammenzuarbeiten, Fragen zu stellen, zu kooperieren.
Deshalb werden sie auch, obwohl ich weiß,
manchen gefällt das nicht so, sie werden von vornherein lernen,
zumindest zu zweit vor einem Rechner zu setzen.
Einige werden sich jetzt sagen, ui,
dann muss ich ja vor der Übung morgens duschen,
mir einen frischen dieses T-Shirt anziehen.
Genau das, aber das reicht nicht aus, das reicht nicht aus.
Das ist die Minimalvoraussetzung, aber miteinander zu reden und sich
auszutauschen über Probleme und Lösungen, das ist die Grundidee.
Ich weiß, wir haben in der Informatik,
wir haben so das Negativ-Image, dass wir im Wesentlichen aus,
dass wir so kleine, verschwitzte, verklemmte Männer sind,
die in dunklen Kellern so neben leeren Pizzakartons sitzen.
Die mag es geben, aber das sind keine typischen Softwareentwickler,
geschweige denn Softwareentwicklerinnen. Und so als Episode,
ich hatte letzte Woche das Glück, eine Woche lang,
so die einschlägigen Firmen in Silicon Valley zu besuchen von Google bis Facebook und Twitter.
Also alles, was Rang und Namen hat, was ich toll fand,
war, dass der Altersdurchschnitt in den Firmen wahrscheinlich ihr Alter plus fünf Jahre ist.
Und dass dort eine unglaubliche Unternehmenskultur überall herrscht,
wo wir uns hier noch einiges von abgucken könnten.
Aber auch da war völlig klar, das Einzige, was wirklich zählt,
ist, welche Persönlichkeit haben die Leute und wie sind sie in der Lage, mit anderen zusammenzuarbeiten.
Wir haben in keiner Firma gehört, das Wichtige ist,
dass jemand, der Wizard in der Programmierung ist,
hat keiner gesagt, sondern die haben gesagt,
wir gucken uns die Leute an.
Wir sehen, wie sie auftreten, wir sehen, wie sie reden.
Wir sehen, wie sie in kleinen Gruppen spielen,
miteinander arbeiten und wenn sie gut miteinander auskommen,
wenn sie kommunikativ sind,
dann sind das
unsere Leute
Also, ein ganz klein bisschen davon versuchen wir hier schon in den Übungsbetrieb reinzubringen.
Und ich hoffe, Sie nehmen das Angebot entsprechend an.
Was immer wieder unterschätzt wird und deshalb hier nochmal als weiterer Merika.
Wir wissen nicht nur, dass viele nicht als Muttersprache Deutsch sprechen,
die hier sitzen. Wir wissen auch, dass viele nicht
die Muttersprache der Softwareentwicklung sprechen, was Englisch ist.
Und beides müssen sie lernen. Wir werden zwar,
wir haben zwar die Lehrbücher in Deutsch,
aber ich würde von vorne hier jetzt ins Auditorium rein sagen,
wer nicht gut Englisch liest, zumindest so sollte da versuchen,
so viel nachzuholen, wie geht.
Praktisch, die uns zugängliche,
kann man gut finden oder kann man schlecht finden,
aber man muss feststellen, die uns zugängliche, führende Literatur,
ob wissenschaftlich oder praktisch in der Informatik ist Englischsprachig.
Und zwar nicht Schulenglischsprachig, sondern IT-Jargon, Englischsprachig.
Sie tun sich also einen großen Gefallen,
wenn sie neben einem deutschen Programmierlehrbuch auch ein englisches benutzen.
Dann haben sie wenigstens den gleichen Gegenstand vor sich.
Und sie müssen natürlich sich mit einer dritten neuen Sprachtyp auseinandersetzen,
nämlich mit Programmiersprachen und formalen Sprachen.
Auch das hat viel mit Sprache zu tun,
die heißen nicht zufällig auch so Programmiersprachen
Sondern das sind Kunstsprachen, die ihre eigenen Regeln haben,
ihre eigene Grammatik haben, ihre eigene Syntax haben.
Das ist das, was man alles lernen muss.
Und das sollte man nicht unterschätzen. Deshalb, also hier. Etwas,
was auch gerne vergessen wird und was ich deshalb auch hier zu Anfang sage,
Softwareentwicklung hat ganz viel damit zu tun, dass sie sich und Inhalte präsentieren müssen.
Das beginnt damit, dass sie hier in den Übungen
ihre Ergebnisse mit ihren Betreuern und Betreuern diskutieren müssen.
Und es geht jetzt nicht nur darum,
dass da irgendetwas Ablauffähiges auf dem Bildschirm steht,
sondern sie müssen auch in der Lage sein, zu sagen,
was habe ich hier gemacht und weshalb denke ich,
dass das funktioniert.
Also sie müssen sich ausdrücken können.
Sie müssen schreiben können
Auch das wird vielfach unterschätzt. Ich würde sagen,
wenn Sie mal mit Leuten aus der Praxis reden,
wie viel Zeilentext Sie in der Programmiersprache schreiben und wie
viel Zeilentext Sie in einer natürlichen Sprache schreiben müssen,
dann ist das Zweite im Regelfall immer viel höher als das Erste.
Also gewöhnen Sie sich auch an den Gedanken,
dass Sie sich in Texten ausdrücken müssen. Ja,
und der letzte Punkt, der ist eine Besonderheit unseres Faches,
da haben Sie noch viel Glück,
weil die Informatik ist ja keine so alte Wissenschaft.
Als ich Abitur gemacht habe,
das ist eine grauen Vorzeiten, 68, also 68er,
okay, da gab es in Deutschland noch keine Fakultät oder
Fachrichtung Informatik
Das ist also, wenn man das jetzt mit der Chemie oder mit der Physik
vergleicht, ist das natürlich eine ganz andere historische Basis.
Entsprechend sind ganz viele Leute, die die Grundlagen dessen geschaffen
haben, was wir heute hier erzählen können.
Noch am Leben oder gerade nicht mehr am Leben. Also die meisten Leute,
die die ersten Programmiersprachen gebaut haben,
die die ersten Grundzüge der Softwaretechnik mitentwickelt haben,
hatte ich das Glück,
in meiner Laufbahn kennenzulernen und es sind noch ausreichend viele von denen da,
die Grundkonzepte entwickelt haben, die sie jetzt hier beigebracht bekommen,
die sie hoffentlich in ihrem Berufsleben kennenlernen werden.
Das heißt also, sich damit zu befassen,
wer sind eigentlich die Personen hinter den Namen,
die sie hier hören.
Peter Nauer nach meiner Erinnerung lebt noch. Also ein Mensch,
der mit seinem Kollegen eine Grundlage geschaffen hat,
wie man Programmiersprachen formal darstellen kann. Solche Leute gibt es.
Gosling, glaube ich, lebt noch. Bjarnes Strauß-Trupp,
CPlus Plus, lebt noch, können Sie auf Konferenzen sehen.
Der Entwickler von Java gibt es nur. Also in keinem anderen,
in keiner anderen Universitätsdisziplin sind die Grundväter und Mütter
noch so nah dran oder existieren noch.
Ist ein großer Vorteil, weil man viel darüber mitbekommen kann,
die Motivation, weshalb jemand was gemacht hat.
Okay. Aber den Gruppen, habe ich schon gesagt,
so oder so ähnlich, sieht das aus.
Fred kaum gealtert, sie werden ihn gleich sehen,
kennt das also auch noch hier auf einem seiner frühen Fotos.
Wie das war, als wir angefangen haben,
hier mit den Laborübungen,
sehr spannend
Darüber habe ich schon gesprochen. Spare ich mir weitere Kommentare
? Nochmal zu den Übungen selbst. Sie haben ja für
die Übungen formal bekommen Sie drei Leistungspunkte. Zwei SWS,
Semesterwochenstunden steht auch in Ihren Verzeichnissen. Das bedeutet,
das wird umgesetzt durch drei Zeitstunden betreute Übungen, betreute Laborarbeit.
Das ist, wenn man umrechnet, was ein Leistungspunkt nach
internationalem Verständnis an Zeit bedeuten soll im Semester noch relativ wenig,
was wir an Präsenzzeit von Ihnen erwarten.
Ich glaube, ich habe da gleich auch noch eine Folie zu über den Zeitaufwand,
über den wir nachdenken, über den Sie nachdenken wollten.
Sie werden betreut in der Präsenzzeit, im Schnitt sieben bis acht
Studierende von einem Betreuer. Also umgerechnet vier Paare pro Betreuer
. Das ist ein für diese Universität ein absoluter Luxus.
Ein absoluter Luxus. Normalerweise gehen wir davon aus hier in der Universitätsplanung,
dass eine Person, die eine Lehrveranstaltung leitet,
so um die 20 Studierende zu betreuen hat.
Deshalb können wir uns diesen Luxus leisten. Ganz einfach,
weil es Menschen wie sie gibt in einem Jahr
Oder in zwei Jahren. Das Konzept der Übungsgruppen funktioniert nur,
weil wir ganz viele Studierende haben, die als studentische Hilfskräfte in diesen Übungen mitarbeiten,
die nämlich sagen, das war so eine tolle Lehrveranstaltung.
Das, was ich mitbekommen habe, das will ich auch weitergeben.
Ich hatte immer so viel Zuwendung in so vielen direkten Kontakt mit meinen Kommilitonen,
in höheren Semestern, die in den Übungsgruppen drin waren,
das will ich jetzt auch machen, damit diese Art von Betreuung funktioniert.
Das heißt,
wenn Sie nicht in einem Jahr oder in zwei Jahren sagen,
hey, das machen wir auch,
dann bricht dieses Lehrveranstaltungskonzept zusammen und deshalb freue ich mich,
dass wir das über Jahre ganz erfolgreich gemacht haben und
ich hoffe auf Sie,
dass das auch in den nächsten Runden
so weitergeht
Über die Vorteile, diese Art von Übung will ich hier gar nicht länger reden.
Ich kann nur so mit Blick auf unsere Kinder sagen,
ich wäre froh, wenn dieses Konzept,
man lernt in Gruppen und kriegt eine enge Betreuung,
wenn sich das an unseren Schulen etwas weiter durchgesetzt hätte,
weil von der Seite der Pädagogik und Didaktik ist das ein uralter langer Bart.
Und also so Übungen im stillen Kämmerlein oder Frontalübungen,
das funktioniert aus unserer Sicht gar nicht.
Also wir sind der Meinung, das geht ganz gut.
Ja, sie bekommen vor den eigentlichen Übungen,
bekommen sie die Aufgabenblätter und wir würden sagen,
Schauen Sie sich die Blätter an, lesen sich die Blätter durch.
Da ist immer neben den eigentlichen Übungsaufgaben, ist so ein Anfangsteil,
da steht so inhaltlich drin, was da kommen wird.
Und wenn Ihnen die Begriffe und Konzepte,
die vorne in diesem Kopftal drinstehen, wenn Sie sagen,
okay, ja, kenne ich, habe ich schon mal gehört,
habe ich in der Vorlesung gehört, habe ich woanders schon gehört.
Dann sind Sie auf der sicheren Seite, wenn Sie den
einleitenden Text nicht verstehen, sollten Sie sich entsprechend vorbereiten.
Natürlich sind die Übungen auch dazu da,
dass Sie diese Konzepte besser verstehen und wir haben ja auch
noch die Tutorin und Sie können ja auch noch nacharbeiten.
Nur, dass Sie verstehen, weshalb ist das so gedacht worden. Also,
der Konzeptionelle, der einleitende Teil jedes Aufgabenplattes sollte für Sie
außer ein Stück Rückkopplung sein, ich noch so halbwegs dabei.
Verstehe ich noch, was Sache ist und wenn nein,
wenn sie zum ersten Mal beginnen, die Begriffe nicht mehr zu verstehen,
dann sollte das für sie ein Hinweis sein, hey,
ich müsste noch mal was nacharbeiten.
So, es gibt also seit Pisa und Co. feste Vorstellung davon,
was von ihnen erwartet wird, wie viel Zeit erwartet wird,
um bestimmte Leistungspunkte zu erwerben, die das gesamte,
die gesamte Lehrveranstaltung hat sechs Leistungspunkte.
Jeder Leistungspunkt soll nach dieser Umrechnung 30 Zeitstunden beinhalten.
Also können Sie sich ausrechnen, das sind
130 Stunden insgesamt
Da wir entsprechend Wochenstunden oder Wochen zur Verfügung haben,
können sie auch wieder runterrechnen,
dass sie etwa auf acht Stunden pro Woche kommen.
Das ist aus unserer Sicht ein realistischer Zeitaufwand. In irgendeiner
Weise sollten sie sich zu dieser Erwartung an Zeitaufwand verhalten.
Und sagen sie hinterher nicht, wir hätten es ihnen nicht gesagt.
Ich bin der festen Überzeugung, dass die meisten,
die nicht erfolgreich durch SE1 und SE2 durchkommen,
dass die diesen Faktor unterschätzt haben
Ich denke, jeder Dozent, den sie begegnen werden oder jeder Sentin,
die hier vorne stehen werden, sagen, meine Lehrveranstaltung ist die wichtigste überhaupt.
Völlig klar. Wie sollte man sonst hier vorne stehen,
wenn man denkt, das, was ich hier mache,
ist eigentlich blanker Unsinn. Ich kann nur sagen,
diese Lehrveranstaltung, SE1, er seht 2,
das ist der zentrale Baustein, inhaltlich in ihrem Studium.
Und das legt die Grundlage für viele Lehrveranstaltungen,
die danach kommen. Und deshalb unser Rat an Sie,
Sie sollten es zumindest albern von hier vorne gehört haben,
versuchen Sie,
diese Zeit im Schnitt zu investieren,
dann werden Sie
wenig Probleme haben
Ich habe schon gesagt, wir wissen,
das Spektrum zwischen denen, die viel Erfahrung haben,
denn die wenig oder keine Erfahrung haben, ist sehr groß.
Damit kann man auf unterschiedliche Art und Weise umgehen,
sowohl als Anfänger, als auch als erfahrener Mensch.
Wir würden ihnen natürlich die aktive Variante empfehlen.
Wir würden gerade den Programmieranfängern und Anfängerinnen nicht empfehlen,
als Drittbrettfahrer versuchen mit minimalem Aufwand irgendwie zu überleben.
Wir wissen, das geht in Grenzen, aber es geht nur in Grenzen.
Irgendwann werden sie aus der Kurve fliegen. Und auch für
die erfahrenen Leute lassen sie sich nicht davon täuschen, dass sie sagen,
das bisschen Java, programmiere ich hier im Schlaf weg. Wie gesagt,
das hier ist insgesamt kein Programmierkurs und es sind viele Konzepte drin und ich weiß,
dass gerade bei etwas erfahreneren Leuten, die die Übungsaufgaben von SE1,
sagen wir mal so, in 20, 30 Minuten runterreißen,
dass die am Ende von SE2 manchmal dastehen und sagen,
wo kommt hier diese Betonmauer her,
gegen die ich gerade gerannt bin?
Weil das, was sie hier an Konzepten mitbekommen und an Möglichkeiten
sich auch in Konzepten zu bewegen und die eventuell anderen,
die noch nicht so weit sind, zu vermitteln,
um damit ihre Sicherheit in diesem Stoff zu gewinnen.
Das sollten sie nicht unterschätzen. Also nochmal die aktive Variante
hat sich bewährt
Es gibt Folienskripte als PDF-Dateien. Im Kommen sie,
sollten die meisten kennen, zeige ich gleich noch eine Folie.
Also es gibt die Aufgabenblätter, die sind auch als PDF im Kommen sie
verfügbar und stehen in den Übungen selbst gedruckt zur Verfügung, das zum Material.
Also sie brauchen sich kein zusätzliches Material an sich für die Lehrveranstaltung anzuschaffen,
über Bücher werden wir dann im Weiter noch reden. Für alle notwendiger Hintergrund,
notwendige Infrastruktur ist, das kommen sie,
dieser groß genannten Community-Space, die gibt es eigentlich,
so einen Raum gibt es eigentlich für jede größere Lehrveranstaltung,
die gibt es natürlich auch hierfür Gleich am Anfang ihrer Übung,
soweit sie das noch nicht im Griff haben, fragen Sie Ihre Betreuer,
wie Sie da reinkommen oder informieren sich schon vorher bei Kommilitonen,
weil Sie müssen erstens einen allgemeinen Account haben,
der gilt dann im Prinzip für alle Kommen Sie-Räume.
Den beantragen Sie über das System selbst ziemlich einfach.
Wenn Sie einmal diesen Benutzer-Account haben, also diesen Benutzerzugang,
wenn Sie einen Namen dafür haben,
dann melden Sie sich für diesen speziellen Kommen Sie-Raum zur SE1-Lehrveranstaltung
an und dann können Sie diesen automatisch anschließend betreten.
Da sehen Sie doch mal den Namen, oben sehen Sie
die Webadresse. Dieser Raum ist insofern wichtig,
als dass dort alle Dort sind alle Unterlagen verfügbar.
Dort sind Diskussionsräume. Dort finden sie Ankündigungen über irgendwelche Neuigkeiten im Betrieb
. Darüber sind sie auch für die Betreuer und Betreuerinnen
ganz einfach per E-Mail erreichbar. Also wenn irgendwas Besonderes passiert,
wenn sie sich eingetragen haben in dem Raum,
können wir sie über E-Mail unmittelbar als Teilnehmer und Teilnehmerinnen dieser Lehrveranstaltung ansprechen.
So, ich will jetzt hier nicht durch diese Scheinkriterien gehen.
Bitte sehen Sie sich die in den Skripten dieser Vorlesung an,
weil das sind die Spielregeln.
Das sage ich von vornherein. Dort steht drin,
unter welchen formalen Voraussetzungen sie überhaupt einen Schein bekommen können
Und da steht auch so in ihrer Prüfungsordnung. Und das sind die Spielregeln,
wenn sie dagegen verstoßen, dann haben sie Pech gehabt.
Also setzen sie sich damit auseinander, wann sie einen Schein bekommen,
wann sie keinen Schein bekommen. Noch gleich zur Einordnung.
Es gibt, sie müssen oder sie sollen laut Studienordnung,
laut Prüfungsordnung, hier in SE1 einen Übungsschein erwerben.
Das ist das eine, was sie hier rausziehen sollten.
Und sie sollten eine Klausur bestehen am Ende des Semesters.
Das ist das Zweite, was sie hier rausziehen.
Nach den neueren Prüfungsordnungen sind diese beiden Teile entkoppelt. Früher war es so,
der Übungsschein war die Voraussetzung, dass sie in der Klausur antreten konnten.
Das ist mittlerweile entkoppelt. Wobei wir niemandem mögen,
zu sagen, nehmen Sie nicht an der Übung teil,
schreiben Sie nur die Klausur, machen Sie die Übung irgendwann später.
Das funktioniert nicht. So, jetzt bin ich gleich so
gut wie durch. Ein Klausar pflegen, versuchen Sie,
sich die Begriffe, die für Sie neu und wichtig sind,
in einem Clossar rauszuziehen, damit Sie hinterher für sich eine Übersicht haben,
was es dort an neuen und an wichtigen Begriffen gibt,
können Sie hier auch noch nachlesen, was wir darunter machen.
Okay, das sind die Übungsgruppen und das ist der Stand der Übungsgruppen.
Von heute Mittag, Christian Speer hat mir ja eben noch
die Mail rübergeschickt mit dieser Folie. Sie sehen,
Die roten Übungsteile, die sind wirklich bis zum Rand voll.
Es gibt andere Termine, grün mit frei, die sind noch frei.
Und es gibt einige Schwamm drüber. Also,
schauen Sie da drauf und überlegen sich,
ob es für Sie nicht besser ist,
sich ein wenig umzuarrangieren, das können Sie noch.
Also, bis zum 23.10. können Sie sich noch ummelden.
Wenn Sie also in einer vollen oder übervollen Übung sind,
würden wir ihnen dringend raten, im eigenen Interesse,
weil in den Übungen findet das Entscheidende statt,
sich geeignet noch umzuorientieren
Schauen Sie sich an, wo ist noch was frei?
Stimmen Sie sich ab, wenn Sie das mit mehreren machen wollen,
wo Sie hin möchten? So. Es gibt drei Dinge,
die Sie noch wissen sollten, hier zur Lehrveranstaltung selbst.
Wie melden Sie sich um? Das machen Sie natürlich mit
dem zentralen Studienverwaltungssystem Stine. Da können Sie sich anmelden.
Wenn Sie Organisatorisches und Inhaltliches zu den Übungen haben,
gibt es zwei Personen, die im Wesentlichen ihre Ansprechpartner sind.
Der eine Fred Winkler kommt jetzt gerade mit seinem Rechner,
weil er
gleich dran ist
Und Christian Späh, unser Organisator, unser zweiter Organisator,
für die Übungen, steht auch für sie zur Verfügung.
Die sind beide im HSD oben im ersten Stock,
in Räumen nebeneinander und sie sind über diese Sammel-Mail-Adresse ansprechbar.
Wenn Sie etwas zur inhaltlichen Vorlesung oder zur Vorlesung inhaltlich haben,
in 14 Tagen ist Guido Gritzan hier,
der im Wesentlichen die Vorlesung halten wird,
sprechen Sie ihn an, er ist da auch erreichbar.
Und ein letztes, und das meine ich sehr ernst,
weil das sind für mich immer in der Betreuung von Studierenden
die Fälle, die mir persönlich sehr nahe gehen,
der Weg durch das Studium ist nicht einfach.
Schon allein durch die Menge Arbeit, die anfällt,
wir wissen, dass dieses Studium nicht das einzige ist,
was auf dieser Welt
für sie existiert
Viele Studierende müssen nebenher für Geld arbeiten und haben damit Schwierigkeiten,
ihre Zeit und die Zeit im Studium zu koordinieren.
Das gibt Stress, das gibt Folgen von Stress.
Es gibt viele Menschen, die im Studium mit familiären Problemen
zu kämpfen haben, die mit gesundheitlichen Problemen zu kämpfen haben.
Wir sind natürlich auch in solchen Fragen zunächst mal ihre Ansprechpartner,
aber wir sind nicht Profis in diesem Bereich.
Und deshalb möchte ich Ihnen gleich sagen,
die Universität hat eine eigene Abteilung, wo Leute sitzen,
die für so etwas nicht nur ausgebildet sind,
sondern für die das ein eigentlicher Lebens- und Berufsinhalt ist.
Das heißt, wenn Sie merken, es hängt nicht daran,
dass sich irgendwas inhaltlich nicht verstehe,
sondern ich habe Stress oder ich habe Angst vor Klausuren,
ich habe Angst vor mündlichen Prüfungen oder Wenn ich vor einem Text sitze,
vor einem Seminarpapier, dann frisst mich der leere Bildschirm auf.
Sie sind damit nicht die ersten und nicht alleine auf der Welt.
Dafür gibt es hier eine eigene Stelle, die Ihnen da weiterhelfen kann.
Ich kann Ihnen nur raten, nehmen Sie das in Anspruch.
Okay, Fred, du kannst übernehmen.
Vielen Dank erstmal von meiner Seite
. . . .
. . . . .
Bis jetzt. Hören Sie jetzt was? Ja,
Test, ein, zwei, drei Tests, ein,
zwei, drei Tests.
Ja? Okay
Gut, ich heiße euch alle auch herzlich willkommen bei der ersten Vorlesung SE1. Ich
habe diese Vorlesungen in ähnlicher Form vor einem Monat woanders gehalten.
Da hatte ich drei Stunden. Jetzt habe ich nur noch
30 Minuten. Ich glaube, ich muss ein bisschen überziehen
heute, sonst werden wir heute nicht fertig. Okay,
mein Anspruch ist es, euch heute genug über Programmieren beizubringen,
dass ihr in der Lage seid,
diesen Roboter erfolgreich durch dieses Labyrinth bis zu diesem Diamanten zu bringen.
Und nicht in die Wand reinzulaufen oder so. Das ist ein
recht hoher Anspruch, aber ich glaube, das ist machbar.
Ich habe es ja schon ein paar Mal gemacht.
Okay, kurze Folie zu mir. Man muss ja mal
ein bisschen was über sich selber sagen,
damit ihr mich ein bisschen kennenlernen könnt.
Vielleicht habt ihr ja auch Folien zu euch später.
Was habe ich so in den letzten sechs Jahren gemacht,
was mit Programmierausbildung
zu tun habt
Vor sechs Jahren habe ich einen C-Kurs gemacht bei einer Versicherungsgruppe.
Da wurde mir auch so gesagt, hey,
die Leute müssen irgendwie zäh lernen, weil sie irgendwelche Legacy-Code
haben für ganz alte Maschinen und Legacy-Code muss halt auch gewartet werden.
Also nicht überall auf der Welt wird Java programmiert,
sondern es gibt eben auch noch ältere Systeme.
Und da habe ich halt mal so ein bisschen in eine andere Programmiersprache reingeschnuppert.
Das fand ich ganz interessant. Erst wollte ich das ja nicht machen,
weil ich dachte, C, ist doch so alt,
was soll man damit heutzutage noch?
Aber es ist immer ganz nett, sein Horizont so ein bisschen zu erweitern,
was es eigentlich noch so gibt außerhalb der Java-Welt.
Genau, seit 2010 arbeite ich an der Uni, wir machen hier Java,
deswegen habe ich das natürlich auch auf die Folie draufgenommen.
Also jedes Semester bringe ich also den Studenten Schava bei oder versuche es zumindest.
Wir hatten damals auch eine Programmierveranstaltung übernommen für Nanowissenschaftler.
Gibt es irgendwelche Nanowissenschaftler im Publikum zufällig oder ehemalige Nanowissenschaftler?
Nee, doch,
alle hinten
Damit den Leuten also versucht, C-Plus plus beizubringen.
Und das war eine sehr interessante Erfahrung für mich,
weil ich da zum ersten Mal gemerkt habe,
man kann unmöglich eine Programmiersprache in einem Semester den Leuten beibringen.
Das geht gar nicht. C-Plus plus ist so eine komplizierte Programmiersprache,
dass man sich wirklich beschränken muss, zu sagen,
wir nehmen nur die elementaren Konzepte und die müssen sicher sitzen.
Es ist nicht schlimm, wenn man am Ende nicht komplett
C-Plus plus kam. Und das hat dazu geführt,
dass bei mir so ein Minimalismusprozess eingesetzt ist,
dass ich dachte, was sind denn jetzt wirklich die elementaren Konzepte,
die man auf jeden Fall braucht?
Und dann habe ich vor zwei Jahren ungefähr,
habe ich ein ganz interessantes Video gesehen bei YouTube.
Das war von der Universität Stamford,
wo den Leuten Programmieren beigebracht wurde mit so einer Mini-Welt,
mit einem Raboter, der sich durch diese Welt bewegt und da interessante Aufgaben löst.
Und ich war total gefangen von der Idee und dachte so,
das will ich irgendwie auch machen bei uns an der Uni.
Und dann habe ich das in diesem Kurs für die Nanowissenschaftler gemacht.
Wir haben das also 2012 gemacht mit 60 Teilnehmern
Und 2013 mit 90 Teilnehmern. Und dieses Jahr findet der
Kurs nicht Stadtfall, der ins dritte Semester verlegt wurde.
Also wenn, wird das erst wieder in einem Jahr stattfinden.
Und da dachte ich, ich habe diesen Roboter so lieb gewonnen,
dann muss er eben in der FD1 sagen, ja,
nützt nichts. Okay. Gut, soviel zu mir.
Ihr könnt mich gerne Fred nennen. Ihr braucht mich also
nicht irgendwie sitzen oder so in den Übungsgruppen.
Okay, die Folie hat der Heinz ja schon aufgelegt,
die muss ich nie wiederholen. Das ist ganz nett.
Also wer von euch hat schon mal programmiert und wen
auch nicht, das muss ich nicht nochmal fragen.
Dann vielleicht nochmal so einen kleinen Einblick,
wenn ihr noch nie bei uns am Informatikum wart.
So sehen also die Laborräume aus,
wo ihr dann programmieren werdet, drei Stunden am Stück.
Ihr seht also tatsächlich, ihr sitzt da immer zu zweit vorm Rechner.
Das hat pädagogische Gründe. Wir finden das also sinnvoll,
dass ihr nicht für euch alleine irgendwie da was zusammenhackt im stillen Kämmerlein sozusagen,
sondern immer direkt das Feedback eures Partners gehört, hey,
was machst du da eigentlich für einen Unsinn?
Lass uns doch erstmal darüber reden. Es hat aber
auch logistische Gründe. Wir hätten unmöglich genügend Plätze,
um euch alle bei uns unterzubringen an Einzelrechnern
Das geht ja gar nicht. Das kommt noch erschwerend hinzu.
Irgendwann musst du neue Räume bauen, weil ja nicht mehr bei uns rein passt.
Dann kann es doch passieren, dass du jetzt die Bedingungsgruppen,
dass wir einen Einblick sehen mit mehr als zwei Leuten sitzen müssen.
Die Frage war, muss man mit mehr als zwei Leuten
manchmal an einem PC sitzen? Das ist nur dann der Fall,
wenn es extrem voll ist und vielleicht noch ein,
zwei Rechner kaputt sind oder so.
Es sollte eigentlich nicht der Regelfall sein.
Aber ich sag mal so, mir ist es lieber,
es sitzen drei Leute an einem PC, als wenn einer alleine sitzt.
Ja, aber wir zwingen euch auch nicht mit der Peitsche
dazu, zu dritt zu arbeiten.
Ja. Okay, so sieht das also bei uns aus.
Von den Räumen haben wir natürlich mehrere parallel.
Okay. Gut. Wenn man sich mit Programmieren beschäftigt,
was ich schon sehr lange tue, ich habe das irgendwann
in meiner Kindheit entdeckt und seitdem hat mich das nicht mehr losgelassen.
Und wenn man sich damit beschäftigt,
wie kann man eigentlich Leuten programmieren beibringen?
Wobei beim Programmieren Barringen gibt es da
zwei verschiedene Schwierigkeitsstufen
Die leichte Schwierigkeitsstufe ist, Leuten programmieren beizubringen, die das sowieso intrinsisch wollen.
Ja, und ich gehe mal davon aus,
wenn ihr in dieser Lehrveranstaltung sitzt, Softwareentwicklung, einzeln wollt ihr programmieren lernen.
Das ist für mich einfach. Schwierig ist es, wenn man sagt,
wir wollen das Schulsystem revolutionieren und alle Leute müssen programmieren lernen.
Das ist zum Beispiel dieses Jahr in England passiert.
Ob jetzt ist Computer Science ein Pflichtfach in England zum Beispiel.
Finde ich ganz interessant. Okay, dann muss man sich
die Frage stellen, was bedeutet eigentlich Programmieren?
Und ich habe hier mal zwei Programmierer bei der Arbeit fotografiert,
beziehungsweise ich habe die Fotos natürlich nicht selber gemacht.
Und was ich immer ganz gerne die Frage stelle,
ist, ob irgendjemand diesen Herrn erkennt.
Und es gibt eigentlich immer so ein, zwei Freaks im Publikum,
die diesen Herrn schon mal gesehen haben.
Ja, du weißt es, einfach mal Handtuch, wer weiß es noch.
Ja, da hinten so eine Handvoll Leute, vielleicht da hinten, ja.
Das ist John Carmack, richtig. Weißt du auch,
was er programmiert hat? Er hat zum Beispiel Doom programmiert,
ne, Doom quack und diese ganzen schönen,
pädagogisch wertvollen Spiele.
Hier sieht man, also das ist, das Foto ist schon älter,
was man auf dem Foto nicht so schön sieht,
dass es also noch ein schöner alter, höheren Monitor,
der richtig schön weit nach hinten geht.
Ungewöhnlich groß für die damalige Zeit. Man sieht hier seine
Cola-Flasche, man sieht seine Tastatur, auch ungewöhnliches Modell.
Und dann war der Kontrast hierzu etwas neueres Foto,
was man also hier sieht, ist, offenbar werden jetzt andere Hersteller von Computern bevorzugt.
Andere Getränke werden bevorzugt, das scheint irgendwie Kaffee zu sein.
Andere Programmiersprachen, eine Programmiersprache, die mit dem Buchstaben J und A anfängt.
Vielleicht hat das auch Zusammenhang hier mit SE1. Dann sieht man hier hinten,
dass Softwareentwicklung auch, ja, wie soll ich sagen,
nicht völlig planlos stattfindet,
sondern dass man sich organisatorisch und Prozessgedanken machen kann.
Wir haben so und so viele Wochen Zeit, die Software fertigzustellen.
Wie organisieren wir das? Was ist uns am wichtigsten,
was in die Software reinkommt und so weiter?
Das sieht man hier alles im Hintergrund. Aber was trotzdem
in beiden Fällen der Fall zu sein scheint, ist,
die Leute starren irgendwie auf den Monitor und tippen auf der Tastatur rum.
Und dann könnte so der Eindruck entstehen, Ich lerne jetzt
einfach eine Programmiersprache, so Java, wie funktioniert das?
Da gibt es irgendwie so komische Klammern und so komische Simikolons
oder Simikola heißt das ja eigentlich richtig.
So, das lerne ich einfach alles und dann kann ich programmieren.
Und das ist eben nicht so, das reicht nicht.
Also die Programmiersprache muss man zwar beherrschen, weil sonst weiß ich nicht,
wie ich mich überhaupt ausdrücken soll. Aber die eigentlichen Gedanken,
die man sich macht, die sieht man auf diesem Bildschirm
irgendwie nicht und die werden auch in vielen Java-Büchern nicht drinstehen.
Okay, und das hat sich schon in den 70ern,
haben sich Leute darüber Gedanken gemacht,
wie bringe ich den Leuten das Programmieren bei am Anfang?
Und ein Herr, und das Stanford University,
Richard Patters hat eben gesagt, Programmiersprachen, die echten Programmiersprachen sind zu kompliziert.
Und er hat sogar eine Programmiersprache kritisiert, die heißt Pascal.
Ich weiß nicht, ob die irgendwer von euch kennt,
das ist eine Programmiersprache, die schon für die Lehre gedacht war und selbst die fand er noch zu kompliziert.
Er hat gesagt, die ganzen Konzepte, die da drinstecken,
sind zwar wichtig für die Praxis, es geht nicht ohne,
aber der Einstieg ist so schwierig, wenn man sich erstmal um diese ganzen Konzepte kümmern muss.
Also können wir nicht uns auf die Essentials sozusagen konzentrieren.
Und er hat dann eben ein System gebaut,
das nennt sich Carol The Robot und das werdet ihr euch heute vorstellen.
Und seine Hoffnung ist eben, dass man damit etwas lernen kann,
was nicht direkt mit der Programmiersperre an sich zu tun hat,
dass ich jetzt nicht mich darum kümmere,
wo sind die Klammern und wo sind die Simon Cola, sondern dass man sich Gedanken darüber macht.
Ich habe irgendwie ein Problem, was ich lösen will. Ich will von einem Roboter irgendwie,
ich will ihn durch das Labyrinth schicken, das aber dem Diamanten ist,
wie kann ich dieses Problem so lange in Einzelschritte zu erteilen,
bis ich irgendwann bei den Atomen angekommen bin, dass ich sage,
geh mal einen Schritt nach vorne oder dreh dich einmal nach links oder so.
Denn das ist ja eigentlich das Einzige, was der Roboter machen kann.
Alles, was darüber hinausgeht, müsst ihr ihm ja irgendwie beibringen.
Okay. Gut. Dann kommen jetzt noch ganz,
ganz viele Folien. Die müsst ihr euch wahrscheinlich dann selber durchlesen.
Wir fangen jetzt einfach mal an und ich schaue mal,
dass ich die Schrift, die ist vielleicht nicht groß genug,
aber ich kann sie größer stellen.
Ja, das ist schon zu fett. Vielleicht machen wir
es mal so groß, ja
Okay. Was sieht man jetzt hier? Das ist also ja
eine eigene Entwicklungsumgebung, die wir euch zur Verfügung stellen.
Man sieht hier links, so ein Bereich, das ist also
quasi Kerls Welt, so ein 10 mal 10 Brett.
Man sieht irgendwelche Wände hier in diesem Brett. Diese Kreuzer
haben jetzt keine weitere Bedeutung, außer dass man sich besser orientieren kann.
Ja, dass man also genau abzählen kann, okay,
wie viele Schritte sind dann das jetzt von hier noch da oder so.
Dann sieht man hier solche Diamanten,
die werden auch gerne Beeper genannt in Carols, Vokabular,
warum das so ist, weiß ich ehrlich gesagt nicht.
Ich nenne sie lieber Diamanten, aber wegen ihm heißen sie Beeper.
Und das ist also Carol selber, der Roboter,
den ihr irgendwie mit Befehlen durch die Gegend steuern könnt.
Okay. Dann haben wir oben so ein paar Knöpfe.
Dann haben wir hier so eine Leiste,
mit dieser Leiste kann man eine Geschwindigkeit regeln,
ich kann die Geschwindigkeit ja vielleicht nicht so auf die Mitte regeln und dann klicke ich einfach mal auf Goal.
Und dann werdet ihr sehen,
dass sich was tut und das hat sich so schnell was getan,
dass man das eigentlich gar nicht nachvollziehen konnte.
Ja, deswegen mache ich das mal ein bisschen langsamer
und mache nochmal das Goal. Ihr seht also,
Kerl geht dann Schritt nach vorne, nehmt den Diamanten,
geht noch einen Schritt nach vorne und dann geht er da
so hoch irgendwie,
dreht sich und dann legt er den da irgendwie ab
Und dann geht er wieder einen Schreibtuch vorm. Und jetzt
ist es unsere erste Aufgabe, dieses Verhalten nachzuprogrammieren. Okay,
wir haben jetzt also hier recht, so einen Textbereich,
wo man in einer Programmiersprache, die ihr jetzt noch gar nicht kennt,
die ihr jetzt spielerisch kennenlernen werdet, ihm sagen könnt,
was soll er denn nach und nach machen?
Ich gehe noch mal ganz kurz zurück,
lasst es noch einmal ablaufen und dann frage ich euch einfach mal,
was soll Kerl denn so nach und nach tun?
Gibt es irgendeinen Vorschlag, was er sinnvollerweise als erstes tun sollte?
Ruft es einfach in den Raum, wenn sich jetzt immer Leute melden,
dauert das zu lange. Nach vorne, richtig?
Und dann? Ich mache noch mal ganz was Reset,
weil ich gar nicht mehr weiß, wo der Diamant war.
Ah, da war er. Was soll ich dann machen?
Pick, genau, ja. Vor Ort, ja.
Ja. Ja. Ja. Ja. Ja. Ja
. Ja. Ja. Ja. Ja. Ja.
Ja. Ja. Ja. Ja. Das ist ja
. Ja. Das . .
Ich sehe nicht, dass er gegen die Wand gelaufen ist,
probieren wir noch mal. Nee, sieht eigentlich ganz gut
aus, ne? Und was jetzt sinnvoll ist,
wenn man seine eigene Lösung ablaufen lässt,
ist die Geschwindigkeit einfach mal auf Null zu setzen.
Nochmal Reset zu drücken. Und jetzt kann man ganz in Ruhe
nachvollziehen, was passiert. Ihr seht jetzt also hier links,
Entschuldigung, rechts. Seht ihr, in welcher Zeile,
ja, das Programm gerade stehen geblieben ist?
Also welche Zeile als nächstes ausgeführt werden würde,
wenn man jetzt die nächste Zeile ausführen wollen würde.
Das tut man, indem man auf Step klickt.
Oder man kann auch die F-12-Taste drücken. Also wenn ich jetzt F-12 drücke,
wird dieses Pick-Peaper ausgeführt, wenn ich noch mal drücke,
wird Move Forward ausgeführt, John Life move Forward,
John Wright, bevor man trotty per move forward.
Und dann ist das Programm vorbei. Toll, ihr seid Programmierer
. Könnt ihr jetzt ein nach Hause gehen, ne?
Sehr gut. Okay, was haben wir jetzt hier gelernt?
Wir haben erstmal gelernt, wie diese IDE überhaupt funktioniert.
Ja, also was bedeuten diese einzelnen Beratungen?
Was soll ich überhaupt tun? Und was ihr jetzt seht,
es gibt hier noch so eine Liste
Und das Problem, was wir jetzt gelöst haben,
war das allererste auf der Liste.
Das gehört sozusagen noch gar nicht zum eigentlichen Kanon dazu.
Das trägt also am Anfang die Nummer Null.
Eigentlich geht es erst hier los. Vielleicht schauen wir uns
einfach mal an, was soll denn hier getan werden?
Machen wir noch mal ein bisschen langsamer, schauen, was er tut.
Ja, der muss da irgendwie um diese Wand rum,
den Diamanten holen und dann irgendwie wieder zurückbringen.
Er kann nicht direkt durch die Wand, dann würde das Programm irgendwie knallen.
Das können wir vielleicht mal als allererstes ausprobieren,
ob man nicht einfach durch die Wand gehen kann.
Ich schreibe jetzt, ich muss jetzt also quasi
den Namen dieses Problems hier oben übernehmen, Optain Artefakt.
Man darf sich natürlich nicht vertippen, der ist da sehr pingelig.
Ich bin jetzt einfach mal blöd und gehe einfach,
wie oft müsste ich denn nach vorne gehen, 1,
2, 3. So, und dann nehme ich den Diamanten.
So, mal gucken, was jetzt passiert.
Wo? Geht nicht. Kaputt, Carol ist kaputt,
wir müssen einen neuen kaufen.
Also das war keine gute Idee. Gott,
das heißt,
ich warte wieder
Auf Vorschläge von euch. Turn Ride, richtig? Ich mache
noch mal kurz hier auf Ausgangszustand. Das ist für mich mental
immer einfacher. Genau, Turn Ride und dann? Okay,
dann schauen wir mal, ob wir das richtig gemacht haben.
Vergleichen wir noch mal ganz kurz mit dem Goal.
Das scheint also ungefähr dasselbe zu machen. Genau, sogar
exakt das ja. Gut. Ja, habt ihr gut gemacht.
Wenn das jetzt alles wäre, was Programmieren ausmacht,
dann wäre das irgendwie Erstmal nicht besonders spannend und ihr seht auch,
die Programme werden ja unheimlich lang und irgendwann werden die einfach nicht mehr lesbar.
Stellt euch vor, ihr kriegt die Aufgabe, ein Programm zu warten,
was irgendwie schon seit zehn Jahren existiert und ihr habt so wie eine,
so eine riesige, lange Abfolge, wie 100.000 Zeilen Quelltext,
die alle einfach so hintereinander abgearbeitet werden.
Das kann es ja irgendwie nicht sein. Irgendwie musst du
noch mehr hinter den Programmieren stecken. Und was man hier vielleicht gar nicht auf den ersten Blick sieht,
man kann das einmal gucken, wenn man das Goal ablaufen lässt,
ist, man kann irgendwie zwei Phasen unterscheiden,
so ähnlich wie beim Fußball, wo es wusste,
die erste Halbzeit und die zweite Halbzeit gibt,
wo Kerl eigentlich fast dasselbe tut.
Ihr werdet ja da so sehen,
dass er da unten irgendwie einmal so eine, ja,
so eine 180-Grad-Kurve irgendwie fährt und dann nimmt er den Diamant
und dann fährt er irgendwie nochmal diese 180-Grad-Kurve und ich kann,
um das Ganze mal ein bisschen zu beschleunigen und einfach mal schauen,
ob ich das hier irgendwie mal ein bisschen optisch hervorheben kann.
Also sozusagen dieser Code-Abschnitt, ja,
ich will das mal ein bisschen nach oben schieben,
dieser Code-Abschied und dann dieser
Ich meine, das wäre exakt dasselbe, was da passiert.
Wollen wir uns noch mal ganz kurz was angucken?
Also wir haben das Moforward, das Turnleft, das haben wir hier auch.
Dann wird dreimal Moforward, haben wir da auch.
Turnleft from Forward haben wir da auch. Okay,
wir haben also irgendwie eine Folge von Befehlen, wo wir uns irgendwie logisch sagen,
das ist irgendwie so eine 180-Grad-Kurve, ein U-Turn, so.
Kann man dieser Folge von Befehlen nicht einen eigenen Namen geben
und sie dann mehrfach verwenden in meinem Programm,
sodass ich sie nicht zweimal hinschreiben muss.
So ähnlich wie in einem Kochbuch oder Backbuch,
steht ja auch ganz oft,
wenn ihr vielleicht eine Pizza machen wollt oder irgendwas steht als erstes,
machen sie doch erstmal das Grundteig-Rezept von Seite sowieso.
Das wollen sie nicht immer wieder in das Backbuch neu reinschreiben.
Und das kann man eben auch. Wie können wir
sein eigenes Rezept oder einen eigenen Befehl schreiben?
So ähnlich wie ich das hier oben auch geschrieben habe,
die Syntax, also die Art, wie ich so hinschreibe,
ist exakt dieselbe.
Jetzt muss ich mir einen guten Namen ausdenken, sagen wir mal,
vielleicht U-Turn, mir fällt aber nichts Besseres ein.
Und dann nehme ich einfach diese Befehlsfolge.
Ich weiß nicht, wie gut ihr Corpy-Paste ist ein bisschen
in Verrufen gekommen
So in letzter Zeit, gerade was Doktorandenarbeiten und so angeht,
aber ich mache das jetzt einfach mal,
ich kopiere das mal einfach hier unten runter.
Und dafür lösche ich mal hier das Original. So,
und jetzt kann ich stattdessen hier oben sagen, ich möchte diesen neuen Befehl aufrufen.
Ja, und das kann ich genauso tun,
wie ich diese eingebauten Befehle aufrufen habe, Pick Beeper oder Drop Beeper,
ich rufe einfach mal einen U-Turn auf, das sieht genauso aus.
Selbst sage ich, ich will also einen U-Turn machen, ups.
Und hier unten will ich noch einen U-Turn machen.
Ja. Also dreh dich nach rechts, wie gesagt,
dreh dich nach rechts, dann guckt er nach unten,
dann macht er diesen U-Turn, dann nimmt er den Beeper,
dann macht er noch einen U-Turn und dann legt er den Beeper wieder ab.
Schon ist unser Programm, kürzer und irgendwie auch so ein bisschen übersichtlich,
aber man versteht irgendwie besser, was da passiert,
als wenn man irgendwie 20 Zeilen Code lesen müsste und erst mal guckt,
wie ist denn da die logische Struktur, was gehört logisch zusammen.
Okay, das muss man natürlich ausprobieren,
ich kann euch ja alles mögliche erzählen.
Wie sieht das aus? Erstmal nichts Spannendes. Also
ich will, dass das Turn Wright ausführt, so.
Und jetzt kommt eine spannende Frage. Was passiert denn
jetzt, wenn ich noch einen Step mache
Er springt nach unten in die andere.
Er springt irgendwie nach unten in die andere Funktion.
Das sieht jetzt also so aus. Das heißt,
in Carrits Welt hat sich erstmal gar nichts getan.
Er ist also nicht nach vorne gegangen oder hat sich gedreht oder irgendwas.
Sondern wir sind jetzt einfach in dem Programm von dem Aufruf
dieses eigenen Befehls reingesprungen in die Definition des Befehls.
Und jetzt wäre es doch irgendwie schön,
wenn man das optisch hervorheben könnte,
dass dieser Sprung stattgefunden hat oder dass es irgendwie diese Beziehung gibt,
hier wurde aufgerufen und hier ist die Definition.
Und seit letztem Jahr, seit letztem Jahr gibt es da
tatsächlich eine Möglichkeit, das zu visualisieren.
Dafür müsste drücken, Steuerung, Shift Air. Schreibt euch
das mal bitte alle auf, Steuerung, Shift Air,
denn ihr werdet das im Übungsbetrieb sicherlich auch brauchen.
Das sieht dann so aus. Ja, vielleicht,
weil es ein roter Balken ist, ja.
Was bedeutet dieser rote Balken? Dieser rote Balken fängt an an der Aufrufstelle.
Also da, wo ich das U-Turn aufgerufen habe,
wo ich sage, ich will das jetzt bitte,
dass das ausgeführt wird.
Da fängt der rote Balken an und wo endet der rote Balken?
Der rote Balken endet da, wo die Definition endet,
das befehlst du nicht Aufrufe, ja.
Wo ich also mit dem U-Turn fertig bin,
Muss Carrie ja irgendwie wissen, ja, wohin muss ich denn jetzt zurückspringen?
Von wo kam ich denn ursprünglich mal ein? Früher hat man
dann ein Stück Brot genommen und so Brotkuhen hinter sich hergelegt,
damit man weiß, wohin man zurück muss.
Das macht eben hier dieser rote Bein. Okay. Gut,
das heißt, wir führen jetzt hier dieses U-Turn aus.
Das ist jetzt nicht spannend. Ich überspringe das mal ein
bisschen. Und jetzt wird es wieder spannend. Was glaubt
ihr denn, was jetzt passiert? Wenn ich sage,
ich möchte jetzt aus diesem U-Turn wieder zurückspringen, deinen,
wo ich herkam, ja?
Ja, ich reg in die alte Visition zurück an die Stelle,
wo das YouTube herausgeführt wurde danach.
Danach. Richtig, sehr gut. Richtig, genau.
Wir müssen also jetzt Zugsinnseide 28 springen. Mal gucken,
ob das auch passiert. Tatsache. Warum ist das wichtig,
dass nicht in Zweile 26 gesprungen wird, sondern in Zeile 28, ja?
Ja, 26 springen könnte den U-Turn immer noch.
Er würde ihn nochmal auswählen, er würde in einer Endlosschleife landen.
Das wäre irgendwie nicht sinnvoll. Gut, ich hoffe,
das ist irgendwie intuitiv verständlich. Und durch diese Visualisierung
wird es vielleicht noch ein bisschen verständlicher. Gut,
dann nehmen wir den Bieper auf und jetzt springen wir
wieder hier unten rein
Mal seht, hier ist der rote Wagen ein bisschen anders,
diesmal startet er erst in Zeile 30, weil ich ja von hier jetzt komme.
Also jedes Mal, wenn Kerl sozusagen hier unten bei so einer geschweiften Klammer zu ankommt,
weißer A, alles klar, ich komme von hier,
dann muss ich ja wohl hier weitermachen.
Sehr schön. Gut. Beide Lösungen, die ich euch jetzt vorgestellt habe,
einmal die mit dem ganz langen Quelltext und jetzt die mit,
ich habe es unterteilt, in zwei verschiedene Befehle, tun in Kerls Welt exakt dasselbe.
Man kann also jetzt nicht sagen, dass es irgendwie falsch wäre oder richtig, die eine oder die andere Lösung. Aber aus softwaretechnischer Sicht,
wenn man sagt, wir wollen,
dass die Programme auf lange Sicht wartbar sind, lesbar,
dass die auch jemand anders versteht und nicht nur wir selber und dass wir selber sie auch noch nächste Woche verstehen,
sollte man immer versuchen, zu sagen, diese fünf,
sechs, sieben Befehle gehören irgendwie logisch zusammen,
sie erfüllen eine Aufgabe, die ich benennen kann,
dann tue ich sie doch meinen eigenen Befehl.
Okay. Und wenn ihr das verstanden habt,
dann habt ihr eigentlich schon 50 Prozent von dem verstanden,
was das Programmieren nach meiner Ansicht
so ausmacht
Ja, mach nicht zu lange Befehle,
sondern teile das auf in sinnvolle, logische Einheiten.
Okay, auch weiter so viel Spaß macht, machen wir einfach mal weiter.
Machen wir nochmal hier gleich weiter, ja. Es hat jedes Rätsel,
was man jetzt hier nicht sieht, hat so eine kleine Geschichte,
das lest ihr dann auf dem Aufgabenblatt.
Hier ist es zum Beispiel so, also Carol ist so ein Multitalent,
der greift ständig neue Berufe und lässt sich ausbilden.
Also er wird zum Beispiel hier zum Sprengstoffmeister ausgebildet.
Das ist eine Bombe, die droht zu explodieren und er muss sie entschärfen.
Schauen wir mal kurz, wie er das macht.
Er braucht so ein bisschen Fantasie, in echt ist es nur ein Bieper.
Also der explodiert nicht wirklich was. Er nimmt also diese,
er läuft zu dieser Bombe, nimmt sie auf,
läuft wieder zurück und dreht sich dann nochmal um.
Das können wir auch mal zusammen programmieren. So,
jetzt tue ich einfach mal so, als würden mir Leute
zurufen, ich soll sowas machen.
So, das ist natürlich auch nicht der Sinn beim Programmieren.
Warum ist das nicht schön? Hier oben fand ich das
kein Problem. Ein Mensch, der sich das anguckt,
der sieht mit Einblick, dass da dreimal Move Forward steht
So bei drei, vier oder fünf kann man das gerade noch sehen.
Hier unten geht das ohne Nachzählen nicht mehr und jeder zweite
Mensch verzählt sich garantiert. Also wäre es doch schön,
wenn man sagen könnte, ich will Move Forward ausführen.
Ja, wie oft will ich es eigentlich ausführen?
9, 9, 9. Ja, so lange,
bis wir von der Wand stehen, lernen wir erst nächste Woche.
Gut, also wir wollen es neunmal ausführen, ja.
Dafür gibt es also eine andere Möglichkeit. Ich lösche jetzt
erstmal alles, dass wir nicht denken, das gehört dazu.
Ich kann also sagen, wiederhole doch neunmal Move Forward.
Das probieren wir einmal aus. Ob das funktioniert? Tja,
wunderbar funktioniert. Ich kann also neunmal nach vorne gehen.
Und wenn ich jetzt versuche, zum Beispiel zehnmal nach vorne zu gehen,
nur, dass ihr seht, dass die Zahl hier wirklich, wups.
Dass die Zahl wirklich berücksichtigt wird, dann wird es wieder knallen,
weil er beim zehnten Mal natürlich nicht durch die Wand gehen kann.
Also neunmal war es schon richtig. Okay,
was sollen wir dann machen
Big People, genau, und dann? Zweimal nach links,
oder man kann sich auch direkt umdrehen, geht auch, ja. Jetzt nochmal,
das heißt, man würde jetzt vielleicht die Intuition haben,
na, ich kopiere mir das einfach,
und dann habe ich es da zweimal stehen und so,
ich will mir lieber lieber einen eigenen Befehl dafür machen,
ich nenne das mal Move Across World,
vielleicht so Kerls Welt ist nicht besonders groß.
Und dann ziehen wir das mal da runter.
Und dann kann ich das hier oben aufrufen. Ihr solltet
nicht Angst davor haben, eure Befehle lang zu nennen,
nach dem Motto, da muss ich ja so viel tippen.
Ihr könnt zum Beispiel einfach sagen, Move A,
ja, und dann sagt ihr Steuerung, Lehrtaste,
und dann wird der ganze Rest von alleine geschrieben.
Also ihr habt keine Ausreden zu sagen, ja,
ich habe es nur vier Buchstaben genommen,
dann würde ich es immer schnell tippen können.
Diese Ausrede lasse ich nicht gelten. Gut, dann wollen
wir das hier nochmal machen. Und dann gucke ich mal
ganz kurz, in welchem Zustand wir dann sind,
was dann noch fehlt.
Was fehlt dann noch
Fehlt im Gegensatz zum Goal noch irgendwas? Richtig,
am Ende tauchen wir noch. Denn die Geschichte ist,
Carol ist so stolz auf sein Werk,
dass er sich das nochmal angucken will, diese Wand,
die er da gerade vor der Detonation bewahrt hat.
Okay, das heißt, jetzt müsste das stimmen?
Sehr schön. Gut, weiter im Text.
Was sollen wir denn hier machen? Vielleicht gibt der Name
ja schon einen Hinweis darauf, die Fews Two Bombs,
ja, das sieht so ähnlich aus, wie das,
wie das eben, ne?
Hat jemand irgendwie einen coolen Vorschlag? Ich schreibe schon mal
den Anfang hin. Sehr gut. Dasselbe, wie vorher
, was heißt das? Ich meine, wir machen jetzt
mal gemeint, wo jetzt noch mehr davon aufgeht.
Also, was soll ich jetzt schreiben?
Vielleicht muss ich es konkreter fragen. Ah, sehr gut
, ein zukünftiger Programmierer spricht.
Die Fews One Born
Ich brauche mir überhaupt jetzt keinen Quelltext sogar kopieren.
Wenn ich etwas nochmal machen will,
was ich schon programmiert habe, dann mache ich nicht Copy-Paste,
sondern ich benutze einfach das, was ich programmiert habe.
Ja, ganz wichtig beim Programmieren. Niemals dasselbe zweimal programmieren. Gut,
wenn ich das gemacht habe,
dann stehe ich ja sozusagen hier und gucke nach Osten,
ja, wer hat das gesagt, du, ne?
Richtig, Turn Left muss ich dann machen.
Und was muss ich dann machen? Richtig. Sehr schön.
Ich seid alle schon ausgebildete Programmierer, das ist toll.
Was jetzt auch spannend ist, ihr seht,
ist die zwei solcher rote Balken.
Da werde ich euch in der Übungsgruppe löschern,
wie das sein kann, dass da jetzt zwei rote Balken sind.
Macht euch da mal Gedanken drüber. Ich will das jetzt
noch nicht verraten. Gut. Okay, jetzt,
wir haben leider nicht mehr viel Zeit, deswegen überspringe ich jetzt ganz viel.
Und wir gehen mal zu dem nächsten interessanten Schritt.
Hier. Das ist nochmal wichtig, dass wir darüber reden.
Und ich lade die Welt nochmal neu
Und ich lade sie nochmal neu und nochmal neu.
Fällt euch irgendwas auf? Die ist jedes Mal anders,
die Welt. Gut, das heißt, wir müssen jetzt
irgendwie die Möglichkeit haben, auf unsere Umwelt zu reagieren.
Wir müssen irgendwie checken, sind irgendwelche Wände um mich rum oder nicht?
Und wenn ja, würde ich das eine machen, ansonsten das andere.
Das können wir doch vielleicht auch nochmal zusammen programmieren.
Vielleicht sollen wir jetzt mal gucken, was Carrie überhaupt macht.
Schaut euch in Ruhe an, was er macht, während ich hier schon tippe.
Also diesmal sind die Diamanten, nicht Diamanten, sondern Zement.
Also wenn man Diamanten in die Straße legt,
dann sind die, glaube ich, ganz schnell wieder weg.
Das soll also Zement sein. Ja, also er guckt jedes Mal,
hey, ist da ein Loch und wenn da ein Loch ist,
dann wähle ich da Zementalentum.
So, und jetzt ist so meine Intuition,
das ist aber ein ganz schön schwieriges Problem.
So eine ganze Straße auf Löcher zu prüfen und wenn da ein Loch ist,
will ich was tun, können wir das Problem nicht erstmal kleiner machen.
Wir können ja zum Beispiel davon ausgehen,
dass wenn Carrie jetzt irgendwo steht,
dass da diese Logik ein Loch zu füllen, wenn er merkt,
dass da eins ist, dass das schon eingebaut ist.
Ich tue einfach so, als würde es einen Befehl geben,
ich schreibe ihn mal hin,
vielleicht nennen wir ihn mal Drive, Phil Hole oder so.
Ja, ich tue einfach so, als würde es
den Befehl schon geben. Was müsste ich dann nur noch
tun? Der kümmert sich ja noch um ein Loch.
Ja. Dann müssen wir uns noch mal vorwärts belieben.
Richtig. Und wie oft müssen wir das tun?
Neunmal. Okay. Gut, machen wir neunmal.
Machen wir also dieses Trial Phil Hole, so,
und dann müssen wir uns vorwärts bewegen.
Gut. Da fehlt noch was? Wenn wir jetzt davon ausgehen,
dass wir den ersten auch nicht unter Umständen auch locker,
dann würde da jetzt der Letzte nichts gebt.
Richtig, du sagst, falls es nicht angekommen ist,
der Letzte würde nicht befüllt werden,
weil wir ja neun potenzielle Löcher füllen.
Also soll ich jetzt hierraus einfach
eine Szene machen
Nein. Ich würde die beiden zeigen, entweder tauschen oder
auf jeden Fall entweder davor oder dahinter ein Speichel holen.
Sehr gut. Du hast mir sehr viel Spaß,
aber auch Stress vorweggenommen, was hier alles schiefgehen kann.
Sehr gut. Das ist eine interessante Struktur, die werdet ihr häufig sehen.
Lass uns mal kurz überlegen, was hier logisch passiert.
Hier steht, es soll etwas neunmal passieren, okay?
Das heißt, Kerl wird versuchen, neun Löcher zu füllen und
nach jedem Mal wird er halt einen Schritt nach vorne gehen.
Das heißt, er wird auch neunmal nach vorne gehen.
Und am Ende wird er noch ein zehntes Loch versuchen zu füllen.
Diese, ich sag mal, Asymmetrie ist einfach gegeben,
warum? Weil Kerl steht ja schon hier auf dem ersten
Feld und wie viele Schritte muss er nach vorne gehen?
Neun. Das hatten wir ja schon oben hier festgestellt.
Er muss in neun Schritte gehen. Ich muss also
neun Schritte gehen, obwohl ich zehn Löcher füllen muss.
Deswegen geht das nur so asymmetrisch oder mir fällt gar kein besserer Begriff ein.
Und dieses Muster werdet ihr bestimmt an fünf, sechs,
sieben verschiedenen Stellen finden und das wird immer wieder auftreten.
Immer dann, in einer Spalte was tun soll,
aber er soll es in allen Zehen spalten machen und muss
sich jedes Mal einen Schritt bewegen.
Dann muss er ja nur neun Schritte machen. Ja.
Vielleicht kennt ihr dieses Beispiel, ihr wollt irgendwie einen Zaun pflanzen,
habt irgendwie zehn Zaunfehler und die sollen in einem Abstand von einem Meter gepflanzt werden.
Wie lange ist dann der Zaun? Und wenn ich zehn
Fehler habe und sie in einem Abstand von einem Meter,
wie lange ist der Zaun?
Hat jemand eine Idee? Neun Meter. Und das ist hier
so ähnlich. Also diese Kreuze hier sind quasi die Zaunfehler.
Es sind tatsächlich zehn Zaunfehler, aber der Abstand vom ersten,
zum letzten sind nur neun.
Ja, damit muss man leider einfach leben. Gut,
jetzt was passiert, wenn ich das starte? Sagt Carrie,
tut mir leid, ich kann mit diesem Drive Phil Holings anfangen.
Ich weiß nicht, was das bedeutet. Du hast mir
noch nicht gesagt, was das ist. Wir haben eben so getan,
als würdest du das auf magische Art und Weise geben.
Das hat ja den Vorteil, dass wir schon mal
so auf dem obersten Level unser Programm designen konnten.
Aber jetzt müssen wir irgendwie beibringen, was heißt denn Trifal Hole?
Und jetzt muss ich euch was beibringen. Ja, wir
dürfen mit Ifa bei. Ja. Das siehst du auch daran,
wir müssen sogar mit If arbeiten, weil die Musterlösung das auch tut.
Das siehst du hier. Kann man das auf dem Beamer
erkennen? Da steht If. If heißt einfach Carol,
schaut sich irgendwie seine Umgebung an, reagiert darauf entsprechend.
Und in diesem Fall ist die Abfrage,
ich möchte wissen, ob rechts von mir frei ist.
Ich glaube, das ist die F11-Taste. Ja, richtig getippt.
Gut. Was bedeutet das jetzt, was ich geschrieben habe?
Das bedeutet, was auch immer ich hier reinschreibe,
irgendwas, wird nur dann ausgeführt, wenn in dem Moment,
wo Carol dieses If ausführt, rechts von ihm frei ist.
Er prüft also, ist rechts von mir frei.
Wenn ja, springe ich in diesen Blog rein,
führe das aus, was da drin steht.
Ansonsten mache ich das eben nicht
Was will ich denn tun, wenn rechts von mir frei ist?
Wir können ja mal das Goal ablaufen lassen, bis zu der Stelle.
Hier, ne? Was soll Carol jetzt tun?
Denn jetzt ist ja offenbar rechts von ihm frei.
Was soll er dann machen? Ja. Ja, right.
Und ich glaube, ja. Ja. Ja. Sehr
schön. Das probieren wir doch einmal aus. Jetzt machen wir
unsere eigene Lösung. Ich mache es einmal ein bisschen schneller.
Ja, da hat er so ein Loch gemacht.
Da hat er das nächste Loch. Das wäre schön. So,
und jetzt machen wir hier vielleicht mal ein bisschen langsamer.
Nee, Step. So. Und jetzt, was glaubt ihr,
in welcher Zeile landet Carol, wenn ich jetzt F12 trage?
Wenn ich ja sage, geh mal zum nächsten Schritt.
Ja, du hast eine Idee
Da bist du Carol schon einen Schritt voraus.
Hat jemand eine andere Idee? 94? 94 schauen wir
. Ja, sehr gut. Also er ist sozusagen über
diesen Block rübergesprungen und muss jetzt nur noch hier zurückgehen.
Also das ist immer ein expliziter Schritt, dieses Zurückgehen.
Das habe ich einfach aus pädagogischen Gründen so eingebaut,
weil das sonst verwirrend wäre einfach.
Okay, gut. Dann haben wir also jetzt das IF kennengelernt.
Das Repeat haben wir schon kennengelernt. Ich muss euch noch
eine Sache beibringen. Nee, La Wire kommt ja erst nächste Woche.
Hier. Nee, es gibt keine Acceptions in Carol.
Denn was ich euch bis jetzt beigebracht habe,
ist eine Bedingung zu überprüfen, die in Carol eingebaut ist.
Er kann also fragen, ich kann euch auch nochmal
ganz kurz die F-Tasten dafür verraten
F7, F8, F9, F10, F11. Das sind
die Dinge, die er abfragen kann. Stehe ich momentan
auf einem Bieper, ist direkt vor mir ein Bieper,
ist linksfrei, ist vorne frei, ist rechtsfrei.
Ja, diese fünf Dinge kann er eben abfragen.
Ja, ich mache hier. Du meinst dieses Clear,
dieses Clear bezieht sich nur auf Wände?
Ich mache mal hier einen Kommentar. Also wenn ihr schreibt,
slash Sternchen, dann ist alles danach ein Kommentar,
bis hier ein Sternchen slash schreibt.
Gut. Lass uns noch mal ganz kurz überlegen,
wenn ich das hier noch mal ein bisschen langsamer ablaufen lasse,
also im ersten Augenblick scheint das Programm ja ganz einfach zu sein,
Kerl legt einen Diamanten ab und geht einen Schritt nach vorne.
Und das macht er eben ziemlich oft, vielleicht irgendwie hundertmal oder so.
Er muss ja 100 Fliesen ablegen. Wo wird es zum
ersten Mal kompliziert? Wo reicht es nicht zu sagen,
ja, du weißt ganz vielleicht noch mal irgendjemand anders.
Wir hatten heute noch nicht so viel gesagt.
Du vielleicht? Richtig. Und wo sind diese Grenzen?
Also hier war zum Beispiel gerade eine Grenze,
weil er so festgestellt hat,
oh,
vor mir ist eine Wand
Also lasst uns doch vielleicht erstmal Carriel so programmieren,
dass er an Wänden dreht. Das wäre doch vielleicht nicht schlecht.
Also machen wir erstmal einen Repeat. Ich mache einen Repeat 100,
ich bin gerade nicht sicher, ob es 100 oder 99 sind.
Das kann man ja immer noch korrigieren.
Was will ich tun? Ich will ja 100 Diamanten ablegen,
also lege ich jetzt erstmal einen Diamanten ab.
Okay, damit bin ich jetzt schon mal sicher.
Auf der sicheren Seite, das kehre genau 100 Diamanten ablegen wird.
Und ich gehe einen Schritt nach vorne.
Nee? Wenn ein Diamant auf dem Feld nicht wohnt,
wo du da stehst. Ja. Das stimmt,
aber dadurch, dass ich ja immer schon nach vorne gehe,
dürfte dieser Fall eigentlich nicht eintreten.
Ich starte das einmal ganz kurz. Richtig, ich laufe gegen
eine Wand. Also das ist jetzt nur die Stufe 0,
die knallt so weit gegen eine Wand laufe.
Das heißt, ich muss irgendwie prüfen, ob fummellevant ist.
Wie kann ich das prüfen? Tja, wie kann ich
denn das prüfen? Also ich kann ja prüfen,
ob vor mir frei ist. So, wenn vor mir
frei ist, Muss ich ja gar nicht drehen.
Ja, ich muss ja nur im anderen Fall drehen.
Dafür gibt es dieses Els, danach wurde ja auch schon gefragt.
Ja, so kann man das also programmieren.
Ich kann nur so sagen, ja,
wenn vor mir frei ist, ist alles in Ordnung.
Ich schreibe einfach nichts in diesen Blog rein.
Ansonsten drehe ich mich nach links. Und jetzt sagen wahrscheinlich
erfahrene Programmierer, ach, das ist aber umständlich.
Geht das nicht irgendwie einfacher, ja? Ich will auch,
Elfbron ist hier gleich force. Oder ein Ausrufezeichen davor,
richtig? Genau, man kann also sagen, jedes Mal,
wenn dieser Blog leer ist und ich brauche eigentlich nur den Elsblock,
dann kann man die Bedingungen einfach negieren.
Ich kann also sagen, wenn es nicht der Fall ist,
das, was ich in dem Elf prüfe,
das sieht dann also so aus.
Seht ihr dieses kleine, unschuldige Ausrufezeichen? Dieses Ausrufezeichen negiert
die Aussage logisch. Das bedeutet jetzt also, wenn vor mir
nicht frei ist, will ich mich nach links trinken.
Okay. Das probieren wir noch einmal ganz kurz aus.
Ihr seht also, dass hier normalerweise immer bei dem IF
wird dieser Blog übersprungen, denn vor ihm ist ja frei.
Es ist nicht der Fall, dass er nicht vor ihm
frei ist, also wird der Blog übersprungen.
Seht ihr das? Er landet sofort bei diesem Move-Forward
So. Und jetzt, was passiert jetzt? Ist vor mir
nicht Freitschrift zu, also geht er in dieses Öff rein.
Also gehen wir jetzt hier rein, drehen uns nach links.
Toll. Und das wird jetzt also hier funktionieren für alle Ecken.
Und dann, ja, was wird dann passieren?
Bumm. Hast du gesagt, du hast schon gerne in die Zukunft geguckt.
Aber man kann ja nicht von vornherein die perfekte Lösung bauen.
Also das Problem ist, wir hätten uns eigentlich
schon hier drehen müssen. Vielleicht mal fragen ans Publikum,
warum hätten wir uns denn hier drehen müssen?
Was ist denn an dieser Position so besonders? Das ist ja
gar keine Ecke. Also vor mir ist ja keine Wand.
Ja. Richtig. Muss auch irgendwie hier rein. Also
ich muss irgendwie sagen, ich muss jetzt irgendwie zwei Bedingungen prüfen.
Wenn vor mir eine Wand ist, muss ich mich nach links sehen,
aber ich muss mich eben auch nach links drehen,
wenn vor mir ein Beeper ist.
Und das schreibt man so. Ich weiß jetzt nicht,
die F-Tasse, deswegen mache ich es noch von Hand.
Diese zwei merkwürdigen Striche bedeuten, oder,
also das eine oder das andere
kann der Fall sein
Wenn also mindestens eine dieser beiden Bedingungen zutrifft,
dann möchte ich das Turnleft ausführen.
Ja, das probieren wir noch mal kurz aus.
Nicht geholt, das funktioniert ja sowieso, unsere eigene Lösung.
Einmal schauen, dass er auch wirklich sich jetzt da schon vorher umdreht.
Also zu sagen, hier müsste er sicher umdrehen.
Wunderbar. Toll, oder? Okay, jetzt habe ich
noch 15 Folien, die werde ich euch jetzt nicht mehr antun.
Ich lade die ins Kommen sie hoch,
da wird immer zusammengefasst,
was wir heute gelernt haben und ich bedanke mich bei euch
vorher auch
ein bisschen bleibt