Algorithms and Problem Solving - PowerPoint PPT Presentation


PPT – Algorithms and Problem Solving PowerPoint presentation | free to download - id: 7a9fe6-ODdmM


The Adobe Flash plugin is needed to view this content

Get the plugin now

View by Category
About This Presentation

Algorithms and Problem Solving


Algorithms and Problem Solving – PowerPoint PPT presentation

Number of Views:32
Avg rating:3.0/5.0
Slides: 30
Provided by: Laho7
Learn more at:


Write a Comment
User Comments (0)
Transcript and Presenter's Notes

Title: Algorithms and Problem Solving

Algorithms and Problem Solving
Lecture Objectives
  • Learn about problem solving skills
  • Explore the algorithmic approach for problem
  • Learn about algorithm development
  • Become aware of problem solving process

Problem Solving
  • Programming is a process of problem solving
  • Problem solving techniques
  • Analyze the problem
  • Outline the problem requirements
  • Design steps (algorithm) to solve the problem
  • Algorithm
  • Step-by-step problem-solving process
  • Solution achieved in finite amount of time

Problem Solving Process
  • Step 1 - Analyze the problem
  • Outline the problem and its requirements
  • Design steps (algorithm) to solve the problem
  • Step 2 - Implement the algorithm
  • Implement the algorithm in code
  • Verify that the algorithm works
  • Step 3 - Maintenance
  • Use and modify the program if the problem domain

Analyze the Problem
  • Thoroughly understand the problem
  • Understand problem requirements
  • Does program require user interaction?
  • Does program manipulate data?
  • What is the output?
  • If the problem is complex, divide it into
  • Analyze each subproblem as above

What is an algorithm?
  • The idea behind the computer program
  • Stays the same independent of
  • Which kind of hardware it is running on
  • Which programming language it is written in
  • Solves a well-specified problem in a general way
  • Is specified by
  • Describing the set of instances (input) it must
    work on
  • Describing the desired properties of the output

What is an algorithm? (Contd)
  • Before a computer can perform a task, it
    must have an algorithm that tells it what to do.
  • Informally An algorithm is a set of steps that
    define how a task is performed.
  • Formally An algorithm is an ordered set of
    unambiguous executable steps, defining a
    terminating process.
  • Ordered set of steps structure!
  • Executable steps doable!
  • Unambiguous steps follow the directions!
  • Terminating must have an end!

What is an algorithm? (Contd)
Important Properties of Algorithms
  • Correct
  • always returns the desired output for all legal
    instances of the problem.
  • Unambiguous
  • Precise
  • Efficient
  • Can be measured in terms of
  • Time
  • Space
  • Time tends to be more important

Representation of Algorithms
  • A single algorithm can be represented in many
  • Formulas F (9/5)C 32
  • Words Multiply the Celsius by 9/5 and add 32.
  • Flow Charts.
  • Pseudo-code.
  • In each case, the algorithm stays the same the
    implementation differs!

Representation of Algorithms (Contd)
  • A program is a representation of an
    algorithm designed for computer applications.
  • Process Activity of executing a program, or
    execute the algorithm represented by the program
  • ? Process Activity of executing an algorithm.

Expressing Algorithms
  • English description
  • Pseudo-code
  • High-level programming language

More precise
More easily expressed
  • Pseudocode is like a programming language but its
    rules are less stringent.
  • Written as a combination of English and
    programming constructs
  • Based on selection (if, switch) and iteration
    (while, repeat) constructs in high-level
    programming languages
  • Design using these high level primitives
  • Independent of actual programming language

Pseudocode (Contd)
Example The sequential search algorithm in
Algorithm Discovery
  • The Two Steps of Program Development
  • 1. Discover the algorithm.
  • 2. Represent the algorithm as a program.
  • Step 2 is the easy step!
  • Step 1 can be very difficult!
  • To discover an algorithm is to solve the problem!

Problem Solving A creative process
  • Problem solving techniques are not unique to
    Computer Science.
  • The CS field has joined with other fields to try
    to solve problems better.
  • Ideally, there should be an algorithm to
    find/develop algorithms.
  • However, this is not the case as some problems do
    not have algorithmic solutions.
  • Problem solving remains an art!

Problem Solving Strategies
  • Working backwards
  • Reverse-engineer
  • Once you know it can be done, it is much easier
    to do
  • What are some examples?
  • Look for a related problem that has been solved
  • Java design patterns
  • Sort a particular list such as David, Alice,
    Carol and Bob to find a general sorting algorithm
  • Stepwise Refinement
  • Break the problem into several sub-problems
  • Solve each subproblem separately
  • Produces a modular structure
  • K.I.S.S. Keep It Simple Stupid!

Stepwise Refinement
  • Stepwise refinement is a top-down methodology in
    that it progresses from the general to the
  • Bottom-up methodologies progress from the
    specific to the general.
  • These approaches complement each other
  • Solutions produced by stepwise refinement posses
    a natural modular structure - hence its
    popularity in algorithmic design.

Object-Oriented Design Methodology
  • Four stages to the decomposition process
  • Brainstorming
  • Filtering
  • Scenarios
  • Responsibility algorithms

Class-Responsibility-Collaboration (CRC) Cards
  • A group problem-solving technique that involves
    the spontaneous contribution of ideas from all
    members of the group
  • All ideas are potential good ideas
  • Think fast and furiously first, and ponder later
  • A little humor can be a powerful force
  • Brainstorming is designed to produce a list of
    candidate classes

  • Determine which are the core classes in the
    problem solution
  • There may be two classes in the list that have
    many common attributes and behaviors
  • There may be classes that really dont belong in
    the problem solution

  • Assign responsibilities to each class
  • There are two types of responsibilities
  • What a class must know about itself (knowledge)
  • What a class must be able to do (behavior)
  • Encapsulation is the bundling of data and actions
    in such a way that the logical properties of the
    data and actions are separated from the
    implementation details

Responsibility Algorithms
  • The algorithms must be written for the
  • Knowledge responsibilities usually just return
    the contents of one of an objects variables
  • Action responsibilities are a little more
    complicated, often involving calculations

Computer Example
  • Lets repeat the problem-solving process for
    creating an address list
  • Brainstorming and filtering
  • Circling the nouns and underlining the verbs

Computer Example (Contd)
  • First pass at a list of classes

Computer Example (Contd)
  • Filtered list

CRC Cards
Responsibility Algorithms