Introduction to Systematic Program Design - Part 1