SE-Tutorium 4 | Mittwoch 16 - 18 Uhr:
anchored to [[191.00_anchor]]
Lernziele:
- Rebase / Merge nochmal betrachten
- IDE mit Scala verwenden –> Hello World !
- Scala kennenlernen oder eine neue Programmiersprache lernen
- Scala anwenden können!
Orga | Raumwechsel:
- (sofern nicht schon in neuem Raum heute): Wir sind in einem neuen Raum
- neuer Raum für das Tutorium: D4A19
- D -> D-Bau (Physik)
- 4 -> 4te Etage
- A19 -> Raum A19 auf Etage
- Updates dazu im Forum
- vielleicht Raumwechsel zurück zu A3M04
- relativ kurzfristig, sorry!
Orga | Hausaufgaben:
- Jiri merkte an: Viele erstellen Gruppen relativ spät
- Wichtig, dass die Gruppen für die nächste Abgabe schnell erstellt werden!
- Arbeit im Team brauch Zeit und ist Asynchron
- Teams finden brauch auch Zeit!
- Am besten dann gleich noch eine Gruppe für Hausaufgabe 4 ( und 3!) erstellen :)
Orga | Fragen zu den Hausaufgaben
- Gibt es Fragen zu den Hausaufgaben?
- “Müssen wir als 3er-Team alle Features implementieren?” (nein)
- “Ich kann meine Teampartner*in nicht erreichen, was tun?” ( Github/Forum/mich konsultieren)
- “Mir ist Inhalt X noch nicht ganz klar”
- ???
note: give them around 3 minutes to think about some
- make it in small groups to have them discuss it there!
Orga | Süßigkeiten:
- Im Forum gefragt, nach präferierten Süßigkeiten
- Wahrscheinlich direkte Umfrage sinnvoller!
![[Pasted image 20231115004725.png]]
note: give them some time to enter ~ 2 - 3 minutes
Inhalte dieses Tutorium
- Was macht Rebase/Merge ??
- IDE fit für Scala!
- Scala kennenlernen
- Ressourcen für Scala
- erste Scala-Programme schreiben!
Rebase / Merge ?
- viele Fragen / Probleme bei der letzten Hausaufgabe bzgl Rebases / Merges
- Merge -> zusammenführen von Branches durch Merge-Conmmit
- Rebase -> Änderungen eines Branches auf einen anderen “draufcommitten”
Merge
aaa <- bbb <- ccc <- ddd <- [main]
\
\- fff <- ggg <- [feature]
~> merge feature into main ~>
aaa <- bbb <- ccc <- ddd <- mmm <- [main]
\ /
\- fff <- ggg <- [feature]
- mergen passiert, indem wir etwas “in unseren Standpunkt” hineinziehen
- also ich möchte Feature/X in main mergen:
git checkout main
–> Standpunkt setzengit merge Feature/X
–> Änderung in Standpunkt “ziehen”
- ~ etwa wie umarmen: Ich (main) ziehe eine andere Person (branch) in meine Arme / an meinen Körper
Rebase:
aaa <- bbb <- ccc <- ddd <- eee <- [main]
\
\- fff <- ggg <- [feature]
~> rebase ~>
aaa <- bbb <- ccc <- ddd <- eee <- [main]
\
\- yyy <- zzz <- [feature]
- rebasen ( umgekehrt zu mergen), wir setzen unseren Standpunkt “woanders auf”.
- also ich möçhte Feature/Y auf main rebasen:
git checkout Feature/Y
–> Standpunkt auf Feature/Y setzen (entspricht der Quelle des Rebase)git rebase main
–> Ziel des Rebase setzen- Standpunkt wird dann auf Ziel aufgesetzt bzw. die Commits neu aufgespielt.
Vorteil bei Rebase:
- https://ps-forum.cs.uni-tuebingen.de/t/hw2-aufgabe-3-fehler-bei-rebase-gemacht/4307/6 Eintrag von Jiri
aaa <- bbb <- ccc <- ddd <- eee <- [main]
\
\- yyy <- zzz <- [feature]
~> merge feature into main by *fast-forwarding* ~>
aaa <- bbb <- ccc <- ddd <- eee <- yyy <- zzz <- [main]
^
[feature]
- nach Rebase ist main “quasi hinter dem Feature”, dass wir rebased haben
- da Commits auf Main aufbauen, können wir sie ohne Konflikte in main übernehmen
- Fast-Forward genannt –> brauch keinen Merge, da wir nichts mergen müssen!
Fragen?
SCALA | (Besseres Java?)
- Programmiersprache der Wahl in der Vorlesung
- gut lesbar / gut zu schreiben
- kann Java-Libs anwenden
- kann Java-Code ausführen
- compiled language
- Multi-Paradigmen Sprache
- funktionale Programmierung ! (Info 1 ^^)
- OOP (Info2)
- Imperative
- …
- –> wissen der vorherigen Vorlesungen anwendbar ^
Scala | kennen lernen
- Repository für dieses Tutorium via Github geteilt!
- (wenn keine Nachricht bekommen) dann se-tuebingen-exercises-ws23 aufrufen und ex4-tut4 suchen! ![[Pasted image 20231115011455.png]]
![[Pasted image 20231115011527.png]]
Scala | kennen lernen
- Github-Repo runterladen!
- Projekt ausführen, dass enthalten ist.
AUFGABE:
- Programm ausführen
- REPL - Read-Evaluate-Print-Loop - ausführen und probieren!
- Quasi alles bis A Taste of Scala
- Danach werden wir uns weitere Inhalte von Scala anschauen
note: give them around 4 -5 minutes to complete this ?
Scala | Features kennen lernen
- Scala hat viele Features aus diversen Sprachen und Paradigmen
- viele schon bekannt aus Java / Rracket
- Syntax aber neu / anders!
- Daher zur Nutzung einer neuen Sprache Dokumentation lesen und Beispiele angucken!
note: Ask whether to: Gemeinsam “A taste of scala” durchgehen?
Scala | Features kennen lernen:
AUFGABE
Documentation “A taste of scala” mit Partner*in durchgehen
folgende Fragen beantworten ( und aufschreiben), damit wir sie besprechen können!
What is the difference between statements and expressions
What is the difference between values and types
What is the difference between mutable and immutable variables
- Syntax dieser?
What features of Java are similar to
trait
s?What is the difference between Java
enum
s and Scalaenum
s?What features of BSL/ISL are similar to Scala
enum
s?What is the difference between a method and a function?
What are first class functions? How do you use them? - Compare with the languages you already know (Java, BSL/ISL)
first class functions –> solche, die auch Funktionen als Argumente annehmen quasi –> “functions as first class citizen”
Scala üben!
- Repository hat einige Aufgaben beschrieben, die mit Scala umgesetzt werden können
- probiert diese mit Partner*in aus
- bei Fragen gerne melden!
note: give them time until 17:40
Feedback:
- Hausaufgaben 3 / 4 nicht vergessen
- Teams für die Abgaben gründen!
- Feedback form jetzt vorhanden! Gerne ausfüllen :)
![[Pasted image 20231115012601.png]]