This course continues to explore how to solve problems by programming in Java. Topics include abstract classes and interfaces, event-driven programming, user interface controls, animation and multimedia, binary input/output, recursion, generics, lists, stacks, queues, priority queues, sets, and maps. Students learn programming techniques to solve problems for various applications.