2) Problem Solving and Algorithms

Problem Solving Concept

  • Definition: The process of transforming a problem description into a solution by using knowledge and appropriate strategies.

Key Areas of Learning

  • What is Problem Solving?

  • How to Solve a Problem?

  • Problem Solving Strategies

  • Solving Problems with Computer Software

  • Steps in Software Development Method

  • Design and Representation of Algorithms

  • Programming Errors and Debugging

  • Program Verification and Testing

  • Flowchart and Pseudocode

What is Problem Solving?

  • Definition: A process transforming a problem's description into its solution via knowledge and problem-solving strategies.

Decision-Making in Everyday Life

  • Examples of daily decisions:

    • What to wear?

    • Engage in social activities or remain home?

    • Locating a programming lab.

    • Organizing personal items.

  • Conclusion: Every choice involves problem-solving.

Steps to Solve a Problem

  1. Identify the problem.

  2. Determine the appropriate strategy.

  3. Design the solution.

  4. Execute the solution.

  5. Evaluate the solution's success.

Problem Solving Strategies

  • Common strategies include:

    • Guess and Check (Trial and Error)

    • Start at the End (Working Backwards)

    • Divide and Conquer

    • Look for a Pattern

Guess and Check Strategy

  • Description: Simple strategy involving trials to reach a solution; effective for smaller problems.

Start at the End Strategy

  • Description: Work backward from the desired outcome; also a bottom-up approach.

Divide and Conquer Strategy

  • Description: Break down a larger problem into manageable parts; effective for complex issues.

  • Applied historically, e.g., by Napoleon.

Look for a Pattern Strategy

  • Description: Identify patterns to solve complex problems.

  • Example: Identifying a numeric sequence leads to deriving subsequent values.

Additional Problem Solving Strategies

  • Drawings/Modeling

  • Logical Reasoning

  • Gathering Extra Information

  • Tip: Keep calm; finding solutions requires a clear mind.

Solving Problems with Computers

  • Algorithms represent structured problem solutions involving:

    • Clear problem definition.

    • Analyzing and formulating methods.

    • Describing solutions algorithmically.

    • Flowcharting the algorithm.

    • Implementing and debugging the code.

Software Development Method

  • Steps include:

    1. Requirement Specification

    2. Analysis

    3. Design

    4. Implementation

    5. Testing & Verification

    6. Documentation

Requirement Specification

  • Identifying needs and conditions for a new system; methods include brainstorming, surveys, interviews, and observations.

Analysis Phase

  • Examination and selection of the best approach to meet requirements.

Design Considerations

  1. Compatibility: System interaction.

  2. Extensibility: Ease of adding features.

  3. Reliability: Performance in varied conditions.

  4. Reusability: Efficient code use.

  5. Robustness: Handling errors appropriately.

  6. Usability: Overall user experience.

Algorithm Design

  • Definition: Sequence of steps arranged logically to solve a problem.

  • Must be:

    • Unambiguous

    • Generalizable

    • Correct

    • Finite

Types of Algorithm Representation

  • Flowchart: A graphical representation of an algorithm.

  • Pseudocode: A semi-formal language to describe algorithms.

Writing Pseudocode

  • Basic operations include:

    • Input

    • Output

    • Arithmetic operations

    • Assignments

    • Comparisons

    • Repeat loops

Example Pseudocode

Start

  • Preheat the oven at 180oC

  • Prepare a baking pan

  • Beat butter with sugar

  • Mix them with flour, eggs and essence vanilla

  • Pour the dough into the baking pan

  • Put the pan into the oven

End

Flowcharts

  • Visual tools for algorithm design, consisting of geometrical shapes and flow lines connecting processes, inputs, outputs, and decisions.

Flowchart Symbols

  • Distinct shapes represent different elements:

    • Start/Stop

    • Process

    • Input/Output

    • Decision

    • Connectors

Benefits of Flowcharts

  1. Enhanced communication among stakeholders.

  2. Effective problem analysis.

  3. Clear documentation processes.

  4. Guidance during coding and debugging.

  5. Simplified maintenance of programs.

Problem Solving Process Overview

  • Input -> Process -> Output

Programming Errors

  • Common errors:

    • Syntax Errors: Detected during compilation.

    • Logic Errors: Mistakes in design or analysis phases.

    • Run-time Errors: Causes during execution.

Debugging Techniques

  • Debugging: The process of identifying and correcting programming errors.

    • Involves methods like probing and tracing.

Testing and Verification

  • Ensure the program meets expectations and requirements through rigorous testing with diverse data sets.

Documentation Requirements

  • Well-articulated specifications and user instructions are vital for program usability.

Conclusion

  • Engagement in algorithm design and coding requires practice and adherence to structured methodologies for effective outcomes.