Fra vibe coding til AI-assisteret udvikling

Vibe coding er, når en sprogmodel skriver en del af en computerkode. Typisk foregår det i en form for dialog, hvor sprogmodellen skriver udkast, foreslår ændringer eller retter fejl. Men jeg bruger sprogmodellen til mere end det, og derfor kalder jeg det p.t. AI-assisteret udvikling, indtil der er kommet mere konsensus om et begreb.

David Revoy, CC BY 4.0 https://creativecommons.org/licenses/by/4.0, via Wikimedia Commons

For jeg bruger i stigende grad Github Copilot i VS Code, som assistent. Github Copilot er ikke det samme som Microsoft’s Copilot, men en tjeneste, som kan hjælpe med at planlægge, skrive, forbedre og teste kode. Det betyder, at jeg skriver mindre og mindre kode selv og i højere grad designer systemet på et mere overordnet niveau.

Github Copilot er gratis for studerende og undervisere, og man kan vælge mellem forskellige sprogmodeller (GPT, Claude, Gemini, Grok m.m.). Der er desuden p.t. fire roller (modes), som man kan give assistenten i Copilot, nemlig Ask (Q&A), Planner, Agent og Custom. Jeg har mest erfaring med Agent-mode, som er en assistent, der både kan besvare spørgsmål, hjælpe med planlægning, ændre i min kode-base og åbne en browser. Hvis man dertil aktiverer “Bypass approvals”, kan assistenten også bruge andre værktøjer bl.a. selv køre kommandoer i terminalen. Dét er selvfølgelig på bekostning af visse sikkerhedsrisici.

Min fremgangsmåden er p.t.:

  1. Afklare krav til systemet og formulere kravspecifikation (både funktionelle og ikke-funktionelle krav).
  2. Afklare tekniske specifikationer. Hvilke teknologier og arkitekturer skal anvendes?
  3. Tilføje overordnede ønsker til brugergrænseflade (UI).
  4. Afklare projektplan -Hvad skal implementeres først? Hvornår er projektet færdigt?
  5. Sæt agenten i gang med at udvikle og teste systemet ifølge kravspecifikation og projektplan.
  6. Når første prototype er færdig, skal assistenten tjekke om alle krav er opfyldt (fx om koden er ren og lever op til principper for god kode) og om alle tests er godkendte. Dér bruger jeg en fast prompt i filen “tjek_projekt.md”.
  7. Først her tester jeg selv systemet, og overvejer om interface og funktionaliteter er som jeg forventer. Hvis ikke skriver jeg med assistenten om evt. ændringer.
  8. Jeg synkroniserer til Github og får systemet ud på en statisk webside (fx github-pages) eller deployer via host (Heroku).

Måske skal jeg have flere trin fx til at designe brugergrænseflade og funktionaliteter fx use-case diagram, user stories, bruger-rejse, skitser.

For at afklare krav til systemet burger jeg en fast prompt i filen “grillme_krav.md”, med følgende indhold:

  • Opret filen documentation/kravspecifikation.md, hvis den ikke findes.
  • Der skal udvikles et nyt projekt. Udspørg mig grundigt om formål, brugere, krav, platform, performance, sikkerhed, integration og andre relevante aspekter.
  • Stil mig et spørgsmål ad gangen og stil uddybende spørgsmål, hvis svarene ikke er klare.
  • Opdater kravspecifikation.md løbende undervejs ud fra svarene på spørgsmålene.
  • Noter alle relevante oplysninger i kravspecifikation.md.
  • Når vi er færdige, skal du tjekke, at alle aspekter er dækket, og at projektet er klart beskrevet.

Derefter har jeg en lignende prompt i filerne “grillme_tek.md”, grillme_ui.md” og “grillme_projektplan.md”, til at formulere teknikspecifikation, udseende og projektplan. Hvis der skal bruges kald til en sprogmodel i projektet, er det beskrevet i “LLM.md”.

Agenten kan selv oprette mapper og filer, skrive koden, initialisere afhængigheder og hente biblioteker. Den kan selv skrive tests, køre dem og fortolke resultaterne -også tests hvor assistenten åbner en browser og tester funktionalitet af knapper, tekstfelter og lignende interaktive elementer. Den kan formentligt også pushe til Github, deploye og kalde sub-agenter, men det ved jeg endnu ikke, hvordan man gør.

Alt i alt er langt det meste af min kodning ændret til systemdesign. Hvordan bliver man god til systemdesign? Gennem erfaringer med selv at implementere systemer, erfaringer med at designe systemer, kan man læse sig til det eller kan man ligefrem overtage andres (fx AI’s) tilgang?

Det er ikke uden en vis faglig sorg, at kodning lige så stille forsvinder ud af mit liv. Følelsen af at være en troldmand, der egenhændigt kan skabe (næsten) hvad som helst digitalt, forsvinder. Nu kan jeg til gengæld få en ide og se den materialiseret inden for et par timer. Jeg er stadig en troldmand, men måske den lidt ældre af slagsen, som nøjes med at lægge planer og lade andre (AI) udføre dem. Vil der stadig komme nye troldmænd i Verden, når de ældre troldmænd forsvinder?

Udgivet i Computational thinking, Informatik, Planlægning, Programmering, Uncategorized | Kommentarer lukket til Fra vibe coding til AI-assisteret udvikling

Samarbejde i grupper

Jeg har ofte været lidt uforstående overfor elevers gruppearbejde, og mere faciliteret det af pligt (“det gør man da”) eller af nød (“nu orker jeg ikke at forelæse mere”). Men det er efterhånden ved at gå op for mig, at gruppearbejde træner bl.a. elevernes samarbejdsevner og det er vigtigt.

Der er flere grunde til at træne eleverne i samarbejde. Meget professionelt arbejde foregår i grupper eller teams, både blandt studerende på uni og blandt undervisere, forskere, softwareudviklere og sikkert mange andre steder. Outsourcing af vidensarbejde til chatbots og agenter kan desuden medføre, at samarbejdskompetencer bliver endnu mere efterspurgte i en nær fremtid.

Mine erfaringer fra mine børns folkeskole er, at træning i samarbejde ofte foregår ved, at eleverne selv danner grupper og fordeler opgaverne, så få motiverede/stærke elever påtager sig det faglige arbejde, mens mange elever mere eller mindre velvilligt ikke deltager i arbejdet. Dvs. ingen reel stilladsering af eller træning i samarbejde.

Det mønster ser jeg gå igen blandt eleverne i gymnasiet. Når jeg generaliserer, ser jeg mange elever, som er usikre og tilbageholdende, og de ved ikke, hvordan de skal komme på banen i en gruppe. Mange elever er ufokuserede, og deres hovedmål er at blive hurtigt færdige/undgå arbejde. Nogle elever er mere præstations-orienterede og vil typisk overtage det meste af arbejdet i en gruppe.

Få elever er interesserede i at få gruppen til at fungere. Der opstår en kultur blandt mange elever, hvor de opfatter gruppearbejde som “læreren er væk, vi kan gøre hvad vi vil” dvs. hyggetid, hvor de kan snakke privat, gå i kantinen og surfe rundt på nettet.

Så jeg har brugt lidt tid på at undersøge, hvad træning i godt samarbejde kan indebære*, og jeg sidder med en lille ad hoc arbejdsgruppe om emnet. Her er nogle pointer:

  • Elever må selvfølgelig ikke vælge deres egen gruppe, det giver både alt for homogene grupper og enkelt-elever, som står uden gruppe.
  • Gruppen bør være heterogen uden at være alt for blandet. At sætte en fagligt stærk elev til at trække en gruppe af fagligt svage elever går ikke -det træner ikke samarbejde.
  • Der skal være tryghed til at udtrykke sig, og der bliver talt i en ordentlig tone til hinanden.
  • Alle bliver hørt og bidrager til gruppens arbejde. De sikre/ekstroverte deltagere har et ansvar for at holde sig lidt tilbage, og de usikre/introverte har et ansvar for at komme mere frem. De bedste resultater opnås ved, at alle bidrager til gruppens arbejde.
  • Der er ikke nogen i gruppen, som må overtage produktet og på den måde løse opgaven selv.
  • Der er fokus på opgaven og ikke alt muligt andet.
  • Opgaverne bør være åbne og give mulighed for diskussion. Lukkede opgaver kan nemmere løses individuelt.
  • Gruppen arbejder hen imod et sted, hvor ideer kan udfordres, og der er en kritisk og undersøgende samtale om argumenter og vurderinger.

Jeg har tidligere eksperimenteret med en “social ansvarlig” i gruppearbejde blandt 3.g’ere, men det blev tydeligt, at det havde de svært ved, og rollen blev hurtigt ignoreret. Derfor tog jeg fat i 1.g’erne og har forsøgt at stilladsere arbejdet med roller mere. Jeg er kommet frem til følgende fire roller:

Referent: Skriver for gruppen (computeren eller papir). Det er ikke din pligt at løse opgaven alene, blot at deltage og skrive referat. Tal sammen i gruppen om opgaverne -lad være med at fordele dem mellem jer. Del dokumentet med hinanden, når arbejdet er slut.

Fokus-holder: Sørger for, at gruppen bliver på opgaven og ikke mister fokus. Tal sammen i gruppen om opgaverne -lad være med at fordele dem mellem jer.

Ordstyrer: Sørger for, at alle kommer til orde i gruppen, så alle taler cirka lige meget. Tal sammen i gruppen om opgaverne -lad være med at fordele dem mellem jer.

Spørge-Jørgen: Det er din rolle at stille spørgsmål til de andre mindst tre gange. Eksempler: ”Hvorfor det?”, ”Hvad betyder det?”, ”Hvordan vil du forklare det?”, ”Hvordan kan man se det fra en anden vinkel?”. Tal sammen i gruppen om opgaverne -lad være med at fordele dem mellem jer.

Jeg er ikke helt tilfreds med ordlyden. Fx. skal “Spørge-Jørgen” på sigt ikke bare være en der spørger, men være ansvarlig for at sætte gang i den faglige og kritiske diskussion. Rollen skal nok også have et nyt navn.

Målet er i første omgang, at eleverne bliver opmærksomme på, at rollerne findes i samarbejde. Opmærksomheden får de ved at påtage sig rollerne og gennem evaluering og meta-refleksioner. Derfor skal rollerne også skifte ofte. Derefter er målet, at eleverne bliver bedre eller ligefrem gode til at udfylde hver rolle. Endemålet er, at de alle påtager sig alle rollerne i gruppearbejde.

Nogle spørgsmål, som kan vække elevernes tanker kan være:

  • Hvad er et godt gruppearbejde?
  • Hvad er dårligt gruppearbejde?
  • Hvilken rolle er den sværeste? Hvorfor?
  • Hvilken rolle er den vigtigste? Hvorfor?
  • Hvad lykkedes du med i rollen?
  • Hvornår fungerede rollen ikke så godt?
  • Hvad kunne du overveje at gøre anderledes i næste gruppearbejde?

Er rollerne udtømmende for et godt samarbejde? Nej, men de sætter nogle hjørnesten, som der kan arbejdes videre ud fra. Derefter kan vi fx arbejde med samtale-runder (evt. på tid), differentierede grupper efter niveau, individuel forberedelse i klassen/hjemme og andre tiltag, som kan støtte den svære “ordstyrer”-rolle.

* Agergaard m.fl. “Gruppearbejde”; Duch, Henriette (red.) “Gruppearbejde på ungdoms- og videregående uddannelser”, Frydenlund 2023; “Tea for Teachers”, Podcast episode “Make Team Project Work”. https://teambuildingprocess.com/making-team-projects-work/

Udgivet i AI, Biologi, Informatik, Kemi, Planlægning, Samarbejde | Kommentarer lukket til Samarbejde i grupper

Syntetiske data med AI

I den daglige undervisning og i større opgaver som SRP, SRO, SOP og SSO, er det af og til en fordel at kunne generere nye data, der ser realistiske ud og følger forventede mønstre.

Det er sprogmodeller i mange chatbots (GPT5.2, Gemini3), blevet meget bedre til. Eller også er jeg blevet bedre til at prompte? Som altid, vil en mere konkret og specifik prompt give et bedre og mere brugbart resultat.

Her nedenfor et forsøg på at generere syntetiske data for biogas-produktion i et produktions-anlæg. Der er 200 forsøg (10 første er vist) med forskellig biomasse, som giver forskelligt udbytte:

proteinkulhydratcellulosefedtstofC_NpHbiogas_pct_max
00.1310.2390.0480.03029.6387.04483.132
10.2140.1040.0280.08229.9057.17071.910
20.2020.1360.0280.06231.4597.26868.486
30.1270.2090.0320.06431.8247.06283.986
40.0930.2540.0440.05232.4737.08182.486
50.1180.1480.0560.13330.0707.25160.701
60.1060.2060.0460.08829.7417.27363.081
70.1870.1950.0620.01829.6276.99884.139
80.1870.1110.0450.10229.8097.00876.834
90.2180.1510.0770.03130.4746.99778.778

Proceduren kan være som følger:

  1. Angiv formålet med datasættet, samt hvilke data, der skal være i sættet.
  2. Angiv sammenhænge mellem data. Hvis sammenhængene fremgår af en kilde, som sprogmodellen selv kan tilgå, kan modellen forsøge at udlede sammenhængene.
  3. Få sprogmodellen til at afbilde datasættet, så du kan få et overblik over om de forventede sammenhænge er tilstede, og om de er for kraftige eller svage (se billede herunder).
  4. Få sprogmodellen til at lægge datasættet i en fil fx csv-fil, og angiv krav til kolonne- og decimal-adskillelse.
  5. Hvis data skal bruges til en specifik matematisk undersøgelse (fx regression eller maskinlæring), så lad sprogmodellen teste denne. Opstil evt. krav til korrelation, nøjagtighed o.l.

Nedenfor afbildning af de 200 syntetiske data fra ovenfor. Kig særligt på nederste linje af plots, hvor produktionen gerne skulle følge pH og C/N. Plottet mellem C/N og protein viser, at desto mere protein, jo lavere bliver C/N forholdet (mere N). Lavere C/N forhold giver lavere pH (pga ammonium-dannelse). Der er også plots, som giver mindre mening fx mellem kulhydrat og protein.

Det kan blive elevernes opgave at forklare nogle af sammenhængene.

Scatterplots m.m. af syntetiske data

Det kan tage flere minutter, at få et respons fra sprogmodellen. Det er altid lidt random, hvad der kommer som output. Nogle gange kan plots ikke vises. Andre gange vises alle 200 linjer af data osv. Det kan kræve en del iterationer, hvis man ønsker helt bestemte udtryk eller nøjagtighed. Man kan også tilføje krav til spredning og intervaller for data, men dem kender man ikke altid præcist, så her er det måske bedre at lade modellen give et bud.

Man bør deklarere, at der er tale om syntetiske data. Om ikke andet for at undgå at tiltroen til videnskaben og viden generelt ikke forsvinder helt.

Udgivet i AI, Biologi, Bioteknologi, Informatik, Kemi, Maskinlæring, Programmering | Kommentarer lukket til Syntetiske data med AI

Kilder til SRP

I forbindelse med SRP, har jeg ofte ledt efter noget mere systematisk information om kilder og deres videnskabelige troværdighed. Lidt a la en evidenspyramide, som man nogle gange opstiller for sundhedsfaglige artikler.

Da jeg ikke har fundet informationen, har jeg selv sat en liste sammen, opstillet efter videnskabelig troværdighed (de mest troværdige øverst).

Listen er selvfølgelig generaliseret fx kan der sagtens findes videnskabelige artikler, som indeholder tvivlsomme data eller fortolkninger, særligt i nye forskningsområder. Og eleverne skal vejledes til, at videnskabelige artikler som regel ligger langt over det niveau, som de forventes at forstå.

# Kilde Eksempler Styrker Svagheder Hvem tjekker om det er fagligt korrekt?
Kilder som er mere troværdige:
1Videnskabelige artiklerhttps://scholar.google.dk, https://pubmed.ncbi.nlm.nih.gov/Meget specialiseret viden og ofte forsøgs-resultater.På engelsk og ofte teknisk meget svære tekster. Kan være ensidigt.Andre forskere (fagfællebedømmelse), som kan afvise teksten.
2Lærebøger fra store forlagBiologi i Udvikling, Biologi til Tiden, Kend Kemien, Basiskemi, Grundbog i Bioteknologi, Bioteknologi AGod formidling på et passende niveau. Fejl er sjældne.Ikke den nyeste forskning.Redaktører, forskere og fagfolk (lærere)
3Tekster fra offentlige myndighederSundhed.dk, Fødevarestyrelsen, Lægemiddelstyrelsen, Miljøstyrelsen, sygehuseMyndigheder har pligt til at give korrekte oplysninger.Ikke skrevet til skoler. Kan være beskrivende, teknisk og svær.Fagfolk hos myndighederne
4Tekster fra universiteter o.l.Biotech Academy, LIFE, DTU, SDU, KU, AU, AAU, RUC, Aktuel NaturvidenskabGod formidling på et højt niveau.Mere specialiserede end lærebøger.Redaktører, studerende og evt. forskere
5Opslagsværker fra store forlagLex.dk (Den Store Danske)Som regel korrekt. Tekster om mange emner.Ikke skrevet til skoler.Redaktører og enkelte forskere/fagfolk
6Tidsskrifter fra danske faglige foreningerDansk Kemi, BioNyt, Ugeskrift for LægerIndblik i forskeres arbejde og resultater. På dansk.Formidlet til fagfolk og i mindre grad til studerende. Kan være ensidigt.Redaktører som ofte er fagfolk.
7Artikler fra store medierPolitiken, JP, Berlingske, Weekendavisen, Information, Videnskab.dk o.l.Skrevet til alm. mennesker.Ikke så detaljerede. Få fagudtryk. Ofte personlige holdninger.Journalister, redaktører
8Patientforeningerwww.diabetes.dk, www.scleroseforeningen.dk, www.sind.dk, www.cancer.dkOplysninger som regel korrekte. Har ofte til formål at oplyse.Formidlet til patienter. Ofte fokus på beskrivelser af symptomer og behandling.Uklart. Redaktører.
Kilder som er mindre troværdige:
1Wikipediaen.wikipedia.orgSom regel korrekt (særligt den engelske). God til at blive introduceret til et emne.Det er ikke helt sikkert, at teksten er korrekt.Andre der læser opslagene.
2VideoerYouTubeOfte formidlet så det er lettere at forstå. Kan være godt til at begynde på et nyt emne.Kan indeholde noget sludder. Ofte kun de brede linjer og mangler nuancer.Ingen. Noget er udgivet af universiteter, hvilket kan være tjekket af forskere.
3Populær-videnskabelige udgivelserIllustreret videnskabSpændende og underholdende formidletClickbait. Snævert eller fordrejet billede af virkeligheden.Ingen
4Websites fra private firmaer, blogs, behandlere og lignendewww.Netdoktor.dk, www.studieportalen.dk, www.danskmisbrugsbehandling.dk, www.bodylab.dk, www.ale.dk, www.minmave.dk, www.Thodel-kropsterapi.dk, www.isundhed.dkDer står noget om hvad som helst.Kan virkelig skrive noget sludder. Kan ligne offentlige myndigheder og virke meget troværdigt.Ingen. Selv om tekster er skrevet af nogen med en titel fx læge, er teksten ikke tjekket af andre.
5ChatbotsChatGPT, CopilotVil svare på de fleste spørgsmål og ofte korrekt. Kan skrive svar på mange niveauer.Lyver af og til. Kan ikke forklare hvor viden kommer fra. Kan virke meget troværdig.Ingen

Jeg har for øvrigt brugt vibe-coding til at formatere tabellen til et nogenlunde pænt og brugervenligt udseende. Vibe-coding er kodning med en sprogmodel-assistent, hvor udvikleren udtrykker sine krav/ønsker som almindelig tekst i en prompt, og sprogmodellen omsætter dem til kode. Det tog alligevel en halv time med tilretninger, men væsentligt hurtigere end at skulle sætte mig ind i koden selv.

Udgivet i Biologi, Bioteknologi, Informatik, Kemi, Skriftlighed | Kommentarer lukket til Kilder til SRP

Skoleår 2025/26 og sommerskole

Skoleåret 2024-25 havde fire foci: hukommelsesteknikker, Agile rammer, AI og museumsformidling. Sidste var ikke en stor succes, men sjovt at se lidt af Naturama bag kulisserne. Hukommelsesteknikker med flipkort kørte på, men mest med apps som cram.com. Dog har jeg udviklet min egen app til aktiv genkaldelse. De agile rammer havde det svært i en travl hverdag. Jeg blev lidt klogere på at formidle om AI, og vi har arbejdet på en nettoliste over relevante AI-begreber til eleverne.

Skoleåret 2025-26 kommer til at byde på:

  • Mere formidling om og med genAI. Både i bioteknologi, informatik, øvrige fag og med kolleger.
  • Hvad gør vi med afleveringer og genAI?
  • Podcast med informatik-kolleger om udfordringer i faget –Lidt om Læring.
  • Et lille projekt om samarbejde mellem elever.
  • Mere flipped learning for at imødegå AI?
  • Måske en workshop om vibe-coding?

Jeg var på sommerskole 2025 i Bork -Herligt. Jeg fik ikke så mange nye ideer med hjem. Dog:

  • Man kan opsætte sin egen server med YunoHost. Målet kan være at blive mere uafhængig af serverløsninger som onedrive og AWS. YunoHost kræver noget fiflen med netværk, port-forwarding, DNS-omregistrering m.v., som jeg ikke tør gøre p.t.
  • Jeg har installeret Linux Debian OS på en gammel laptop. Har valgt Debian, fordi YunoHost kan installeres ovenpå senere.
  • Byggepladen er et website for brugergenereret lego-content.
  • OpenFoodFacts en åben database med fødevare data og egen åben API løsning.
  • Der ligger et computerspils-museum i Berlin.
  • SkoleGPT er/bliver opdateret med en version der bygger på Gemini frem for Mistral. Det skulle forbedre performance betragteligt.
  • Materiom er en samling om materialer

Udgivet i Planlægning | Kommentarer lukket til Skoleår 2025/26 og sommerskole

Podcasting “Lidt om Læring”

Kan man optage og udgive sin egen podcast? Hvorfor i alverden skulle man gøre det? Sådan plejer vi ikke at gøre, der må være bedre ting at bruge sin tid på!

Ikke desto mindre er antallet af podcasts eksploderet. Mange består af “reaktionsindhold”, som er en nem og billig måde at producere til medier. Youtubere eller komikere reagerer på værker fx serier eller bøger, Monopolet reagerer på breve fra brugere, anmeldelser fx Dårligdommerne, podcasts om TV-programmer, hvor programmets deltagere optræder i podcasten.

En del af reaktionerne vil være analyse, diskussion og vurdering. Og måske er podcast heller ikke det bedste medie til at formidle helt nyt indhold, men bedre til at nuancere eller diskutere indhold, som de fleste kender.

Inspireret af “reaktionsindhold”, foreslog jeg to kolleger (John og Kristian), om vi skulle følge online-kurset “Generativ AI og læring” fra AAU, og mødes for at diskutere indholdet. Mødet skulle være en podcast med et afsnit om hvert af de seks moduler på kurset.

Cover-billede juni 2025 (kilde: chatGPT 4o)

Podcasten Lidt om læring blev født til det formål. Navnet er generisk, men valgt for at kunne komme forskelligt indhold i. Coverbilledet er p.t. tydeligt AI-genereret, som bl.a. teksten “LEARNING IN DANSCHOOL” afslører. Hosting er gratis på spreaker.com.

Tidligere ville man måske have mødtes i en studiekreds eller bogklub. Så hvorfor podcast? Jeg synes, at det giver en mere forpligtende samtale, som sætter sig tydeligere i min hukommelse. Deltagerne gør sig mere umage, og det hæver kvaliteten af samtalen. Jeg har aldrig dyrket kunsten at udfolde argumentation eller deltage i en diskussion, og jeg er således ikke specielt god til at udtrykke mig sprogligt. Men det kan jeg øve mig på i podcasten, og særligt, når jeg omgiver mig med dygtige kolleger.

Det kræver tid at tilrettelægge velstruktureret indhold i en podcast. Derfor var kurset på AAU en gave, som strukturerede indholdet for os, så samtalen ikke stak alt for meget af. Så selv om jeg ser lidt ned på “reaktionsindhold”, så synes jeg, at det virkede for os.

Indholdet i “Lidt om læring” bliver redigeret en lille smule i Audacity. Langt den meste redigering er længere pauser og “øhhh..”, der bliver klippet ud. Det har overrasket mig, hvor meget mere intelligent man lyder, når “øh” er fjernet. Så mit syn på de tilsyneladende naturlige samtaler i andre podcasts, har ændret sig.

Ideen til at producere en podcast er hermed givet videre.

Udgivet i AI, Maskinlæring | Kommentarer lukket til Podcasting “Lidt om Læring”

Empiri i SPR

Det er afgørende, at elever anvender empiri i deres naturvidenskabelige SRP. Det er der mindst tre gode grunde til. Først og fremmest er empiri fundamentet i naturvidenskab. For det andet giver empiri eleven mulighed for at vise noget mere selvstændigt og taksonomisk højere end redegørelse. For det tredje kan eleven bruge empiri til at forklare om en naturvidenskabelig metode -så redegørelserne har et formål. Forklaringen af metoden og analyse af resultater kan være udgangspunkt til en mere bred diskussion af muligheder og begrænsninger i naturvidenskabelige fag.

Jeg har nogle gange forsøgt mig med at tilføje i opgaveformuleringen: “Du skal inddrage selvvalgt empirisk materiale i din besvarelse.”, hvilket de færreste elever forståeligt nok, har kunne honorere. Problemet er som regel, at forsøgsresultater kun publiceres i engelske videnskabelige artikler, som eleverne har svært ved at afkode. Desuden må en engelsk tekst ikke ligge som bilag (men gerne aftales med eleven, hvilket nogle elever vælger). Så hvordan finder man en passende tekst med resultater på dansk?

De sidste ca. fem år har jeg brugt en metode, hvor jeg producerer et bilag til SRP opgaveformuleringen. Jeg fremstiller bilaget ved:

  1. Jeg finder en relevant online videnskabelig artikelGoogle scholar. Ofte leder jeg efter dyreforsøg (der er meget at diskutere) og kendte metoder fx ELISA, PCR o.l. Valg af søgeord er afgørende for at få gode hits. Jeg undgår reviews.
  2. Når der kommer hits frem i Scholar, vil der ved nogle hits være et link i højre side (se billede ovenfor) -det link fører til en online udgave af teksten. Jeg åbner typisk 3-4 artikler, som ser interessante ud, scroller ned til resultaterne og vurderer hurtigt om de virker realistiske for elever at forstå og relevante for elevens vinkel.
  3. Jeg vælger en artikel og laver et bilag på dansk, som indeholder mellem en og tre af figurerne (tabeller/diagrammer) fra artiklen. Jeg oversætter som regel figurteksten til dansk, med mindre den er meget enkel. Det foregår som regel i powerpoint eller MS paint.
  4. Desuden laver jeg en beskrivelse på dansk af de forsøg, som ligger bag hver figur. Beskrivelserne indeholder nok detaljer til, at eleven kan bruge dem i analyse og diskussion af forsøgene. Nogle detaljer er jeg nødt til at udelade eller ændre en smule, afhængigt af elevens niveau og hvor meget der ellers skal være plads til i opgaven fx kan DNA chip erstattes med genotyping ved PCR, chemiluminiscence kan erstattes af ELISA o.l.
  5. I bilaget er der ingen henvisninger til den oprindelige artikel, for jeg vil have eleven til at arbejde selvstændigt med bilaget, og ikke læse og gengive en analyse og diskussion fra den originale tekst.
  6. Eleven bliver bedt om at redegøre for metoden, analysere resultaterne og diskutere forsøgene i bilaget.

Et bilag til en opgave om Alzheimers (biologi og dansk) kunne se ud som (t.o. er synuclein-monomeren ca. 10 kDa):

Man kan argumentere for, at jeg gør elevens research-arbejde. Men jeg synes, at eleverne ofte er stillet en umulig opgave, dels i og med, at de ikke er trænet i projektarbejde, og dels at det er næsten umuligt at finde velegnede kilder på dansk. Jeg har set kolleger anvende øvelsesvejledninger og gamle skriftlige eksamensopgaver som bilag, men det er sjældent, at de lige passer med elevens vinkel.

Taget det tid? ja, ca. en halv time pr. bilag. Men jeg har efterhånden en lille bank af bilag, som passer til mange emner, og så nyder jeg vist også skattejagten i artikel-databasen.

Er det videnskabelig uredelighed, når jeg ændrer detaljer i forhold til den oprindelige artikel? Måske, men SRP er ikke et forskningsprojekt, men en opgave indenfor skolevidenskab. Så jeg har det godt med at modellere virkeligheden lidt for at opnå en pædagogisk pointe.

Sprogmodellerne har selvfølgelig udfordret min tilgang (ligesom alt andet). Men i og med, at bilaget først udleveres med opgaveformuleringen, vil det være snyd, hvis eleven anvender en sprogmodel. Hvis en elev VIL snyde, kan bilaget let anvendes som input i en sprogmodel, der vil udlede vigtige analyser, pointer og diskussions-punkter.

Det der tager længst tid er at finde en passende artikel. For måske alligevel at spare noget tid, har jeg udviklet en prompt, som kan skrive et udkast til en dansk beskrivelse af et forsøg og figurtekst:


[LINK] = https://www.jacc.org/doi/full/10.1016/s0735-1097%2801%2901129-9
[figur] = figur 1
Rolle: Du er en erfaren gymnasielærer i biologi (stx-niveau) med særlig ekspertise i at lave pædagogiske bilag til opgaver for elever. Du er god til at forklare komplekse biologiske koncepter på en måde, som en gymnasieelev kan forstå, uden at forsimple det faglige indhold unødvendigt.
Kontekst: En gymnasieelev skriver et SRP-projekt i biologi. Eleven skal analysere forsøgsresultater fra en videnskabelig artikel og diskutere dem ved at inddrage relevante videnskabelige principper som kontrolforsøg, variabelkontrol, usikkerheder, biologisk variation, fejlkilder, metodevalg og repræsentativitet.
Eleven har begrænset forståelse for engelsk og har ikke forudsætningerne for at forstå det avancerede biologiske fagsprog i artiklen. Derfor har eleven brug for en tilgængelig og præcis beskrivelse af forsøget samt en forklaring af nøgleelementer i [figur].
Opgave:
• Skriv en kort, men præcis beskrivelse af forsøget, som er udført for at opnå de resultater, der vises i [figur] i denne artikel: [LINK].
• Skriv en figurtekst til [figur], som beskriver, hvad figuren viser.
• Forklar betydningen af eventuelle tegn for signifikansniveau (fx p-værdier eller symboler, der indikerer statistisk signifikante forskelle).
• Forklar fejllinjer i figuren, hvis de er til stede (fx hvis det er standardafvigelse eller standardfejl).
Format:
• Skriv på dansk.
• Uddyb tekniske og medicinske begreber og skriv forkortelsen i parentes efterfølgende.
• Undgå fortolkning eller forklaring af resultaterne – hold dig til objektiv beskrivelse af metode og data.
Tone:
• Anvend akademisk sprog, men tilpasset et niveau, som en gymnasieelev i biologi kan forstå.
• Brug aktivt sprog og præcise formuleringer.
• Begynd fx med "En gruppe forskere udførte et forsøg"..
• Sørg for, at beskrivelsen er pædagogisk og let at følge uden at miste faglig dybde.
Afklaring:
Mangler der oplysninger for at løse opgaven korrekt? Hvis ja, specificér hvilke.
Udgivet i AI, Biologi, Bioteknologi, Kemi, Skriftlighed | Kommentarer lukket til Empiri i SPR

Sprogmodeller for elever

Når en bred gruppe af elever skal introduceres til sprogmodeller, kan dette være en dagsorden:

  1. Introduktion omkring børns og maskiners læring, og hvad er en model og målet med den? Hvilke brugs-senarier kan der være for modeller? (sundhed, robotter, sprog, anbefalinger, beslutningsstøtte m.v.)
  2. Træne egen simple model med analoge midler og hovedregning: “Er det frugt?
  3. Opsamle centrale pointer.
  4. Træne en billed-klassifier i Techable Machine: “Er det frugt?”
  5. Opsamling på pointer.
  6. Skitsere vigtige trin i konstruktion af en sprogmodel og karakteristiske træk.
  7. Lade eleverne arbejde med at undersøge en sprogmodel mht. de nævnte træk.

Jeg har forsøgt at designe en aktivitet, som honorerer punkt 2, og lever op til en række krav:

  1. Introducerer nogle af de tekniske begreber og metoder, som indgår i sprogmodeller.
  2. Er på et niveau, hvor alle kan være med.
  3. Er så hands-on som muligt.
  4. Ikke tager for lang tid at afvikle.

Dét er en ret svær balance at ramme. Blandt andet er en grundlæggende struktur i sprogmodeller de neurale netværk, som er i mange lag og dimensioner og træningen kræver mange gentagelser. Det bliver hurtigt omfattende, abstrakt og tidskrævende at designe og træne et neuralt netværk -det er derfor man bruger en computer. Alle beregninger i aktiviteten skal desuden kunne løses af elever i hovedet, for det reducerer risikoen for black box.

Den væsentligste egenskab ved modellerne, at de kan forudsige. Derfor har jeg designet aktiviteten, så eleverne skal hånd-træne en meget simpel perceptron-model (uden bias), som kan forudsige om et objekt er en frugt eller ej (target). Objekterne tilgås som spillekort med tre binære egenskaber (features): Er formen rund/oval? Er farven blå? Er objektet produceret i Danmark (se billede).

De tre features er valgt fordi: en frugt er ofte rund, en frugt er sjældent blå og frugt eller ej er uafhængig af hvor den er produceret.

Kortene indeholder en blanding af objekter, som er frugter fx æble, og ikke frugter fx Lego. Eleverne arbejder i par og tager et kort frem ad gangen. Alle følges ad i starten, men eleverne arbejder efterhånden selvstændigt (faded guidance): De gennemgår et trænings-flow, herunder beregner vægtet sum, bestemmer output og opdaterer vægte, hvis der er uoverensstemmelse mellem kort og modellens forudsigelse (se billede).

Sammen med kortene introduceres de første begreber: trænings-data, model, vægte, træning.

Når alle kortene er brugt, skal eleverne gentage proceduren med kortene igen og igen, indtil modellen kan forudsige rigtigt fem gange i træk.

Derefter udleveres nye kort med objekter, som eleverne skal teste modellen på. Der er både frugter, som modellen kan forudsige korrekt (fx en fersken eller rød legoklods), og objekter, som den forudsiger forkert på fx en banan eller en blå blomme.

Opsamlingen kan introducere lidt flere begreber (præcision og bias), samt nogle vigtige principper:

  • Modeller kan forudsige noget (frugt eller ikke-frugt).
  • Modeller lærer at forudsige, ved at vægtene bliver tilpasset gennem træning.
  • Præcisionen af forudsigelserne er afhængig af træningsdata (antal og variation fx hvis vi kommer med en blå frugt (blomme), forudsiger modellen nok forkert).
  • Præcisionen af forudsigelserne er afhængig af modellen (bl.a. hvilke og antal af features; kombination af modeller i et neuralt netværk).
  • Der kan være tendenser (bias) i træningsdata, som gør forudsigelserne unuancerede (vi har kun trænet på en slags frugter). Bias kan mindskes ved at bruge mere varierede træningsdata.
  • Forudsigelsen kan ændres fra enten/eller til en andel (fx via softmax-lignende funktion).

There will be a test.. skal eleverne have opsamlende quiz?

En alternativ tilgang kunne være at forbinde eleverne i et netværk, hvor hver elev er en knude i netværket. Hver elev har sin egen vægt, og data sendes gennem netværket.

Dét kan hurtigt udvikle sig til kaos: Hvem skal opdatere vægtene? Skal alle følges ad? Hvad sker der, hvis nogen regner forkert? Elever ved kun hvad der sker hos dem selv og ikke i hele netværket fx kommer de ikke til at forholde sig til forudsigelsen.

Udgivet i AI, Digital Dannelse, Informatik, Maskinlæring | Kommentarer lukket til Sprogmodeller for elever

Min helt egen lærings-chatbot

Det er lidt af et dilemma, hvorvidt jeg skal vise eleverne alt det, som ChatGPT kan, for det viser dem også tydeligt, hvordan de kan snyde med botten ved at lade den løse deres opgaver. Mange elever kender nok allerede mulighederne. Men min sindsro ville være større, hvis jeg kunne anvende en bot, som de ikke kunne snyde med. En pædagogisk chatbot, som er rettet mod læring og ikke mod at producere tekst. Fra genAI til pædAI.

Jeg har eksperimenteret lidt med openAI’s agenter (GPT’er). Her kan jeg fodre en chat med specifikke tekster fx sider fra wikipedia, om det emne vi arbejder med, og med retningslinjer for bottens adfærd. Men man skal være logget ind på openAI for at tilgå agenterne, og det må jeg ikke bede eleverne om af gode GDPR-grunde.

Men nu har jeg lavet min egen applikation, som ikke kræver login fra brugeren. Ideen er, at bygge videre på ChatGPT. Når man køber adgang til ChatGPT, får man samtidig adgang til at skrive programmer, der kan kommunikere med ChatGPT (via et API). Så man kan skrive sit eget program, der kan sende input til en GPT-model og få svar retur.

Første version af systemet kan prøves her.

Det er et velkendt problem med ChatGPT, at systemer mister fokus, og glemmer dele, som ligger længere tilbage i chatten. Det er bl.a. en konsekvens af, at attention-mekanismen bruger sekvens-embeddings, så ord (tokens), der står senere i prompt (og kontekst), får større betydning for næste output-token.

Selvom man prompter ChatGPT med grundige instruktioner i, at systemet skal fokusere på læring og ikke må skrive elevernes opgaver, så glemmer den det hurtigt. Når man prompter for at blive quizzet, glemmer den reglerne efter nogle få spørgsmål.

Min løsning er, at jeg laver min egen side med en brugergrænseflade (herover), hvor brugeren kan skrive en prompt til ChatGPT. Før hver prompt sendes til ChatGPT (gpt-4o-mini), klistrer jeg en system-prompt sammen med brugerens prompt, uden at brugeren ser det fx:

Rolle: Du er en biologi-lærer i dansk gymnasium stx gennem 15 år. Kontekst: Du skal være lærings-assistent for en elev. Du er interesseret i, at eleven lærer begreber, metoder og teorier i biologi. Du vil lave quizzer med eleven. Du er opmærksom på, at du ikke vil løse opgaver for eleven. Du vil ikke skrive elevens produkter. Du vil ikke skrive eksempler på svar eller afsnit fx til rapporter eller opgave-besvarelser. Du vil hjælpe med at forklare og formidle viden i biologi. Opgave: Hjælp elever med at lære biologi-faget. Du spørger ind til elevens læring, interesser og fremskridt. Format: korte svar. Tone: Venlig og tålmodig.”

Det er afgørende, at alle beskeder til og fra botten samles (fx i et array), og det hele sendes med til ChatGPT hver gang, for ellers mister systemet sammenhængen i samtalen.

En lidt mere generel pointe er, at jeg nu har en chatbot, som jeg kan customize og aligne, som jeg vil. Jeg kan manipulere med output og særligt med input.

Fx kan jeg lave en vejlednings-bot, der som input får de vejledningsspørgsmål, som vi som regel stiller til eleverne, den videnskabelige basismodel og måske læreplanen. Og så får den en instruktion om, at den skal optræde som vejleder og stille mange og bestemte spørgsmål. Alt det får eleven ikke at se, og hvis alt går vel, kan botten ikke bruges til andet end at vejlede.

Jeg kan lave en quiz-bot, som tager begreber og svar fra en liste, som ligger i en variabel. Dertil kan der være en liste over korrekt og ikke-korrekt besvarede begreber. På den måde støtter jeg systemets hukommelse. I modsætning til mange multiple-choice systemer, kan denne bot rette fritekst og kan forklare, når noget skal uddybes.

Nu mangler jeg bare at teste, om eleverne kan få chatbotten til at snyde.


Opdatering: ultimo november 2024

Nogle elever gider ikke bruge chatbotten, fordi den er tunet til ikke at besvare opgaver.

Mange elever kan ikke forstå, hvorfor de skal skrive med en chatbot, når den alligevel ikke kan give konkrete svar om kilder m.m.

Jeg har fået lavet en SRP-vejleder-chatbot. Jeg tænker på at prøve et chatrum til flere brugere, hvoraf chatbotten kun er een af stemmerne, for at øge samarbejdet mellem eleverne.

Udgivet i AI, Biologi, Informatik, Maskinlæring, Programmering | Kommentarer lukket til Min helt egen lærings-chatbot

DNA-model med laserskærer

September 2024: En kollega spurgte, om vi havde en fysisk model af DNA liggende? -Nej, men hvorfor ikke? Jeg researchede de sædvanlige kilder: Etsy, Thingiverse, 3dcults og Google. Ingen modeller som er gode eller til at betale for penge.

Første prototype

I et blogindlæg fra MIT fandt jeg en løs beskrivelse af en laserskåret 3d model. Ingen filer, men en tegning af brikkerne. Jeg vektoriserede tegningen i Inkscape og skar en pap-prototype af brikkerne. De passede sammen, men efter 2-3 basepar blev det klart, at modellen aldrig ville blive en spiral. Noget i modellen passede ikke sammen.

Efter 4-5 iterationer i pap kom jeg frem til nogle mål, som passer nogenlunde sammen (bl.a. ca. 36 grader mellem hvert nukleotid, og længden af bindingen mellem baserne).

Planen er, at skære baserne i 3mm mdf med tekst, og skære backbone samt bindinger i pap, så der bliver en vis fleksibilitet i modellen.

Jeg vil prøve at implementere:

  • major og minor groove i modellen ved at lave stykker af backbone, som er kortere og længere.
  • den antiparallel struktur bliver synlig.
  • forskellen på AT og GC. Måske bindinger med hhv. 2 og 3 hydrogenbindinger.
  • tydeligere adskillelse mellem fosfat og ribose, som p.t. er eet stykke.
  • Undgå at basen ser ud som om, at den binder to nukleotider sammen (det er ribose, som gør det)

Det er stadig meget tvivlsomt, om eleverne kan samle modellen, men en kollega har lovet at teste det.

oktober 2024: Backbone blev opdateret med symboler inkl. 3′ og 5′. Hver base og backbone fik en pil, som skulle vise, hvilken retning brikkerne skulle samles. Siderne af DNA blev farvet hhv. brun og hvid for at gøre det nemmere at samle hver side.

Jeg lavede 10 sæt i pap a 8 basepar, som eleverne i 1g NV (grupper a 3) skulle samle. Der blev også lavet to samlede og limede modeller, som eleverne kunne kigge efter.

De fleste elever kunne ikke finde ud af det. Dels var deres viden om DNA meget begrænset. Dels var der mange kombinationer af brikker, hvorfor de havde svært ved at komme i gang. De få elever, som det lykkedes for, var dem, som sad med de limede modeller.

Jeg har nogle ideer til, hvordan eleverne kan komme i mål:

  • Eleverne samle nukleotider først, og jeg skal tjekke, om de er korrekte.
  • Fælles start af de første basepar.
  • Ingen må tage de limede modeller, som skal stå, så alle kan se dem.

November 2024: Det blev ikke meget bedre af at bygge nukleotider først 🙁 Så modellen skal måske leve videre som demonstrations-model eller der skal være nogle (2) byggede og limede basepar, som eleverne kan bygge videre på, fordi starten er det sværeste.

(opdateres nok)

Udgivet i Biologi, Bioteknologi | Kommentarer lukket til DNA-model med laserskærer