Prerequisite(s): CSIT 104 with a grade of C- or higher; CSIT 111 with a grade of C- or higher; and MATH 111 with a grade of C- or higher or placement through the Montclair State University Placement Test (MSUPT) or MATH 122 with a grade of C- or higher or AMAT 120 with a grade of C- or higher. This course is the continuation of CSIT-111, which already covered the fundamentals of basic Java programming including data, expression, classes, conditionals, and loops. In this class, the object-oriented design concepts will be discussed with examples. The techniques of inheritance and polymorphism will be studied in depth. Interface, sorting, searching, recursion, file I/O, GUI, and multithreading will also be introduced as well.