SE-Tutorium 4 | Mittwoch 16 - 18 Uhr:

anchored to [[191.00_anchor]]


Lernziele:

  1. Rebase / Merge nochmal betrachten
  2. IDE mit Scala verwenden –> Hello World !
  3. Scala kennenlernen oder eine neue Programmiersprache lernen
  4. 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

  1. Was macht Rebase/Merge ??
  2. IDE fit für Scala!
  3. Scala kennenlernen
  4. Ressourcen für Scala
  5. 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 setzen
    • git 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 traits?

  • What is the difference between Java enums and Scala enums?

  • What features of BSL/ISL are similar to Scala enums?

  • 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]]