Generativ AI
Hur ska man förhålla sig till verktyg baserade på LLM:er (Large Language Models, t.ex. GPT, Claude, Llama, Gemini, DeepSeek) i dagens verklighet? Du har kanske hört personer som Jensen Huang, VD på Nvidia och hedersdoktor på LiU, uttala sig om att ingen bör lära sig programmera längre eftersom “Generativ AI” kan lösa problemet åt dig.
Problemet
För det första ska man idka lite grundläggande källkritik och titta på vilka de personer som säger sådant är, och vilka intressen de influeras av. Någon vars framgång bygger på att tillhandahålla beräkningskraft, datorcenter, energi till datorcenter eller betaltjänster med AI-verktyg är inte opartisk när hen förordar att vi ersätter mjukvara skriven av människor med energitörstig och beräkningstung dito skriven av ChatGPT och liknande.
För det andra är sanningen fortfarande att även om LLM:erna kan lösa många enklare programmeringsproblem så presterar de markant sämre i större system. Vad vi ser mer och mer är att dessa språkmodeller blir verktyg som kunniga programmerare kan ta hjälp av men inte förlita sig på. Dessa verktyg kan ibland hjälpa en programmerare att lösa repetetiva uppgifter snabbt, men programmeraren behöver kunna rätta till de misstag verktygen gör. För att kunna göra det måste programmeraren själv kunna förstå allt som verktyget skapar. Med andra ord, en LLM kanske är en snabbare programmerare än du är, men du måste vara en bättre programmerare än en LLM är för att det ska vara någon mening med det.
I en introduktionskurs i programmering måste dock nivån på uppgifter naturligtvis ligga på en förhållandevis grundläggande nivå, och den typen av uppgifter du stöter på i den här kursen är just den typen som LLM:erna är jätteduktiga på att lösa. Relativt små och avgränsade med förhållandevis detaljerade instruktioner. Delvis just för att det finns en enorm mängd med övningsuppgifter och exempel ute på nätet, som dessa språkmodeller är tränade på.
Detta leder alltså till att det är väldigt lätt att som nybörjare få intrycket att alla problem kan lösas av LLM:er och det inte finns någon poäng med att lära sig programmera, precis som Jensen Huang och andra säger. Av naturliga skäl kan vi dock inte lägga uppgifterna i den här kursen på en sådan nivå att LLM:er byggda för syftet inte klarar av dem. De skulle i så fall behöva ligga på en sådan nivå att det vore lika omöjligt för en mänsklig nybörjare, och det är inte något en novis kan lära sig något av.
Alltså måste vi be dig att motstå frestelsen att låta t.ex. ChatGPT lösa uppgifterna åt dig. Dels kommer det bara att motverka utvecklingen av din egen förståelse, och dels är det betraktat som akademiskt fusk att lämna in uppgifter man inte skrivit själv vilket kan leda till avstängning från studierna*.
Fler och fler studenter blir avstängda från studierna pga fusk med hjälp av LLM:er som ChatGPT. Detta händer även på kogvet.
Får jag inte använda ChatGPT alls? Skämtar du?
Det enda som är helt förbjudet är att lämna in uppgifter som man inte löst själv.
Med det sagt vill vi också uppmana dig till att öva på att använda andra källor också. Läs kurslitteraturen, speciellt Pythons officiella dokumentation. Titta på föreläsningsmaterial eller material från storseminarierna. Ställ frågor på föreläsningar, seminarier och labbpass. Sök upp videos som förklarar nya koncept på youtube.
Använd Google, Brave, Duckduckgo eller någon annan sökmotor för att söka efter exempel. Sök efter frågor du har på Stack Overflow (men var försiktig då det är lika mycket fusk att kopiera en lösning därifrån som att få den av ChatGPT).
Gå och knacka på Johans eller Charlies dörr och fråga om du inte hittar svaret själv. Skicka ett mail till Johan eller Charlie och fråga.
Kunskap du letat upp själv och syntetiserat genom att översätta förklaringar och exempel till din egna situation kommer sitta många gånger bättre och ge dig en djupare förståelse än ett färdigt svar.
Hur kan man använda LLM:er i den här kursen?
Om du tycker att det är fullständigt orimligt av oss att be dig att inte använda LLM:er alls i den här kursen. Vi vill dock be dig att tänka på hur du använder dessa.
Hur man INTE ska göra
Kopiera inte uppgiftstexten rakt av och klistra in den i chattfönstret. LLM:en kommer oftast ge dig en fullständig lösning och det blir sedan väldigt svårt för dig att konstruera en egen lösning när du redan fått en färdig dito, och just den får du ju faktiskt inte lämna in, då det är betraktat som akademiskt fusk och kan leda till avstängning från studierna. Och ja, det är oftast ganska tydligt för oss när lösningar kommer från LLM:er.
Utöver risken för avstängning så är det väldigt osannolikt att man kommer klara duggan om man inte kan lösa uppgifterna själv.
“Men jag förstår ju lösningen som ChatGPT gav mig, så vad är problemet?”
Att förstå en lösning på ett givet problem är inte samma sak som att givet ett nytt problem kunna konstruera en egen lösning. Jämför det med engelska. De flesta här i Sverige är mycket bättre på att förstå engelska än vi är på att själva tala eller skriva på engelska.
Så hur SKA man göra då?
I princip alla sätt att använda LLM:er som INTE ger en färdig lösning är tillåtna, men vissa sätt är bättre än andra. Huvudsakligen, se chatbotten som en extra labbassistent, som, precis som mänskliga labbassistenter, ibland säger fel, ger för mycket eller för lite hjälp eller svarar på fel fråga. Viktigast är att du inte lär dig att förlita dig på en LLM.
- Skriv en inledande “prompt”: “Jag är nybörjare på programmering som just nu läser en introduktionskurs i programmering med Python. Jag vill inte att du ger mig färdiga lösningar på uppgifter jag frågar om utan förklarar för mig det jag behöver veta för att kunna lösa uppgiften själv.”
- Fråga om specifika koncept. Vad handlar uppgifterna du arbetar med om? Till varje kapitel av pythonuppgifter finns ett avsnitt “Att lära dig från uppgifterna” med några av de centrala koncepten för kapitlet. Ställ frågor om de koncepten. T.ex. “Jag har hört talas om <koncept> men vet inte vad det är, kan du förklara det för mig som läser en introduktionskurs i programmering med Python?”
- Har du kört fast på en viss rad? Fråga vad som är fel med den raden och inget annat.
- Kopiera felmeddelandet du får och fråga vad det betyder. Att lära sig läsa och förstå felmeddelanden är en mycket viktig kompetens som programmerare, då ingen programmerare alltid gör rätt på första försöket. (Fråga mig varför. //Johan)
- Ställ en fråga i stil med: “Vad behöver jag förstå för att kunna lösa följande uppgift i python? Förklara utan att ge mig en färdig lösning.” Det här är enda omständigheten då det kan vara okej att skicka en hel uppgiftsbeskrivning en LLM.
- Ställ gärna följdfrågor eller be om olika sätt att illustrera informationen. T.ex. “Kan du representera det som en kunskapsgraf eller mindmap?”
- Om du är osäker på ifall du förstått något och har slut på uppgifter, t.ex. enkelrekursion: “Jag vet inte om jag har förstått enkelrekursion. Kan du ge mig 3 uppgifter som testar ifall jag har förstått enkelrekursion i python?”
- Om du inte förstår ett exempel i litteraturen eller på kurshemsidan, fråga “Hur illustrerar det här exemplet <koncept>? Förklara för mig som är nybörjare.” och bifoga exemplet.
Sidansvarig: Johan Falkenjack
Senast uppdaterad: 2025-08-10