This course aims to practice advanced programming techniques including but not limited to object oriented patterns, database back-end applications, text and data files, XML processing, multi-threading, and network programming. The course starts with a review of basic programming constructs and follows object oriented programming practices throughout the course. The subjects covered within the course are as follows: basic programming constructs (sequence, decision making, loops and functions), Swing Library, GUI and Advanced GUI Components, Objects, Classes, Abstract Classes, Interfaces, Collections, Database Connections, Files, XML Files, multi-threading and socket programming. This course uses Java as a Programming Language. The course is taught by Cagin Kazimoglu.