Course Brief

This unit introduces learners to Polya's strategy for problem-solving and progressively provides them with a conceptual tool to solve increasingly complex problems in a programming-language agnostic manner while at the same time intuitively introducing core programming concepts. Topics will include problem representation and description, repetition, storage, and control abstractions.

  • This course is offered in 50 contact hours.

Upon successful completion of this unit, learners will be able to:

  1. Define a generic strategy for solving problems;
  2. Represent problems using appropriate description languages;
  3. Apply selection and repetition;
  4. Solve problems using working storage;
  5. Apply sequence and iteration to solving problems;
  6. Integrate problem-solving with program design.

Define a generic strategy for solving problems:

  • Defining problems, use of abstraction, differentiating between the problem domain and the programming language domain;
  • The stages of solving a problem.


Represent problems using appropriate description languages:

  • Natural language, diagrams and visual thinking, use of numbers and mathematics, use of physical models;
  • Pseudocode.


Apply selection and repetition: 

  • Representing choices and repeated actions.


Solve problems using working storage:

  • Introduction to variables;
  • Using variables in solving more complex problems


Apply sequence and iteration to solving problems:

  • Data abstraction, simple and extended selection, multipart selections, conditional statements, iteration using loops (count controlled, at-least once, Sentinel-controlled)


Integrate problem-solving with program design:

  • Top-down, bottom-up, data structure and data-flow approaches;
  • Graphical notation with an emphasis on flowcharts;
  • Algorithms.