Object oriented concepts and language constructs such as interface, inner classes, exceptions and generics. Important general interfaces such as Iterator, ListIterator, Comparable and Comparator. Overview of graphical interfaces. Recursion as a technique to construct and implement algorithms. Common abstract data types: Set, Queue, Stack, List and Dictionary and their corresponding classes in the Java API. Data structures which can be used to implement common abstract data types as arrays, linked lists, trees and hash tables. Simple algorithms for efficient sorting. Introduction to techniques for analysing the time complexity of algorithms.