Designing computer programs; programming language fundamentals; flow control and data structures; object-oriented programming; exception handling and garbage collection; logic programming: inheritance, class hierarchy, polymorphism.