This course equips the students with theory and practice on problem solving techniques by using two approaches, namely the structured approach and the object oriented approach. The first part of the course provides students with basic skills to program in Linux platform and advanced concepts in programming techniques including advanced files, pointers and structured data. The second part of the course is to provide students with object-oriented techniques such as class, objects, overloading, aggregation and inheritance.