Du hittar kurs-PM för nyare kursomgångar på sidan Kurs-PM.
Presentation av kursen
I den här kursen kommer du lära dig två mycket viktiga programmeringsparadigmer: funktionell programmering och flertrådad proframmering. Det kommer bli en hel del programmering under kursens gång så var beredd på att spendera mycket tid framför datorn.
Bilden till vänster kommer du att skapa genom att skriva ett program som spåra några miljoner ljusstrålar som studsar omkring i rummet. Låter komplicerat men med lite vektoraritmetik så är det enklare än vad man kan tro
Rubriker markerade med en asterisk ( * ) kommer från kursplan version VT 2022
Innehåll och lärandemål
Kursinnehåll
Kursen går igenom dels de programmeringstekniker som används inom funktionella programmeringsspråk, dels hur program kan delas upp i flera exekverande trådar och hur dessa kan koordineras. Exempel på programmeringstekniker är rekursiva definitioner, icke uppdaterbara datastrukturer, högre ordningens funktioner och s.k. “closures”. Koordinering av multipla trådar visas dels genom modifiering av gemensamma datastrukturer dels genom meddelande mellan processer.
Kursen kommer att använda sig av ett programmeringsspråk som huvudspråk men även visa likheter och skillnader med andra funktionella språk.
Lärandemål
Efter godkänd kurs skall studenten kunna
använda sig av rekursion, mönstermatchning och icke modifierbara datastrukturer vid implementering i ett funktionellt programspråk.
För högre betyg skall studenten dessutom kunna
använda funktioner som första ordningens objekt och arbeta med högre ordningens funktioner
förklara grunderna för funktionell programmering, dess uppbyggnad och operationella semantik
utvärdera funktioner med avseende på tidskomplexitet
använda meddelandebaserad flertrådad programmering.
Läraktiviteter
Kursen kommer i år att bestå av föreläsningar som finns förinspelade. Vid schemalagda föreläsningstillfällen kommer vi att ta upp frågor, ge ytterligare förklaringar och diskutera alternativa läsningar på problem.
Vid de schemalagda övningstillfällena kommer det finnas övningsassistenter som hjälper till med de uppgifter som ni har under kursens gång.
Förberedelser inför kursstart
Rekommenderade förkunskaper
Programmeringsvana, grundläggande algoritmer och datastrukturer samt grunderna inom diskret matematik.
Kurslitteratur
Vi kommer under kursens gång att använda handledningar och manualer som finns tillgängliga online.
För de som vill ha en fysisk bok kan vi rekommendera:
Alla föreläsningar, seminarieuppgifter, övningar mm kommer finnas tillgängliga i Canvas.
Utrustning
Du kommer behöva en dator där du kan installera diverse programvara. Du kan klara dig med datorerna som finns i skolan men allt blir mycket enklare om du har din egen burk.
Programvara
Vi kommer i kursen att arbeta med programmeringsspråket Elixir. Du hittar allt du behöver på hemsidan för språket.
Gebnom att installera Elixir får du möjlighet att kompilera och köra program. Du behöver naturligtvis även en ordbehandlare och här får du själv välja en som du är van vid från föregående kurser. Se dock till så att den ordbehandlare du väljer har stöd för att formatera elixirprogram på ett sätt som uderlättar arbetet.
Stöd för studenter med funktionsnedsättning
Om du har en funktionsnedsättning kan du få stöd via Funka:
INL1 - Inlämningsuppgift, 7,5 hp, Betygsskala: A, B, C, D, E, FX, F
Examinator beslutar, baserat på rekommendation från KTH:s samordnare för funktionsnedsättning, om eventuell anpassad examination för studenter med dokumenterad, varaktig funktionsnedsättning.
Examinator får medge annan examinationsform vid omexamination av enstaka studenter.
Avsnittet nedan kommer inte från kursplanen:
Inlämningsuppgifter ( INL1 )
För betyget E skall man dels lösa ett antal programmeringsuppgifter, dels bedömma andras inlämnade uppgifter. Uppgifterna kan komma att redovisas både som programkod, kortare rapporter och muntligt. Dessa uppgifter kommer att handla om grunderna inom funktionell prgrammering.
För högre betyg finns ytterligare fyra programmeringsuppgifter som skall lösas och redovisas. Dessa uppgifter kommer hanlda om: semantik, högre ordnings funktioner, effektivitet och processer.
Etiskt förhållningssätt
Vid grupparbete har alla i gruppen ansvar för gruppens arbete.
Vid examination ska varje student ärligt redovisa hjälp som erhållits och källor som använts.
Vid muntlig examination ska varje student kunna redogöra för hela uppgiften och hela lösningen.