Hej Joakim! Wall of text följer nedan. Kryptokursen är en av de mest inspirerande kurser jag har gått. Krypto är verkligen ett hantverk där man får se vad som går att bygga med diskret matematik, ADK, och en dos programmeringskunskaper. I kursen får du lära dig hur elliptiska kurvor fungerar (som bland annat går att använda för faktorisering), du får implementera SHA-2, AES-128 och Feldman Secret Sharing, du får lära dig om entropi, hur man kan bevisa att man innehar information utan att dela med sig av den (zero-knowledge proofs), metoder för att analysera och knäcka kryptografiska primitiver, vad envägsfunktioner är och vad det har med P != NP att göra samt en massa annat. Kursupplägget är att man lämnar hemläxor (teoripoäng), implementerar algoritmer (implementationspoäng) och presenterar ett ämne inom krypto (presentationspoäng, Douglas väljer ut några ämnen som du kan välja mellan). Poängen summerar till ett betyg, det finns ingen tenta. Inlämningsuppgifterna måste skrivas i Latex. Douglas rättar och du får tillbaka din inlämning på nästa föreläsning. På slutet av kursen så får man "munta" en kvart på Douglas kontor, och där kan man korrigera tidigare misstag och få några extra poäng. Projektet gör man individuellt. Inlämningar och implementationer kan man göra tillsammans med en kompis, men båda måste lämna in sin egen implementation/latexfil. Förra året så kunde man implementera en verifikator för ett digitalt röstsystem (se http://www.verificatum.org/) för extrapoäng. Douglas erbjöd till och med extra föreläsningar i ämnet. Eftersom jag hade kexjobbet så hoppade jag aldrig på det tåget, men det kanske hade varit kul. Är kursen jobbig? Den pågick från typ första januari till 15:e juni (varning :P) så det är en ganska lång kurs. Inlämningsuppgifterna kan vara svåra emellanåt, men man får inte svara på allt (max 50 poäng en inlämning brukar vara 55 poäng) så man kan hoppa över uppgifter som man inte förstår. Implementationerna som skickas till Kattis får man i princip full poäng på om de fungerar. Att algoritmen är långsam behöver man inte oroa sig för, men att få implementationen att fungera kan vara tidsödande (felsöka t ex SHA-2 är i princip omöjligt). Mitt förslag är att du skriver SHA-2 och AES-128 i C och att du använder specifikationen från FIPS (deras specifikationer är, ursäkta språket, skitbra). Den här PDF:en kan vara bra att ha också: https://helix.stormhub.org/papers/SHA-256.pdf Det finns inga övningar i kursen, utan det är föreläsningarna med Douglas som gäller. Kursen är ganska speciell eftersom det inte brukar vara så många som läser den (jag tror vi brukade vara ungefär 7-8 personer på föreläsningarna). Så det finns goda möjligheter att ställa frågor. Douglas ser lite läskig ut, men han är nog snäll innerst inne. Ibland kan han sväva iväg i långa filosofiska resonemang (t ex när han börjar prata om adversaries och sin forskning), men oftast håller han sig till sina slides. Hans förklaring av Pollard's Rho-metod är helt briljant. Ibland kan föreläsningarna vara ganska sega, mitt tips är att passa på att ställa många frågor, Douglas har många intressanta saker att säga, det gäller bara att peta lite på honom. Just det, Douglas kommer ge er tipset att köra Latex i en virtuell maskin (han har tydligen skrivit ett långt script som fixar alltihop). Mitt tips är att ni använder ShareLatex i stället.