This course is designed for students with rather considerable knowledge and experience in computer programming. Different programming paradigms such as Object-Oriented programming and procedural programming will be introduced and the differences between them will be clarified through the use of C and C++. The concept of high performance computing will be introduced and a main objective of the advanced programming course is to get the YSP students to understand the significance of a higher performance achieved by software. The course starts by probing the students' knowledge and skills, then will proceed to cover most of the material of the textbook with the minimum coverage as up to File Processing and Data Structures. Depending on the students background and speed of learning, some Computer Architecture concepts, and their relevance to programming, will be introduced. Programming assignments of different levels and applications will be given throughout the course and the intensive programming assignments will be the primary mean of evaluation. A topic presentation may be required at the end of the course.