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 utföra enkla tester med hjälp av ett testverktyg.
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
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 eller EDA011 Programmeringsteknik eller EDA016 Programmeringsteknik eller EDA017 Programmeringsteknik eller EDA501 Programmering eller EDAA10 Programmering i Java eller EDAA20 Programmering och databaser eller EDAA45 Programmering, grundkurs eller EDAA50 Programmeringsteknik eller EDAA55 Programmeringsteknik eller EDAA65 Programmering eller EDAB05 Programmering, grundkurs