This course utilizes Java as a platform-independent object-oriented programming language and C as platform-based programming language. It introduces advanced programming features through applications. Among those advanced features: building user interface using swing, multi-threaded programming, database connectivity using JDBC, and distributed computing using Remote Method Invocation (RMI). The course also covers the basics of web programming using Java web technologies. Unix/Linux programming tools and environments are introduced. Scripting languages as another problem solving technique is introduced, such as python.