kunna definiera och förklara viktiga koncept och språkkonstruktioner inom objektorienterad programmering.
kunna beskriva abstrakta datatyper som t.ex. listor, stackar, köer, prioritetsköer, mängder och nyckel-värde-tabeller och deras tillämpningar.
kunna beskriva datastrukturer som länkade listor, binära träd, heapar och hashtabeller och förklara hur de kan användas för att implementera fundamentala abstrakta datatyper.
Färdighet och förmåga
kunna tillämpa avancerade objektorienterade koncept och språkkonstruktioner i programspråket Java.
kunna använda moderna objektorienterade standardbibliotek.
utgående från en problembeskrivning kunna identifiera abstrakta datatyper, algoritmer och datastrukturer som är lämpliga att använda för att lösa problemet.
kunna implementera fundamentala abstrakta datatyper och algoritmer i programspråket Java.
kunna formulera och implementera rekursiva algoritmer.
kunna skriva program med ett enkelt grafiskt användargränssnitt i Java.
kunna använda automatiska tester som stöd vid utveckling av mjukvara.
kunna tillämpa enkla tekniker för att analysera algoritmer med avseende på tidseffektivitet och uppskatta deras tidsåtgång.
Värderingsförmåga och förhållningssätt
kunna konstruera program som är lätta att förstå och modifiera
ha utvecklat ett kritiskt förhållningssätt till hur val av lösningsmetod och representation påverkar programs användbarhet och effektivitet
Kursinnehåll
Objektorienterade begrepp och språkkonstruktioner såsom arv, interface, nästlade klasser, felhantering (exceptions), parametriserade typer (generik), lambdauttryck och strömmar. Viktiga generella interface som Iterable, Comparable och Comparator. Vanliga abstrakta datatyper som listor, stackar, FIFO-köer, prioritetsköer, mängder och nyckel-värde-tabeller samt Javas standardbibliotek för dessa. Datastrukturer som länkade listor, binära träd, heapar och hashtabeller, och hur de kan användas för att implementera fundamentala abstrakta datatyper. Rekursion samt tekniker som dynamisk programmering och backtracking. Orientering om ramverk för grafiska användargränssnitt samt händelsestyrd programmering. Något om verktyg för testning. Orientering om tekniker för att analysera algoritmers och datastrukturers tidseffektivitet.
Förutsättningar
EDAA10 Programmering i Java eller EDAA70 Inledande programmering med Python eller EDAA80 Programmeringsteknik, grundkurs eller EDAA81 Programmeringsteknik, grundkurs eller EDAA85 Programmeringsteknik, grundkurs eller EDAA90 Programmeringsteknik och databaser, grundkurs eller TFRE15 Programmeringsteknik, grundkurs eller TFRE30 Grundkurs i programmering