Göm menyn

Information om rättningssystemet

Översikt av rättningsystemet

I kursen används ett så kallat rättningssystem för att hantera inskickade uppgifter (både O-uppgifter och P-uppgifter). Processen kan i stora drag beskrivas av flödesschemat nedan:

Flödesschema över rättningssystemet

När du skickar in en uppgift körs den inskickade koden genom den så kallade automaträttningen. Där kan uppgiften antingen bli godkänd eller skickas tillbaka för komplettering. Om uppgiften inte passerar automaträttningen skickar du in uppgiften igen efter att du har ändrat på din kod. När uppgiften passerar automaträttningen skickas den vidare för rättning av assistent.

Vid assistenträttningen kommer en av assistenterna i kursen att läsa din kod för att se att om den uppfyller kraven för uppgiften, samt att koden håller tillräckligt hög kvalitet för området. Om uppgiften inte godkänns av assistent behöver du skicka in uppgiften efter att ha rättat till din kod efter assistentens kommentarer. Innan din koden rättas av assistent igen måste den passera automaträttnignen igen. När uppgiften väl är godkänd av assistent är uppgiften godkänd.

I varje led av rättningen kommer du få ett svar från rättningssystemet. Din kurskarta uppdateras också för att reflektera var i rättningsprocessen varje uppgift befinner sig i.

Hur du skickar in uppgifter

Uppgifterna skickas in via SC (se sidan SC). Kom ihåg att skicka in uppgiften på rätt assignment i SC (se sidan Assignments i SC).

Var hittar jag svar från rättningssystemet?

Svar från automaträttningen och assistenträttningen skickas till din studentmail.

Automaträttning

Automaträttning

Automaträttningen är ett verktyg för att se om din kod uppfyller funktionella krav, det vill säga om din kod ger rätt utdata givet vissa indata. Automaträttningen säger alltså inte om din kod är "bra skriven", utan det är assistenträttningen till för.

Det första som händer när du skickat in uppgiften är att automaträttningen kollar om de inskickade filerna är okej. Några vanliga fel i detta skede är:

  • samarbetskommentar saknas: den här kan man få om man saknar samarbetskommentaren på O-uppgifter.
  • Felaktigt eller felaktiga filnamn: Se till att filnamnet bara består av små engelska bokstäver (a-z), siffror eller understreck, samt att filändelsen (till exempel .adb) är rätt. ada_o2.adb är ett okej filnamn, men inte Ada_O2.adb eller inlämning.adb.
  • invalid token: I kurser med en Python-del kan du få felet invalid token om du skickar in Python-kod utan shebangen allra högst upp i koden, alltså innan samarbeteskommentaren. Se sidan Ada till python, lathund för mer information.

Nästa steg är att automaträttningen försöker kompilera programmet (eller försöker göra programmet "körbart"). I meddelandet skrivs det om kompileringen lyckades. Om kompileringen misslyckas ska du rätta till kompileringsfelen innan du skickar in igen.

Efter att programmet kompilerats körs ett antal testfall. Vart och ett av dessa tesfall motsvarar en körning av programmet. Generellt sett finns det fler tesfall i automaträttningen än vad det finns körexempel i uppgiften. Se till att skriva din kod generell och inte skräddarsydd för körexemplena. Samtidigt täcker inte testfallen alla möjliga situationer. Detta gäller i synnerhet vid P-uppgifter där det är meningen att du ska visa att du klarar av att följa den instruktion som finns i uppgiften och identifiera eventuella olika fall.

Efter varje körning jämför automaträttningen utdatan från ditt program med utdatan från en "facit"-lösning av uppgiften. Automaträttningen är väldigt noggrann. Saker som stavfel, extra blanktecken och andra småfel kommer ge komplettering.

Om testfallet lyckas kommer det bara skriva ut "Testfall nummer X: OK!". Om testfallet inte klarats av står det "Testfall nummer X: Ej avklarat." följt av en utförlig beskrivning av vad som blev fel. Se Hur du tolkar meddelanden från ej avklarade testfall nedan.

Din uppgift måste klara av tidigare tesfall innan nästa körs. Det kan alltså som mest bli ett ej avklarat testfall per inskick av uppgiften.

När din inskickade uppgift klarat alla testfall kommer den att markeras som automatgodkänd. I slutet av dagen kommer uppgifterna som är markerade som automatgodkända skickas vidare till assistenträttning.

Det går att skicka in uppgiften även efter att den har blivit automatgodkänd. Ett exempel skulle vara om man vill snygga till sin kod innan assistenten rättar den. Observera dock att det endast är den senaste inskickningen som är aktuell. Det betyder att om din nya lösning inte blir godkänd av automaträttningen så kommer uppgiften inte rättas av assistent, även om ett tidigare inskick godkänts av automaträttningen.

Hur du tolkar meddelanden från ej avklarade testfall

Om en uppgift inte klarar något av testfallen kommer du att få information om hur svaret från din inskickning och facit skiljer sig åt.

Meddelandet inleds med vilken indata från tangenbordet som användaren skickar in. Detta följs sedan av en så kallad differens eller diff mellan facits utdata och den inskickade uppgiftens utdata. Denna visar hur utdatan skiljer sig. Observera att inmatningen från tangentbordet från användaren inte visas här, även om den skulle visas om du kör programmet i terminalen.

Det är bara skillnaderna mellan de två utskrifterna som syns i diffen. Det är därför vanligt att diffen är väldigt lång första gången man skickar in, och att den blir kortare och kortare när man börjar bli färdig.

I diffen används ett antal symboler symboler för att markera hur utskrifterna skiljer sig åt. Dessa är:

Symbol Förklaring
xcn Rad x i utdatat från facit skiljer sig från rad n i den inskickade uppgiftens utdata.
OBS inte radnummer i källkodsfilerna.
x,ycn,m Samma som ovan, men att intervallet av raderna x-y skiljer sig från intervallet av raderna n-m.
< markerar facits utdata.
--- separator mellan facits utdata och den inskickade uppgiftens.
> markerar den inskickade uppgiftens utdata.
˽ en markering för ett mellanslag, för att göra det lättare att hitta extra mellanslag. Syns inte i terminalen.
markering för ny rad. Syns inte i terminalen.

Meddelandet avslutas med all utdata från både facit och din inskickade kod. Ibland kan det vara lättare att jämföra dessa själv än att titta på diffen.

Om du är osäker på hur du ska tolka rättningsmeddelandet kan du fråga din assistent under programmeringsstugorna. Under P-pass ska du dock fråga via SC.

Förklaring av en diff från ett automaträttningsmeddelande

Ibland kan det vara svårt att tolka meddelanden från automaträttningen. Därför följer här ett exempel på hur ett sådant meddelande kan se ut, samt hur man kan tolka det.

Låt säga att du har skickat in uppgiften till rättningssystemet. Facits utdata och den inskickade utdatan skulle kunna se ut som följande:

# Utdata från facit Utdata från inskickad
1
2
3
4
5
6
7
8
9
10
11
12
Samma text 1.
Hejsan Viktor!
Samma text 2.
Denna text skiljer sig mellan

facit och inskick.
Samma text 3.
Ett
Två
Tre
Samma text 4.
Nu var det slut
Samma text 1.
Hejsan Victor!
Samma text 2.
Denna text är annorlunda.
Samma text 3.
Tre
Två
Ett
Samma text 4.
Nu var det slut.

Observera att dessa skulle komma i slutet av meddelandet. I det fallet kommer automaträttningen att skicka tillbaka:

2c2
< Hejsan˽Viktor!⏎
---
> Hejsan˽Victor!˽⏎
4,6c4
< Denna˽text˽skiljer˽sig˽mellan⏎
< ⏎
< facit˽och˽inskick.⏎
---
> Denna˽text˽är˽annorlunda.⏎
8,9d5
< Ett⏎
< Två⏎
10a7,8
> Två⏎
> Ett⏎
12c10
< Nu˽var˽det˽slut⏎
---
> Nu˽var˽det˽slut.⏎

Detta kan kännas överväldigande första gången man läser det. Precis som vanligt delar vi upp detta i mindre problem, så vi tar det diff för diff:

2c2
< Hejsan˽Viktor!⏎
---
> Hejsan˽Victor!˽⏎

Varje diff börjar med vilka radnummer som är aktuella. Radnumrena syftar alltså på utdatan, inte källkoden. Till exempel betyder 2c2 att rad 2 i facit skiljer sig från rad 2 i det inskickade. Diffen säger dock inte var inom raderna innehållet skiljer sig.

I detta fall kan vi se att "Viktor" är stavat annorlunda, samt att det är ett mellanslag för mycket i den inskickade uppgiften. Automaträttningen är väldigt noggrann!

Vi går vidare till nästa diff:

4,6c4
< Denna˽text˽skiljer˽sig˽mellan⏎
< ⏎
< facit˽och˽inskick.⏎
---
> Denna˽text˽är˽annorlunda.⏎

Det här är ett fall där mer än en rad är annorlunda. 4,6c4 betyder att rad 4-6 i facit skiljer sig från inlämningen på rad 4.

De två följande diffarna ser ut som följande:

8,9d5
< Ett⏎
< Två⏎

10a7,8
> Två⏎
> Ett⏎

Denna situation är lite mer komplicerad. Till exempel säger 8,9d5 att facits rad 8-9 tagits bort till förmån för rad 5 i inskicket. Med 10a7,8 menas det att inskickets rad 7-8 fåtts genom att lägga till efter rad 10 i facit.

Ganska förvirrande, inte sant? I just det här fallet är det nog lättare om vi direkt jämför utdatan från de två versionerna, istället för att bara läsa diffen. Då ser vi att det räcker med att flytta om "Tre, Två, Ett"-raderna.

Försök se själv vad som är fel i den sista diffen:

12c10
< Nu˽var˽det˽slut⏎
---
> Nu˽var˽det˽slut.⏎

Assistenträttning

Generellt om assistenträttning

Efter att uppgiften passerat automaträttningen skickas den vidare för rättning av assistent. På O-uppgifterna måste alla i gruppen ha passerat automaträttningen innan den skickas vidare för assistneträttning. Se därför till ni skickar in uppgiften samma dag när den passerat automaträttningen. Om du inte hinner skicka in samma dag, se till att du skickar in så snart som möjligt. De andra behöver inte skicka in igen.

Vid assistenträttningen kontrollerar en av assistenterna att din inskickade uppgift följer kraven samt att koden ser "bra" ut. Det bör nämnas att det inte nödvändigtvis är "din" assistent som rättar.

När assistenterna rättar uppgifterna använder de sig av verktyget UPPcomm. I UPPcomm finns det ett antal kommentarer för varje uppgift som på olika sätt berör uppgiften. Som student har du också tillgång till UPPcomm, se sidan Assistentkommentarer. För varje kommentar finns en mer utförlig förklaring av vad varje kommentar betyder. Ett tips är att kolla i UPPcomm även när du arbetar med uppgiften för att få en känsla för vilka kommentarer som är vanliga att få på den aktuella uppgiften.

Det är lite olika vad som händer om din uppgift inte blir godkänd i assistenträttningen beroende på om det är en O- eller P-uppgift.

Om din grupp får tillbaka att en O-uppgift behöver kompletteras ändrar ni koden efter kommentarerna och skickar in igen. Det är viktigt att ni fixar till alla kommentarer. Ett tips är att skicka in eventuella kompletteringar så snart som möjligt efter att ni har fått dem.

Om en P-uppgift inte godkänns i assistenträttningen måste du försöka igen på nästa P-pass. Det går alltså inte att komplettera en enskild P-uppgift efter att P-passet är slut.

Kommentarer i UPPcomm

Kommentarerna i UPPcomm kan delas in i fyra grupper:

  • Krav för uppgiften: Dessa berör grundläggande krav för uppgiften. Generellt sett kommer uppgiften inte bli godkänd om din lösning får någon av dessa. Många av kraven i denna kategorin innebär även att vi avbryter rättningen. Det kan alltså finnas fler "fel" i koden som vi inte påpekar i detta fall. Dessa kan komma upp vid nästa rättningsomgång.
  • Viktigt för uppgiften: Dessa kommetarer berör saker som är viktiga för uppgiften, men en eller två av dessa brukar inte vara tillräckligt för direkt komplettering. Dra lärdom av dessa så att du slipper komplettering på senare uppgifter.
  • Viktigt för framtiden: Dessa är inte krav för uppgiften, men kan vara det i senare uppgifter. Om din uppgift får många kommentarer från denna grupp kan din uppgift behöva kompletteras, även om det inte finns några kommentarer från de två ovanstående grupperna.
  • Postivt: Dessa kommentarer markerar någon som är positivt med inskicket.
  • Tips: Dessa kommentarer brukar inte bidra till att du behöver komplettera uppgiften, men är ändå bra att komma ihåg till framtida uppgifter.

Frågor om assistenträttningen

Om du har frågor om kommentarerna från assistenträttningen är det bäst att ta det muntlig med din assistent på nästa programmeringsstuga.


Sidansvarig: Torbjörn Jonsson
Senast uppdaterad: 2023-08-21