kunna förklara grundläggande begrepp inom imperativ programmering, objektorientering och funktionsprogrammering
kunna förklara och ge exempel på enkla algoritmer
kunna beskriva och använda vanliga datatyper för samlingar, som sekvenser, mängder, och nyckel-värdetabeller
känna till olika programmeringsverktyg och grundläggande datoranvändning, som terminal, filsystem, versionshanteringssystem, typsättningsverktyg, och grundläggande förståelse för kopplingen mellan källkod och maskinkod
Färdighet och förmåga
kunna konstruera och implementera algoritmer för att lösa enkla uppgifter
kunna implementera klasser från givna krav
kunna strukturera program med hjälp av klasser och metoder
kunna använda flera olika verktyg för att skriva in, testa och felsöka program
kunna använda flera olika systemutvecklingsverktyg, som Linux-terminalen, LaTeX, Git, kodlagringsplatser
Värderingsförmåga och förhållningssätt
kunna bedöma svårighetsgraden att skriva olika program
kunna bedöma svårigheter och fördelar med föränderliga respektive oföränderliga data
kunna värdera för- och nackdelar mellan olika systemutvecklingsverktyg och värdera deras nytta
Kursinnehåll
Grundläggande programkonstruktioner, konstruktion av enkla algoritmer. Användning av vanliga datatyper för samlingar: sekvenser, mängder, nyckel-värde-tabeller. Grundläggande objektorientering: objekt, klass, inkapsling, arv, polymorfism, oföränderliga objekt, tillståndsförändring. Grundläggande funktionsprogrammering: funktioner som värden, anonyma funktioner, mönstermatchning, använda högre ordningens funktioner. Linux-terminalen, typsättning med LaTeX, introduktion till versionshantering med Git, maskinkodsprogrammering. Som programspråk används huvudsakligen Scala.