När programvara körs kräver den resurser i form av tid, minne, energi, med mera. Utvecklare behöver vara medvetna om sina systems resursanvändning och vidta proaktiva och reaktiva åtgärder för att säkerställa att systemen använder resurserna effektivt. Detta kräver en viss förståelse för den underliggande hårdvaran och inte minst en vilja och förmåga att tillämpa kunskapen när programvara konstrueras, implementeras och analysers. Syftet med den här kursen är att förse studenterna med den kunskap, förmågor och attityder som krävs för att bli en skicklig utvecklare av effektiva system som kör snabbare, kräver mindre minne och förbrukar mindre energi. De grundläggande koncepten och idéerna som introduceras under kursen illustreras och tillämpas genom programspråket C++. Även om kursen inte kräver några förkunskaper inom C++ så förväntas studenterna ha tillräckligt med kunskap och erfarenheter av imperativa och objektorienterad språk (t.ex. C och Java) för att snabbt och självständigt kunna lära sig språkets grunder via kurslitteraturen och andra resurser som tillhandahålls.
Förväntade studieresultat
Kunskap och förståelse Efter avslutad kurs ska studenten kunna:
(FSR 1) beskriva prestandarelaterade funktioner hos processorer (t.ex. kärnor, pipeliner, vektorinstruktioner, frekvensskalning, hårdvarutrådar) och förklara deras påverkan på prestandaprogrammering;
(FSR 2) beskriva prestandarelaterade funktioner hos minnessystemet i hårdvara och programvara (t.ex. minneshierarkier, virtuellt minne, dynamisk minnesallokering) och förklara deras påverkan på prestandaprogrammering;
(FSR 3) förklara koncept relaterade till prestandaprogrammering och -analys (t.ex. latens, bandbredd, prestanda, skalbarhet, energieffektivitet).
Färdighet och förmåga Efter avslutad kurs ska studenten kunna:
(FSR 4) utvärdera programvaras effektivitet med avseende på tid, minne och energi genom en kombination av analytiska och empiriska metoder;
(FSR 5) använda empiriska metoder i kombination med algoritmanalys för att identifiera troliga orsaker till prestandarelaterade problem i programvara och sedan skriftligt dokumentera resultaten;
(FSR 6) skriva högpresterande och underhållbar kod i programspråket C++ samt diskutera dessa aspekter vid kodgranskning.
Värderingsförmåga och förhållningssätt Efter avslutad kurs ska studenten kunna:
(FSR 7) avgöra om och i sådana fall hur en viss teknik för prestandaoptimering är lämplig i en viss kontext genom att i förväg uppskatta för- och nackdelar;
(FSR 8) studera, sammanfatta och muntligt diskutera vetenskapliga och tekniska artiklar om ämnen relaterade till prestandraprogrammering.
Behörighetskrav
Minst 60 hp datavetenskap. Minst 7,5 hp programmering; 7,5 hp datastrukturer och algoritmer; 7,5 hp objektorienterad programmering; 7,5 hp systemprogrammering; 15 hp matematik varav 7,5 hp diskret matematik.
Undervisningens upplägg
Undervisningen består av föreläsningar, seminarier och praktiska övningar. Utöver deltagande i schemalagda aktiviteter krävs självständigt arbete med kursmaterialet.
Examination
Examinationen består av en skriftlig salstentamen (FSR 1, 2, 3), skriftliga inlämningsuppgifter (FSR 4, 5, 6), och seminarier som innehåller inslag av kodgranskning och muntliga presentationer (FSR 6, 7, 8). På kursen ges något av betygen Underkänd (U), Godkänd (3), Icke utan beröm godkänd (4), Med beröm godkänd (5).
Anpassad examination Examinator kan besluta om avsteg från kursplanens examinationsform. Individuell anpassning av examinationsformen ska övervägas utifrån studentens behov. Examinationsformen anpassas inom ramen för kursplanens förväntade studieresultat. Student som har behov av en anpassad examination ska senast 10 dagar innan examinationen begära anpassning hos Institutionen för datavetenskap. Examinator beslutar om anpassad examination som sedan meddelas studenten.
Övriga föreskrifter
Om kursplanen har upphört att gälla eller kursen slutat erbjudas garanteras en student som någon gång registrerats på kursen minst tre provtillfällen (inklusive ordinarie provtillfälle) enligt denna kursplan under en tid av maximalt två år från det att kursplanen upphört att gälla eller kursen slutat erbjudas.
Litteratur
Giltig från:
2023 vecka 26
C++ High Performance - Second Edition Bjorn Andrist , Ben Garney , Viktor Sehr 2020 : Obligatorisk Läsanvisning: Finns både som häftad och som e-bok. ISBN 978-1839216541.