9.1 Ontdekken met AI als tutor

AI

In deze les ga je een AI-chatbot gebruiken als jouw persoonlijke tutor voor design patterns. Je mag gebruik maken van een AI-systeem naar keuze.

  • Als KU Leuven student kan je gratis Microsoft Copilot for Education gebruiken (GPT-4 achter de schermen). Log in met je KU Leuven studenten-account. KU Leuven heeft een overeenkomst waardoor je gegevens niet gebruikt worden voor verdere training.
  • Je kan ook Google Gemini gebruiken via AI Studio. Je kan inloggen met je UHasselt studentenaccount. De limieten van model “Gemini 2.0 Flash-Lite” in de gratis versie volstaan ruimschoots voor deze oefeningen.
  • Ook ChatGPT heeft een gratis versie beschikbaar.
Opgelet

Zoals je hopelijk al wel weet, kunnen AI-chatbots foute informatie teruggeven. Hen gebruiken als personal tutor is daarom niet zonder risico. Omdat we hier gaan leren over zeer populaire en gekende design patterns, is de kans groot dat de tutor correcte informatie teruggeeft. Daarenboven zullen we de antwoorden in klasverband bespreken. Wees in het algemeen steeds kritisch over de antwoorden, en vergelijk met andere bronnen als je twijfelt.

Het kan nuttig zijn om je conversatie te beginnen met een prompt waarin je duidt dat je wil bijleren, en niet op zoek bent naar onmiddellijke antwoorden. Bijvoorbeeld: ‘Ik ben een student in een cursus rond software-engineering. We leren vandaag over design patterns. Ik geef meteen verdere instructies, dus stel me nog geen vragen of geef nog geen informatie. Geef me later ook niet meteen een antwoord op mijn vragen; ik wil dit zelf ontdekken.’

Koppeling en cohesie

  1. Vraag aan je AI-assistent om een voorbeeld te geven van Java code met slechte koppeling, zonder uit te leggen wat koppeling is of wat er slecht is aan de code.
  2. Kopieer de voorbeeldcode die je krijgt naar de gedeelde Google Docs (link: zie Toledo)
  3. Kan je uit de verzamelde voorbeelden afleiden wat (slechte) koppeling precies betekent? (bediscussieer klassikaal)
  4. Herhaal nu stappen 1–3 voor (slechte) cohesie.
  5. Vraag nu aan je AI-assistent om je, aan de hand van de eerdere voorbeelden, uit te leggen wat koppeling en cohesie is. Stel vragen zolang het je niet helemaal duidelijk is wat koppeling en cohesie zijn, en wat het verschil tussen beiden is.
  6. Formuleer zelf een definitie van koppeling en cohesie, en voeg die toe aan het document. Vergelijk de definities met de anderen.
  7. Vraag aan de AI om je een testvraag te genereren om je begrip van koppeling en cohesie te peilen. Plak ook die vraag (zonder het antwoord) in het gedeelde document.

Design patterns

Verdeel volgende patronen onderling (1 patroon per student/groep):

  • Observer
  • Singleton
  • Visitor
  • Builder
  • Facade
  1. Vraag aan je AI-assistent om een voorbeeld te geven van Java-code waarin het beter zou zijn om dit patroon te gebruiken, zonder het patroon al toe te voegen, uit te leggen wat het patroon inhoudt, of waarom het nuttig zou zijn.
  2. Probeer zelf te achterhalen wat het probleem is (vraag eventueel naar een extra voorbeeld).
  3. Kopieer het (volgens jou beste) voorbeeld naar het gedeelde document.
  4. Vraag aan je AI-assistent om je uit te leggen wat het patroon inhoudt, en om het toe te passen op het voorbeeld.
  5. Kopieer het voorbeeld met het patroon naar het gedeelde document.
  6. Probeer zelf de essentie van het patroon te beschrijven in het gedeelde document. Je mag gerust ook op zoek gaan naar een afbeelding, link, … en die toevoegen.
  7. Welke programmeertaal-features zouden dit patroon overbodig kunnen maken?
  8. Leg het patroon uit aan je mede-studenten in de klas.

Gegeven bovenstaande informatie, wat is een ontwerppatroon (design pattern) in het algemeen volgens jou? Schrijf neer in het gedeelde document. Vergelijk met een definitie online of van je AI-assistent.