Kursen består av föreläsningar (med krav på minst 80 % närvaro) och eget arbete i projektgrupper om tre personer.
DD2489 Skalbar programutveckling med funktionell programmering 7,5 hp
Det största problemet med utveckling och förvaltning av stora system är komplexitet — stora system är svåra att förstå. [Out of the Tar Pit, av Moseley och Marks, 2006]. En stor del av denna komplexitet är oavsiktligt introducerad av vårt sätt att hantera programmens tillstånd. Den här kursen kommer att berika deltagarna i hur funktionell programmering drastiskt kan minska oavsiktlig komplexitet och skapa en kodbas som är enklare att förvalta och resonera kring. Funktionell programmering är ett paradigm som fokuserar på värden och matematiska funktioner istället för muterbara objekt och imperativa instruktioner. I ett funktionellt programspråk så är hantering av tillstånd typiskt förflyttat till randen av programmet. Eftersom god koddesign är ett intersubjektivt begrepp så måste vi ha en bra dialog tillsammans i kursen. Vi behöver vara öppna för varandras idéer, dela våra perspektiv och erfarenheter och kontinuerligt reflektera kring egna och andras erfarenheter i kursen. Ökade erfarenheter ger empirisk kunskap, intuition och sensorer som hjälper till att undvika oavsiktlig komplexitet, skapa lämpliga abstraktioner och utveckla en hållbar kodbas. Vi kommer att använda principen entydig källa för sanning (single source of truth) med atomära uppdateringar. På kurswebben kan du se hur biblioteket re-frame beskriver dessa begrepp.
Information per kursomgång
Information för HT 2024 skalutv24 programstuderande
- Studielokalisering
KTH Campus
- Varaktighet
- 2024-10-28 - 2025-01-13
- Perioder
- P2 (7,5 hp)
- Studietakt
50%
- Anmälningskod
52257
- Undervisningsform
Normal Dagtid
- Undervisningsspråk
Engelska
- Kurs-PM
- Kurs-PM är inte publicerat
- Antal platser
Ingen platsbegränsning
- Målgrupp
Öppen för studenter antagna på ett masterprogram under förutsättning att kursen kan ingå i programmet.
- Planerade schemamoduler
- [object Object]
- Schema
Kontakt
Tomas Ekholm (tomase@kth.se)
Kursplan som PDF
Notera: all information från kursplanen visas i tillgängligt format på denna sida.
Kursplan DD2489 (HT 2023–)Innehåll och lärandemål
Kursupplägg
Kursinnehåll
Föreläsningarna består av mycket livekodning, praktisk vägledning, kodgranskning och dialog kring hur vi kan förbättra programkodens arkitektur och design. Detta kräver ett aktivt deltagande och en öppen positiv atmosfär på föreläsningarna. Tanken med föreläsningarna är att entusiasmera och bredda perspektiven kring storskalig programvaruutveckling.
Föreläsningarna är obligatoriska eftersom kursen baseras på vår gemensamma dialog och det aktiva deltagande som inkluderas i den.
Huvudsakligt innehåll: funktionell programmering, kodkvalitet, läsbarhet, förvaltningsbarhet, samarbete, versionshantering (git), globalt tillstånd, beroenden, matematiska funktioner, persistenta data strukturer, hantering av applikationers tillstånd, reaktiv programmering, webbutveckling, testbarhet, test som dokumentation, jämförelse med objektorienterad programmering, atomära uppdateringar av tillstånd, samtidiga förlopp (concurrency), DSL, Lisp och REPL.
Programspråken Clojure och ClojureScript används för att förverkliga kursens innehåll i ett projekt. Därmed kommer även kursen att ge gedigna kunskaper i Lisp, Clojure, Clojure Spec och REPL workflow.
Varje vecka kommer studenterna att få se en video med en konferenspresentation. Tanken är att den ska ge inspiration och öppna nya dörrar. Under föreläsningarna kommer vi att reflektera över innehållet.
Lärandemål
Efter godkänd kurs ska studenten kunna
- designa, med hjälp av funktionell programmering, stora system så att de blir enkla att testa, förstå och förvalta
- modellera information i ett program genom endast icke-muterbara data
- reflektera över och diskutera hur arkitektur och design kan förbättras
- reflektera över begreppen identitet, tillstånd och värde
- skapa entiteter och komponenter så att de blir enkla att testa samt skriva test för dem
- skydda intern design av ett program vid integration med andra system
- utveckla ett program i samarbete med andra
- granska och reflektera över given programkod
- förvalta given programkod
i syfte att
- förstå och behärska de parametrar inom programvaruutveckling som gör programkod hållbar, återanvändbar och flexibel inför förändrade krav.
Kurslitteratur och förberedelser
Särskild behörighet
Kunskaper i programutvecklingsteknik, 6 hp, motsvarande slutförd kurs DD2480/DD1367/DD1369/DD1392/DD1393/DD1346/DD1387/DD1388/DD2387/IV1303/H I1027/HI1201/DD1385/DD2385. Aktivt deltagande i kursomgång vars slutexamination ännu inte är Ladokrapporterad jämställs med slutförd kurs. Den som är registrerad anses vara aktivt deltagande. Med slutexamination avses både ordinarie examination och det första omexaminationstillfället.
Utrustning
Kurslitteratur
Examination och slutförande
När kurs inte längre ges har student möjlighet att examineras under ytterligare två läsår.
Betygsskala
Examination
- PRO1 - Programvaruutvecklingsprojekt, 7,5 hp, betygsskala: P, F
Examinator beslutar, baserat på rekommendation från KTH:s handläggare av stöd till studenter med 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.
Möjlighet till komplettering
Möjlighet till plussning
Examinator
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.
Ytterligare information
Kursrum i Canvas
Ges av
Huvudområde
Utbildningsnivå
Påbyggnad
Kontaktperson
Övrig information
Kursen ersätter DD2487 och kan inte kombineras med denna.
I denna kurs tillämpas EECS hederskodex, se:
http://www.kth.se/eecs/utbildning/hederskodex
Övriga föreskrifter
Denna kurs innehåller ett grupparbete. Kursregistrering efter den officiella registreringsperioden är därför inte möjligt, eftersom vi behöver skapa grupperna i början av kursen.