För att kunna konstruera programkomponenter som är förändringsbara, återanvändbara och resurssnåla krävs goda kunskaper om såväl avancerade språkkonstruktioner och programmeringstekniker som om dataabstraktion, datastrukturer och algoritmer. Kursens syfte är att ge studenterna utökade kunskaper om objektorienterade programmeringstekniker och om ett urval av algoritmer och datastrukturer lämpade för lösning av vanligt förekommande problem. Kursen skall också ge de färdigheter som krävs för att förstå och utnyttja moderna bibliotek för objektorienterad programmering som implementerar klassiska datastrukturer och algoritmer.