Examinationsdetaljer och betygskriterier

Rekommenderad arbetsinsats i kursen

 

1. Det enskillt mest effektiva sättet att klara kursen är att se sina universitetsstudier som ett heltidsjobb och att sprida ut inlärningen till litegrann varje dag.
2. Kom till de flesta föreläsningar och övningar mätt, utsövd och väl förberedd.
3. De tre L:en är Läsa, Laborera och Logga. I mer detalj nedan.

Läsa, Laborera och Logga

Läs aktivt. Efter varje kapitel, slå ihop boken och försök sammanfatta vad det handlade om. Använd sedan boken som facit för din sammanfattning.
Om du har valt en bok utan övningsuppgifter så kan du behöva göra egna uppgifter, förslagsvis är dessa kopplade till de problem som du vill lösa. Du kan också fylla ut med enkla uppgifter från Kattis Links to an external site..
Det sista L:et är att logga dina insatser. Skapa ett dokument, förslagsvis på google docs eller liknande och ha för vana att i slutet av varje pluggdag skriva några stödord eller frågor som dykt upp under dagens studier. Skriv också en timestamp, till exempel 2020-01-15. Gå sedan tillbaka en dag, en vecka, en månad och ett år för att se vad du gjorde den dagen. Du kan läsa mer om detta på KTH:s gruppwebb för studieteknik.

 

Tanken bakom betygssättningen

Målet med vår betygssättning är att betygssystemet ska vara enkelt att förstå, det ska belöna olika former av fördjupning inom ämnet och det ska vara enkelt för lärare och assistenter att bedöma. En student som har fått ett E i kursen har vidgat sina vyer genom att bemästra ett antal paradigmer och problemområden.

Ladokmoment

Kursen har två obligatoriska moment i Ladok.

  • LAB1 - Laborationer, 3,5 hp, betygsskala: A, B, C, D, E, FX, F
  • TEN1 - Tentamen, 2,5 hp, betygsskala: P, F

Nedan följer med detaljerad information om dessa moment.

Laborationer

Fem obligatoriska datorlabbar ingår i kursen. Dessa heter F1, F2, INET, S1 och S2. Dessa behöver utföras för att få godkänt i kursen.

Utöver dessa finns det fyra betygshöjande: F3, X1, X2 och S3. Varje labb ni löser innan deadline (se nedan) höjer ert betyg med ett betygssteg.

Det är tillåtet att labba ensam eller två och två. Om ni labbar i par så behöver båda i paret kunna redogöra för all kod annars får bara den ena godkänt. Om ni under labbens gång upptäcker att det är ett såpass stort kunskapsgap mellan er båda att den ena gör mycket mer än den andra, bryt upp paret. Ni kommer ändå inte att få godkänt båda två.

För bonusdatum och deadlines, se sidan Kursöversikt som finns i vänstermarginalen.

Det rekommenderas som alltid att sprida ut inlärningen eftersom det inte är mänskligt möjligt att genomföra extralabbarna på alltför kort tid.

Betyg Vilka laborationer krävs
E Alla obligatoriska
D 1 betygshöjande laboration
C 2 betygshöjande laborationer
B 3 betygshöjande laborationer
A 4 (samtliga) betygshöjande laborationer.

 

Det finns schemalagda labbtillfällen under hela kursen. Det kommer att finnas handledare tillgängliga på dessa labbpass. Börja att göra labbarna i god tid och fråga handledarna om du får problem. Du kan i princip redovisa alla labbarna vid alla labbtillfällen, men under det sista labbtillfället för varje labb så prioriteras redovisningar av den labben.

Varje obligatorisk labb har även ett bonusdatum. Varje obligatorisk labb som blir färdig före sitt bonusdatum sänker kraven på sin efterföljande kontrollskrivning (se nedan), men inte på tentan.

Kontrollskrivningar

Kursen har 2 kontrollskrivningar (KS:ar). En i påsk på funktionell programmering och programmeringsparadigm samt en i maj i syntaxanalys. Dessa KS:ar kan tas istället för motsvarande del på tentan, så de studenter som klarar alla delmoment på KS:arna behöver inte skriva tentan alls.

För att klara kontrollskrivningen så behöver du vara bekant med kursinnehållet och lärandemålen från kurskatalogen, men du behöver inte slå upp dessa där för de står listade på sidan med nyckelbegrepp i kursen. En lista med nyckelbegrepp i formella språk och syntaktisk analys finns på en separat sida. Om du vill läsa på om dessa begrepp så rekommenderas kurslitteraturen, föreläsningsanteckningar och Wikipedia. Om du vill öva på dem rekommenderas att gå på föreläsningarna, göra labbarna och uppgifterna i kursboken. Passa på att ta hem färdig kod från tutorials och föreläsningar - läs, studera, förändra den och försök förstå vad som händer. Om du får tid över, gör fler uppgifter på Kattis Links to an external site..

På kontrollskrivningarna kommer ett antal teorifrågor inom ämnet. För att få godkänt behöver du svara rätt på samtliga frågor utom en där du tillåts ha ett halvt grovt fel, dvs ett fel som hade gett poängavdrag. Om du har klarat några laborationer innan bonusdatum så får du för varje uppnått bonusdatum utrymme för att göra ytterligare ett halvt grovt fel på nästa kontrollskrivning.

[Förtydligande 2021-04-29T23:47 För godkänt med hjälp av bonuspoäng så behöver de halvgrova felen vara på olika uppgifter. Ett grovt fel på en uppgift ger underkänt oavsett bonuspoäng.]

Det kommer att inte vara någon programmering på KS:en utan fokus kommer att ligga på teorifrågor. Ett bra sätt att öva på dessa teorifrågor är dock att programmera.
Under pandemin ges KS och tenta som ett tidsbegränsat quiz i ett speciellt Canvasrum. Under KS:en/tentan så kan du ställa frågor till assistenter via Zoom precis som under ett labbpass. KS1 kommer inte att ha Zoomövervakning.
Dessa regler gäller för KS:ar och tentor under pandemin.

Tentamen

Tentamen består av kontrollskrivningarna och rättas på samma sätt bortsett från att bonuspoängen från F1, F2, S1 och S2 inte gäller längre. Däremot gäller bonuspoängen från Inet, så om den labben var klar på bonusdatumet (se detaljplan) så får du utrymme för ett halvgrovt fel till.

Arbetssituationer

Examinationsmomenten är tänkta att motsvara arbetssituationer. Funktionell programmering.

  • Facebook har använt Haskell för att skriva ett DSL för att filtrera spam.
  • Googles map-reduce använder funktionella principer för att snabbt parallellisera enorma beräkningar och sökningar.
  • C++, C#, Java, Javascript och Python har alla implementerat språkfunktioner som motsvarar de funktionella för att göra vissa problem enklare och effektivare att angripa.

Programmeringsparadigmer lär dig konsultens arbete.

  • Du får snabbt sätta dig in i ett nytt programmeringsspråk och lösa problem i det för att sedan kasta dig in i nästa språk.
  • Precis som funktionell programmering så har varje paradigm riktiga problem som de gör enklare. Prolog används till exempel för att dimensionera flygplan.

Inet lär dig en av de vanligaste programmeringsuppgifterna.

  • Att skriva servrar och klienter samt att dokumentera dessa är en mycket vanlig arbetsuppgift i näringslivet.

Syntaxanalys är vad programmeringsspråken gör hela tiden.

  • Vissa programmerare designar nya programspråk eller åtminstone domänspecifika språk. Dessa behöver parsers och kompilatorer och det behöver du.
  • Även om du inte gör egna programspråk så behöver du förhålla dig till begränsningarna som kontextfria grammatiker och liknande lägger på språk och det får du lära dig genom labbarna och tentan i kursen.
  • Verktygen (regexpar och liknande) är användbara till en hel del annat, till exempel att läsa olika former av indata som formulär, mätserier eller loggar.

Gamla extentor och kontrollskrivningar finns på Kth Social.