Programmering med ChatGPT: Forskelle mellem versioner
Bar (diskussion | bidrag) |
Bar (diskussion | bidrag) |
||
| Linje 23: | Linje 23: | ||
Igen understreges at det der afleveres skal være elevens selvstændigt udviklede produkt og dokumentation, hvor man på normal vis anvender internettet som et værktøj til at bibringe forståelse. | Igen understreges at det der afleveres skal være elevens selvstændigt udviklede produkt og dokumentation, hvor man på normal vis anvender internettet som et værktøj til at bibringe forståelse. | ||
==Problemet med ChatGPT== | |||
Ligesom man ikke kan kilde-henvise til "google", for at angive at man har fundet informationer på nettet, så kan man heller ikke kildehenvise til ChatGPT direkte som en kilde. | |||
Når man finder informationer med google', så skal man angive hvor på nettet man har fundet dem med så præcis en kildehenvisning, at man kan se den information der er blevet anvendt. | |||
Denne type henvisning kan man ikke lave i forhold til ChatGPT, da sprogmodellen der ligger bag ChatGPT konstant udvikler sig, samt at de svar sprogmodellen giver her et randomiseret element indbygget, som er med til at give bedre svar<ref>[https://www.it-vest.dk/arrangementer/sig-webinar-14-marts-2024-kunstig-intelligens-og-chatgpt-hvordan-virker-det-og-skal-vi-bare-opgive-undervisning-og-eksamen Webinar om kunstig intelligens]</ref>. | |||
Her er man altså nødt til at tage andre metoder i brug, for at kunne dokumentere at man har udviklet sit produkt ordentligt og redeligt. | |||
==Kildehenvisninger i dokumentation== | |||
Der kan være forskellige standarder for hvordan man kildehenviser i forskellige uddannelser, dette er skrevet med udgangspunkt i at man anvender Word bibliografi-værktøj og her vist med en Harvard-lignende standard<ref>[https://holstebro-htx.dk/index.php/Word_Kildeliste Kildelister] anvendt i Microsoft Word</ref>. | |||
===Normal Internet-kilde til kode=== | |||
I dette eksempel er der angivet hvordan man ville dokumentere at man har anvendt kode fra et bibliotek til noget hardware på en [[Arduino]]. I det tænkte eksempel er det en 4 kanals AD-konverter<ref>[https://arduinotech.dk/shop/ads1115-module-4-channel-16-bit-i2c-adc-with-pro-gain-amplifier 4 kanals AD-konverter] fra ArduinoTech</ref>, der er købt som modul. | |||
For at kunne anvende modulet i koden skal der kommunikeres med modulet på en måde, som er angivet i beskrivelsen af modulet - det er dog ikke nødvendigt at sætte sig ind i den grundlæggende kommunikation, hvis man blot ønsker at få værdier ind i sin software. Som en dokumentation for hvordan man anvender biblioteket kan man skrive følgende: | |||
Til at hente værdierne fra den 4 kanals AD-konverter anvendes et bibliotek fundet på GitHub (Singh, 2018) som kan indlæse de analoge spændinger. | |||
Til at sætte AD-konverteren rigtigt op, til at kunne læse 4 spændinger, så anvendes eksemplet ”ADS1115_SingleEnded.ino” og i setup skrives følgende kode: | |||
<syntaxhighlight lang="c"> | |||
ads.getAddr_ADS1115(ADS1115_DEFAULT_ADDRESS); // 0x48, 1001 000 (ADDR = GND) | |||
ads.setGain(GAIN_TWO); // 2x gain +/- 2.048V 1 bit = 0.0625mV (default) | |||
ads.setMode(MODE_CONTIN); // Continuous conversion mode | |||
ads.setRate(RATE_128); // 128SPS (default) | |||
ads.setOSMode(OSMODE_SINGLE); // Set to start a single-conversion | |||
ads.begin(); | |||
</syntaxhighlight> | |||
I [[loop()]] testes i første omgang, om det kan lade sig gøre at læse de 4 kanaler. Dette gøres ved at afvikle følgende testkode: | |||
<syntaxhighlight lang="c"> | |||
address = ads.ads_i2cAddress; | |||
Wire.beginTransmission(address); | |||
error = Wire.endTransmission(); | |||
if (error == 0) | |||
{ | |||
int16_t adc0, adc1, adc2, adc3; | |||
adc0 = ads.Measure_SingleEnded(0); | |||
Serial.print("Digital Value of Analog Input at Channel 1: "); | |||
Serial.println(adc0); | |||
adc1 = ads.Measure_SingleEnded(1); | |||
Serial.print("Digital Value of Analog Input at Channel 2: "); | |||
Serial.println(adc1); | |||
adc2 = ads.Measure_SingleEnded(2); | |||
Serial.print("Digital Value of Analog Input at Channel 3: "); | |||
Serial.println(adc2); | |||
adc3 = ads.Measure_SingleEnded(3); | |||
Serial.print("Digital Value of Analog Input at Channel 4: "); | |||
Serial.println(adc3); | |||
} | |||
</syntaxhighlight> | |||
Denne test giver det ønskede resultat. | |||
Ud fra denne beskrivelse viser man, at man tager andres kode, og anvender ind i sit eget projekt, og man angiver præcist i sin beskrivelse hvad man har taget fra andres kode. | |||
I kildelisten vil kilden optræde på følgende måde: | |||
Singh, Y. (16. januar 2018). Arduino Library ADS1115 16 bit 4 channel ADC. Hentet 15. marts 2024 fra https://github.com/ncdcommunity/Arduino_Library_ADS1115_16Bit_4Channel_ADC | |||
==Referencer== | ==Referencer== | ||
Versionen fra 15. mar. 2024, 14:04
Det er ikke så svært at få ChatGPT[1] til at lave kode, der skal man blot beskrive hvad man gerne vil have programmet til at gøre, og så kopiere den kode, der kommer ud af det - det giver tit ret gode resultater.
Problemet med at anvende ChatGPT i forbindelse med skoleprojekter er, at man har forståelsen med i det, og at man ikke kan blive anklaget for plagiat.
Hvad må man ikke i en skoleprojekt
- Man må ikke kopiere kode, som man ikke selv har skrevet, til et programmeringsprodukt uden at man angiver en kilde. Det er uanset hvor koden stammer fra, også selvom man har brugt ChatGPT til at "udvikle" koden.
- Man må ikke aflevere et produkt hvor de primære dele af koden er kopieret, heller ikke selvom man kildehenviser.
- Man må ikke få ChatGPT til at dokumentere sin kode, ved at man kopierer ChatGPT's beskrivelse ind i sin dokumentation af koden.
De beskrevne eksempler er at betragte som plagiat, og vil blive håndteret efter skolens ordensregler, hvilket i værste fald kan ende med at et fag annulleres eller man bliver bortvist fra uddannelsen.
Hvad er tilladt med ChatGPT
På samme måde som man må anvende kilder fra internettet, så må man i programmerings-faget i gymnasiet anvende ChatGPT i udviklingen af kode til et programmeringsprodukt. Dette er blevet tilladt via en revidering af vejledningen til faget[2].
I vejledningen står der som følger:
- "brug af internettet er tilladt som fagligt hjælpemiddel ved de mundtlige prøver, inkluderer de tilladte hjælpemidler anvendelsen af chatbots og lignende på en måde, som afspejler, hvordan man arbejder i den daglige undervisning. Dette kunne fx være brug af ChatGPT til at debugge kode."
Det skal altså afspejle den normale brug, som man også har ved at bruge internettet. Som angivet under hvad man ikke må, så er den normale brug, at man anvender information til at lære et programmere, men at man ikke tager så meget af sit produkt fra nettet, så man ikke har en forståelse af hvordan produktet er sammensat.
Videre i vejledningen står der:
- "I forhold til denne type hjælpemidler er det vigtigt at være opmærksom på, at den tilladte anvendelse er betinget af, at hjælpemidlerne kun benyttes i et omfang, hvor prøvebesvarelsen er selvstændig og udelukkende elevens egen."
Igen understreges at det der afleveres skal være elevens selvstændigt udviklede produkt og dokumentation, hvor man på normal vis anvender internettet som et værktøj til at bibringe forståelse.
Problemet med ChatGPT
Ligesom man ikke kan kilde-henvise til "google", for at angive at man har fundet informationer på nettet, så kan man heller ikke kildehenvise til ChatGPT direkte som en kilde.
Når man finder informationer med google', så skal man angive hvor på nettet man har fundet dem med så præcis en kildehenvisning, at man kan se den information der er blevet anvendt.
Denne type henvisning kan man ikke lave i forhold til ChatGPT, da sprogmodellen der ligger bag ChatGPT konstant udvikler sig, samt at de svar sprogmodellen giver her et randomiseret element indbygget, som er med til at give bedre svar[3].
Her er man altså nødt til at tage andre metoder i brug, for at kunne dokumentere at man har udviklet sit produkt ordentligt og redeligt.
Kildehenvisninger i dokumentation
Der kan være forskellige standarder for hvordan man kildehenviser i forskellige uddannelser, dette er skrevet med udgangspunkt i at man anvender Word bibliografi-værktøj og her vist med en Harvard-lignende standard[4].
Normal Internet-kilde til kode
I dette eksempel er der angivet hvordan man ville dokumentere at man har anvendt kode fra et bibliotek til noget hardware på en Arduino. I det tænkte eksempel er det en 4 kanals AD-konverter[5], der er købt som modul.
For at kunne anvende modulet i koden skal der kommunikeres med modulet på en måde, som er angivet i beskrivelsen af modulet - det er dog ikke nødvendigt at sætte sig ind i den grundlæggende kommunikation, hvis man blot ønsker at få værdier ind i sin software. Som en dokumentation for hvordan man anvender biblioteket kan man skrive følgende:
Til at hente værdierne fra den 4 kanals AD-konverter anvendes et bibliotek fundet på GitHub (Singh, 2018) som kan indlæse de analoge spændinger. Til at sætte AD-konverteren rigtigt op, til at kunne læse 4 spændinger, så anvendes eksemplet ”ADS1115_SingleEnded.ino” og i setup skrives følgende kode:
ads.getAddr_ADS1115(ADS1115_DEFAULT_ADDRESS); // 0x48, 1001 000 (ADDR = GND)
ads.setGain(GAIN_TWO); // 2x gain +/- 2.048V 1 bit = 0.0625mV (default)
ads.setMode(MODE_CONTIN); // Continuous conversion mode
ads.setRate(RATE_128); // 128SPS (default)
ads.setOSMode(OSMODE_SINGLE); // Set to start a single-conversion
ads.begin();
I loop() testes i første omgang, om det kan lade sig gøre at læse de 4 kanaler. Dette gøres ved at afvikle følgende testkode:
address = ads.ads_i2cAddress;
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
int16_t adc0, adc1, adc2, adc3;
adc0 = ads.Measure_SingleEnded(0);
Serial.print("Digital Value of Analog Input at Channel 1: ");
Serial.println(adc0);
adc1 = ads.Measure_SingleEnded(1);
Serial.print("Digital Value of Analog Input at Channel 2: ");
Serial.println(adc1);
adc2 = ads.Measure_SingleEnded(2);
Serial.print("Digital Value of Analog Input at Channel 3: ");
Serial.println(adc2);
adc3 = ads.Measure_SingleEnded(3);
Serial.print("Digital Value of Analog Input at Channel 4: ");
Serial.println(adc3);
}
Denne test giver det ønskede resultat.
Ud fra denne beskrivelse viser man, at man tager andres kode, og anvender ind i sit eget projekt, og man angiver præcist i sin beskrivelse hvad man har taget fra andres kode. I kildelisten vil kilden optræde på følgende måde: Singh, Y. (16. januar 2018). Arduino Library ADS1115 16 bit 4 channel ADC. Hentet 15. marts 2024 fra https://github.com/ncdcommunity/Arduino_Library_ADS1115_16Bit_4Channel_ADC
Referencer
- ↑ ChatGPT Login - Indgangen til ChatGPT
- ↑ Vejledning til Valgfaget Programmering C
- ↑ Webinar om kunstig intelligens
- ↑ Kildelister anvendt i Microsoft Word
- ↑ 4 kanals AD-konverter fra ArduinoTech