To provide students with an overview of programming, problem-solving, testing and debugging. It explores many fundamental programming concepts with emphasis on applying theoretical knowledge to a practical situation. It will introduce students to problem-solving with a view to meeting user requirements and designing solutions to programming problems.