This course aims to introduce the students to some concepts of advanced programming and practice on reusing components using Java. The course focuses on Graphical User Interface (GUI), multithreading, networking, and database manipulation. By completing this course, the students should be able to write and develop  Java applications.