By the end of this course, the students will be able to translate a computational problem into a computer program that solves it. This will be achieved using fundamental programming principles, such as algorithm flow-charts, condition and iteration structures, f?unction and subroutines recursion and programming complexity.