LAB1 - Datorlaborationer, 3,5 hp
Kursen består av 8 laborationer. De obligatoriska heter F2, S1, S2 och W1. Observera att F1 från och med i år varken är obligatorisk eller betygshöjande.
De betygshöjande heter X1, X2, F3 och S3. Varje betygshöjande labb höjer betyget med ett steg enligt skalan E->D->C->B->A. Ordningen som de betygshöjande står skrivna i är den rekommenderade prioriteringsordningen men betyget höjs även om ni väljer en annan ordning.
MAS1 - Mästarprov, 2,5 hp
Individuella uppgifter: mästarprov
Tre obligatoriska individuella uppgifter, mästarprov, kommer att ges. Dessa ska lösas individuellt och redovisas både skriftligt och muntligt. Skriftliga lösningar till dessa uppgifter ska lämnas in i Canvas senast den tid som anges på uppgiftslydelsen. Den muntliga redovisningen, antingen i Zoom eller på campus, kommer att ske några dagar senare för någon av assistenterna på en tid som ska bokas i förväg i Canvas. Redovisningstiden är 10 minuter per student och mästarprov. Vid redovisningen ska du kunna svara på assistentens frågor utan att behöva läsa innantill, men du får ha din inlämning och programkoden som stöd.
Mästarproven är inte betygshöjande utan de ger endast godkänt/icke godkänt.
På de första två mästarproven (Funktionell programmering och Paradigm) gäller: För godkänt krävs att ni har gjort en signifikant insats på alla uppgifter. Ett stort fel på en enda uppgift ger underkänt. Alla studenter har utrymme för ett mindre fel på mästarprovet. Om ni går kursen för första gången och har lämnat in dessa labbar innan deadline F2, S1 och S2 så kan dessa ge utrymme för ytterligare mindre fel, men endast om dessa mindre fel ligger på olika uppgifter. Att lösa F2 innan deadline kan hjälpa er på Funktionell Programmering och Paradigm men inte på mästarprovet i Syntax. Hjälpen, dvs utrymme för extra fel gäller inte ommästarprov eller omregistrerade studenter i kursen.
Mästarprovet i Syntax är indelat i 3 delar. Varje gång det ges så erbjuds alla 3 delarna, men om du klarar 2/3 delar så behöver du inte göra om dessa delar när du skriver det igen. I gengäld så gäller inga bonuspoäng här.
Det viktigaste att fokusera på när ni arbetar med mästarproven är kursens lärandemål. Det är olika lärandemål som examineras på de olika mästarproven. Att missa ett lärandemål innebär underkänt. Det är möjligt att få underkänt på få fel om de ligger på samma uppgift så i dina förberedelser inför mästarprovet är det extra viktigt att fokusera på det eller de lärandemål som du behärskar minst bra.
För funktionell programmering: tillämpa och förklara grundläggande begrepp inom funktionell programmering, särskilt rena funktioner, referenstransparens, högre ordningens funktioner, oföränderlighet (immutability), rekursion (fokus på basfall, rekursivt anrop, svansrekursion och icke-svansrekursion); och datatyper med fokus på stark typning.
För paradigm: tillämpa och förklara allmänna begrepp inom programmering, särskilt kontrollflöde (generellt, inklusive rekursion), interpretering, paradigm, beräkningsmodeller; och typsystem med fokus på hur de skiljer sig åt mellan programmeringsspråk.
För syntaxdelen: tillämpa och förklara grundläggande koncept inom formella språk och syntaxanalys, särskilt automater, reguljära uttryck, grammatiker, lexikal analys, och rekursiv medåkning.
Den som inte fått godkänt (eller inte hunnit lämna in) ordinarie mästarprov får möjlighet att göra ett nytt i slutet av kursen. Om ni inte klarar (eller inte lämnar in) ommästarprovet heller så ges nästa chans under nästa kursomgång. Det kan ske små förändringar i lärandemålen mellan kursomgångarna så håll koll på dessa.
Effektiva sätt att förbereda sig under kursens gång fram tills dess att mästarproven publiceras:
- Läs kurslitteraturen (se kurs-PM). Om du hinner klart med Graham Huttons Haskellbok i funktionell programmering så kan du fortsätta med Structure and Interpretation of Computer Programming (SICP). Hela texten finns gratis online
- Läs Sebestas bok i programmeringsparadigm.
- Skriv labbarna. Det ger dels konkret erfarenhet av att arbeta med de olika paradigmen, dels ger F2, S1 och S2 bonuspoäng som kan användas för att kompensera för att vissa uppgifter bara är halvbra lösta. Ingenting kan dock kompensera för en lösning med grovt fel eller en utebliven lösning på en uppgift.
- Skriv extralabbarna. Även om ni inte hinner klart så kommer träningen att vara bra inför mästarproven.
- Delta i undervisningen med föreläsningar och laborationer.
- Skaffa ett konto på open.kattis.com och välj lagom svåra uppgifter (easy och medium rekommenderas) att lösa i alla möjliga språk i kursen. Fokusera på Haskell för den delen av kursen.
Exempel på gamla mästarprov finns under uppgifter. Titta på dessa för att få en känsla för formatet på mästarprovet, men endast mönstermatchning räcker inte för de flesta studenter. Att läsa och laborera med språken enligt ovan är nödvändigt.