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, 2 hp, betygsskala: A, B, C, D, E, FX, F
  • MAS1 - Mästarprov 2,5 hp, betygsskala: P, F

Nedan följer med detaljerad information om dessa moment.

Laborationer

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

Utöver dessa finns det fem betygshöjande: F2, 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 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. F2 rekommenderas starkt för detta betyg.
C 2 betygshöjande laborationer
B 3 betygshöjande laborationer
A 4 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 och F2 har även ett bonusdatum. Varje obligatorisk labb som blir färdig före sitt bonusdatum sänker kraven på sin efterföljande mästarprov, men inte på ommästarprovet.

Varje examaminerad laboration behöver vara väl dokumenterad och uppdelad i funktioner/metoder/klasser eller annan lämplig strukturering för just ditt programmeringsspråk för godkänt.

Mästarprov

På mästarproven kommer ett antal teori och programmeringsuppgifter som ni ska lösa som en tenta, hemma under en veckas tid utan att samarbeta med någon annan. Inte ens er labbpartner. När ni har lämnat in ert mästarprov så behöver ni boka tid för att redovisa er inlämning för en assistent. Assistenten kommer att ha läst er uppgift och ni kommer att få 10 minuter på er att besvara några frågor som assistenten har om inlämningen. Om ni klarar den skriftliga och den muntliga delen så får ni godkänt på mästarprovet.

Kursen har 3 mästarprov. Två i påsk på funktionell programmering och programmeringsparadigm samt en i maj i syntaxanalys. Dessa mästarprov utgör tillsammans momentet MAS1 i LADOK och MAS1 ersätter den gamla tentan och dess KS:ar.

För att klara mästarproven 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..

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, Python och Rust har alla implementerat språkfunktioner som motsvarar de funktionella för att göra vissa problem enklare och effektivare att angripa.
  • På TCS-gruppen forskas det mycket på formell programverifikation vilket möjliggör program utan buggar och här används funktionella språk, exempelvis Coq, Hol och Agda. Dessa kan även användas som stöd för matematiska bevis Links to an external site..

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 (som inte längre är del av kursen) 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. Uppgifterna där påminner om de som kommer på mästarproven.

Mästarprovet har en muntlig redovisning som påminner om en anställningsintervju.