The Intermediate Java programming course builds on the Introduction to Java programming course and builds a strong foundation of object oriented programming concepts used towards solving real world problems. The course follows a hands-on approach with heavy focus on implementation of coding concepts via activities and projects including fun and imaginative graphics, animations and games. The course integrates computational thinking, inspires creativity and further hones analytical thinking and problem solving skills. The course is divided into a series of modules including classes, objects, methods, inheritance and encapsulation, error handling, basic I/O, regular expressions and data structures.