This course is designed to provide a general introduction to problem solving, structured algorithm design, as well as, an introduction to programming using a structured High Level Language. The problem-solving component will focus on analysis of problems. The structured algorithm design component will focus on techniques used to represent an algorithm design, testing the correctness of algorithms and measuring the efficiency of algorithms. This course will also introduce students to different types of High Level Languages. The main areas which will be covered in the introduction to programming are data types, input/output operations, control structures and subprograms.