SlideShare a Scribd company logo
Chapter 6
Problem Solving
and Algorithm Design
2
Chapter Goals
• Determine whether a problem is suitable for a
computer solution
• Describe the computer problem-solving process
and relate it to Polya’s How to Solve It list
• Distinguish between following an algorithm and
developing one
• Describe the pseudocode constructs used in
expressing an algorithm
• Use pseudocode to express an algorithm
3
Chapter Goals
• Apply top-down design methodology to develop
an algorithm to solve a problem
• Define the key terms in object-oriented design
• Apply object-oriented design methodology to
develop a collection of interacting objects to
solve a problem
• Discuss the following threads as they relate to
problem solving: information hiding, abstraction,
naming things, and testing
4
Problem Solving
Problem solving
The act of finding a solution to a perplexing,
distressing, vexing, or unsettled question
How do you define problem solving?
5
Problem Solving
How to Solve It: A New Aspect of
Mathematical Method by George Polya
"How to solve it list" written within the
context of mathematical problems
But list is quite general
We can use it to solve computer
related problems!
6
Problem Solving
How do you solve problems?
Understand the problem
Devise a plan
Carry out the plan
Look back
7
Strategies
Ask questions!
– What do I know about the problem?
– What is the information that I have to process
in order the find the solution?
– What does the solution look like?
– What sort of special cases exist?
– How will I recognize that I have found
the solution?
8
Strategies
Ask questions! Never reinvent the wheel!
Similar problems come up again and again
in different guises
A good programmer recognizes a task or
subtask that has been solved before and
plugs in the solution
Can you think of two similar problems?
9
Strategies
Divide and Conquer!
Break up a large problem into smaller units
and solve each smaller problem
– Applies the concept of abstraction
– The divide-and-conquer approach can be
applied over and over again until each
subtask is manageable
10
Algorithms
Algorithm
A set of unambiguous instructions for solving a
problem or subproblem in a finite amount of time
using a finite amount of data
Why must instructions be unambiguous?
Why must time and data be finite?
11
Computer Problem-Solving
Analysis and Specification Phase
Analyze
Specification
Algorithm Development Phase
Develop algorithm
Test algorithm
Implementation Phase
Code algorithm
Test algorithm
Maintenance Phase
Use
Maintain
Can you
name
a recurring
theme?
12
Phase Interactions
Should we
add another
arrow?
(What happens
if the problem
is revised?)
13
Pseudocode
Pseudocode
A mixture of English and formatting to
make the steps in an algorithm explicit
Algorithm to Convert base-10 number to other bases
While ( the quotient is not zero )
Divide the decimal number by the new base
Make the remainder the next digit to the left in the answer
Replace the original decimal number with the quotient
14
Following an Algorithm
Figure 6.4 A recipe for Hollandaise sauce
15
Following an Algorithm
Algorithm for preparing a Hollandaise sauce
If concerned about cholesterol
Put butter substitute in a pot
Else
Put butter in a pot
Turn on burner
Put pot on the burner
While (NOT bubbling)
Leave pot on the burner
Put other ingredients in the blender
Turn on blender
While (more in pot)
Pour contents into lender in slow steam
Turn off blender
16
Developing an Algorithm
Two methodologies used to develop
computer solutions to a problem
– Top-down design focuses on the tasks to be
done
– Object-oriented design focuses on the data
involved in the solution
But first, let's look at a way to express
algorithms: pseudocode
17
Pseudocode
Pseudocode
A way of expressing algorithms that uses a
mixture of English phrases and indention to
make the steps in the solution explicit
There are no grammar rules in pseudocode
Pseudocode is not case sensitive
18
Following Pseudocode
What is 93 in base 8?
93/8 gives 11 remainder 5
11/6 gives 1 remainder 3
1/ 8 gives 0 remainder 1
answer 1 3 5
While ( the quotient is not zero )
Divide the decimal number by the new base
Make the remainder the next digit to the left in the answer
Replace the original decimal number with
19
Following Pseudocode
Easier way to organize solution
20
Pseudocode for Complete
Computer Solution
Write "Enter the new base"
Read newBase
Write "Enter the number to be converted"
Read decimalNumber
Set quotient to 1
While (quotient is not zero)
Set quotient to decimalNumber DIV newBase
Set remainder to decimalNumber REM newBase
Make the remainder the next digit to the left in the answer
Set decimalNumber to quotient
Write "The answer is "
Write answer
21
Pseudocode Functionality
Variables
Names of places to store values
quotient, decimalNumber, newBase
Assignment
Storing the value of an expression into a
variable
Set quotient to 64
quotient <-- 64
quotient <-- 6 * 10 + 4
22
Pseudocode Functionality
Output
Printing a value on an output device
Write, Print
Input
Getting values from the outside word and
storing them into variables
Get, Read
23
Pseudocode Functionality
Repetition
Repeating a series of statements
Set count to 1
While ( count < 10)
Write "Enter an integer number"
Read aNumber
Write "You entered " + aNumber
Set count to count + 1
How many values were read?
24
Pseudocode Functionality
Selection
Making a choice to execute or skip a statement (or
group of statements)
Read number
If (number < 0)
Write number + " is less than zero."
or
Write "Enter a positive number."
Read number
If (number < 0)
Write number + " is less than zero."
Write "You didn't follow instructions."
25
Pseudocode Functionality
Selection
Choose to execute one statement (or group of
statements) or another statement (or group of
statements)
If ( age < 12 )
Write "Pay children's rate"
Write "You get a free box of popcorn"
else If ( age < 65 )
Write "Pay regular rate"
else
Write "Pay senior citizens rate"
26
Pseudocode Example
Write "How many pairs of values are to be entered?"
Read numberOfPairs
Set numberRead to 0
While (numberRead < numberOfPairs)
Write "Enter two values separated by a blank; press return"
Read number1
Read number2
If (number1 < number2)
Print number1 + " " + number2
Else
Print number2 + " " number1
Increment numberRead
27
Walk Through
Data Fill in values during each iteration
3 numberRead number1 number2
55 70
2 1
33 33
numberOfPairs
What is the output?
28
Top-Down Design
Top-Down Design
Problem-solving technique in which the problem is divided
into subproblems; the process is applied to each subproblem
Modules
Self-contained collection of steps, that solve a problem or
subproblem
Abstract Step
An algorithmic step containing unspecified details
Concrete Step
An algorithm step in which all details are specified
29
Top-Down Design
Process continues for as many levels as it takes to make every step
concrete
Name of (sub)problem at one level becomes a module at next lower
level
Figure 6.5
An example
of top-down
design
30
A General Example
Planning a large party
Figure 6.6 Subdividing the party planning
31
A Computer Example
Problem
Create a list that includes each person’s
name, telephone number, and e-mail
address
– This list should then be printed in alphabetical
order
– The names to be included in the list are on
scraps of paper and business cards
32
A Computer Example
Main Level 0
Enter names and numbers into list
Put list into alphabetical order
Print list
Enter names and numbers into list Level 1
While ( more names)
Enter name
Enter telephone number
Enter email address
Insert information into list
Which steps are abstract? Which steps are concrete?
What is missing?
33
A Computer Example
Enter names and numbers into list (revised) Level 1
Set moreNames to true
While (moreNames)
Prompt for and enter name
Prompt for and enter telephone number
Prompt for and enter email address
Insert information into list
Write "Enter a 1 to continue or a 0 to stop."
Read response
If (response = 0)
Set moreNames to false
Which steps are concrete? Which steps are abstract?
34
A Computer Example
Prompt for and enter name Level 2
Write "Enter last name; press return."
Read lastName
Write "Enter first name; press return."
Read firstName
Prompt for and enter telephone number Level 2
Write "Enter area code and 7-digit number; press return."
Read telephoneNumber
Prompt for and enter email address Level 2
Write "Enter email address; press return."
Read emailAddress
35
A Computer Example
Put list into alphabetical order
Concrete or abstract?
Print the list Level 1
Write "The list of names, telephone numbers, and email
addresses follows:"
Get first item from the list
While (more items)
Write item's firstName + " " + lastName
Write item's telephoneNumber
Write item's emailAddress
Write a blank line
Get next item from the list
36
A Computer Example
Note: Insert information is within the loop
37
Testing the Algorithm
Important distinction
Mathematics
We tests the answer
Programs
We test the process
38
Testing the Algorithm
Desk checking
Working through a design at a desk with a pencil and paper
Walk-through
Manual simulation of the design by team members, taking
sample data values and simulating the design using the
sample data
Inspection
One person (not the designer) reads the design (handed
out in advance) line by line while the others point out errors
39
Object-Oriented Design
Object-oriented Design
A problem-solving methodology that
produces a solution to a problem in terms of
self-contained entities called objects
Object
A thing or entity that makes sense within the
context of the problem
For example, a student, a car, time, date
40
Object-Oriented Design
World View of OOD
Problems are solved by
– isolating the objects in a problem,
– determining their properties and actions
(responsibilities), and
– letting the objects collaborate to solve a
problem
What? Say again!
41
Object-Oriented Design
An analogy: You and your friend fix dinner
Objects: you, friend, dinner
Class: you and friend are people
People have name, eye color, …
People can shop, cook, …
Instance of a class: you and friend are instances of
class People, you each have your own name and
eye color, you each can shop and cook
You collaborate to fix dinner
42
Object-Oriented Design
Class (or object class)
A description of a group of similar objects
Object (instance of a class)
A concrete example of the class
Classes contain fields that represent the
properties (name, eye color) and
behaviors (responsibilities) (shop, cook) of the class
Method
A named algorithm that defines behavior (shop,
cook)
43
Object-Oriented Design
Top-Down Design
decomposes problems into tasks
Object-Oriented Design
decomposes problems into
collaborating objects
Yes, but how?
44
Object-Oriented Design
Steps
– isolate the real-world objects in the
problem
– abstract the objects with like properties
into groups (classes)
– determine the responsibilities of the group
in interacting with other groups
45
Object-Oriented Design
Think of design as a mapping from real
world objects to classes of objects
birth
date
marriage
date
dog's
birth date
Date class
Objects Classes of objects
46
Object-Oriented Design
Program World simulates these groups
class Date
dogBirthdate
birthdate
marriageDate
Description Instances
47
Object-Oriented Design
Date's
Actions in
real world
?
We call an object's interactions
with other objects its
responsibilities
Create itself
Know the state of its fields
Compare itself to another date
Return a date #days hence
48
Object-Oriented Design
Responsibilities become methods in the
Program World
class Date
getMonth
getDay
getYear
dogBirthdate
birthdate
marriageDate
49
Object-Oriented Design
Methodology
Four stages to the decomposition process
– Brainstorming to locate possible classes
– Filtering the classes to find duplicates or
remove unnecessary ones
– Scenarios are tried to be sure we understand
collaborations
– Responsibility algorithms are designed for all
actions that classes must exhibit
50
CRC Cards
CRC cards are a notational device to record information
about a class, what is must do and with whom it must
collaborate
51
Brainstorming
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
52
Filtering
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 don’t
belong in the problem solution
53
Scenarios
Assign responsibilities to each class
There are two types of responsibilities
– What a class must know about itself
(knowledge responsibilities)
– What a class must be able to do (behavior
responsibilities)
54
Scenarios
Encapsulation
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
Each class encapsulates its data but
shares their values through knowledge
responsibilities
55
Responsibility Algorithms
The algorithms must be written for the
responsibilities
– Knowledge responsibilities usually just return
the contents of one of an object’s variables
– Action responsibilities are a little more
complicated, often involving calculations
56
Computer Example
Let’s repeat the problem-solving process for
creating an address list
Brainstorming and filtering
– Circling the nouns and underlining the verbs
is a good way to begin
Computer Example
First pass at a list of
classes
list
name
telephone number
email address
list
order
names
list
scraps
paper
cards
Filtered List
list, name, telephone number email address
58
CRC Cards
Can you think of any other useful responsibilities?
59
CRC Cards
Can you think of any other useful responsibilities?
60
CRC Cards
How is this class different from Name and Person?
61
Responsibility Algorithms
Person Class
Initialize
name.initialize()
Write "Enter phone number; press return."
Get telephone number
Write "Enter email address; press return."
Get email address
Print
name.print()
Write "Telephone number: " + telephoneNumber
Write "Email address: " + emailAddress
Tells name to initialize itself
Tells name to print itself
62
Responsibility Algorithms
Name Class
Initialize
"Enter the first name; press return."
Read firstName
"Enter the last name; press return."
Read lastName
Print
Print "First name: " + firstName
Print "Last name: " + lastName
63
Important Threads
Information Hiding
The practice of hiding the details of a module with
the goal of controlling access to it
Abstraction
A model of a complex system that includes only
the details essential to the viewer
Information Hiding and Abstraction are two
sides of the same coin
64
Important Threads
Data abstraction
Separation of the logical view of data from their
implementation
Procedural abstraction
Separation of the logical view of actions from their
implementation
Control abstraction
Separation of the logical view of a control structure from its
implementation
65
Important Threads
Abstraction is the most powerful tool people have for
managing complexity!
66
Important Threads
Identifiers
Names given to data and actions, by which
– we access the data and
Read firstName, Set count to count + 1
– execute the actions
name.initialize(), name.print()
Giving names to data and actions is a form
of abstraction
67
Importhat Threads
Programming language
A set of grammar rules, symbols, and special words used
to construct a program
Program
A sequence of instructions written to perform a specified
task
Syntax
The formal grammar rules governing the construction of
valid instructions
Semantics
The rules that give meaning to the instructions
68
Ethical Issues
Licensing Computer Professionals
Are computer professionals licensed?
What is the ACM and why is it opposed
to licensing?
What is the IEEE and what is its
position on licensing?
Should computer professionals be licensed?
69
Who am I?
I am a
mathematician.
Why is my
picture in a
book about
computer
science?
70
Do you know?
What does TNDM stand for and what is it?
How is a computer data base being used
to help endangered species?
What is forensic computing?
What techniques does it use?
How is physical evidence protected?

More Related Content

Similar to Problem Solving and Algorithm Design in Computer Science (20)

PPT
Computer Programming Computer Programming
arifhasan88
 
DOCX
Chapter 2(1)
TejaswiB4
 
PPTX
Algorithm and flowchart with pseudo code
hamza javed
 
PPTX
Programming C ppt for learning foundations
ssuser65733f
 
PDF
Cse115 lecture03problemsolving
Md. Ashikur Rahman
 
PDF
Algorithm.pdf
MIT,Imphal
 
PPTX
Programming in C - Problem Solving using C
PoovizhiP1
 
PPT
Program design and problem solving techniques
Dokka Srinivasu
 
PPTX
Unit 2 CPR.pptxaccSSzzCSDVVSVZVZSVVSDVDDSDDS
jbadgujar730
 
PDF
Study Material for Problem Solving Techniques
Bobby Murugesan
 
PPTX
Unit 1 c programming language Tut and notes
achiver792
 
PPT
Introduction to problem solving in c++
Online
 
PPTX
C LANGUAGE-FLOWCHARTS,PSEUDOCODE,ALGORITHMS APPROCHES
HarshJha34
 
PDF
Introduction to Programming
Prof Ansari
 
PPTX
Lec 2 -algorithms-flowchart-and-pseudocode1.pptx
AbdelrahmanRagab36
 
PPTX
Lec-ProblemSolving.pptx
miansaad18
 
PPT
(Prog213) (introduction to programming)v1
Aaron Angeles
 
PPTX
FDS Unit I_PPT.pptx
sayalishivarkar1
 
PPTX
UNIT-1.pptx python for engineering first year students
SabarigiriVason
 
PPTX
C programming .pptx
SuhaibKhan62
 
Computer Programming Computer Programming
arifhasan88
 
Chapter 2(1)
TejaswiB4
 
Algorithm and flowchart with pseudo code
hamza javed
 
Programming C ppt for learning foundations
ssuser65733f
 
Cse115 lecture03problemsolving
Md. Ashikur Rahman
 
Algorithm.pdf
MIT,Imphal
 
Programming in C - Problem Solving using C
PoovizhiP1
 
Program design and problem solving techniques
Dokka Srinivasu
 
Unit 2 CPR.pptxaccSSzzCSDVVSVZVZSVVSDVDDSDDS
jbadgujar730
 
Study Material for Problem Solving Techniques
Bobby Murugesan
 
Unit 1 c programming language Tut and notes
achiver792
 
Introduction to problem solving in c++
Online
 
C LANGUAGE-FLOWCHARTS,PSEUDOCODE,ALGORITHMS APPROCHES
HarshJha34
 
Introduction to Programming
Prof Ansari
 
Lec 2 -algorithms-flowchart-and-pseudocode1.pptx
AbdelrahmanRagab36
 
Lec-ProblemSolving.pptx
miansaad18
 
(Prog213) (introduction to programming)v1
Aaron Angeles
 
FDS Unit I_PPT.pptx
sayalishivarkar1
 
UNIT-1.pptx python for engineering first year students
SabarigiriVason
 
C programming .pptx
SuhaibKhan62
 

More from RaviRaval36 (10)

PPTX
corporatefailures-causesandremedies-230614153416-c84a8d1c.pptx
RaviRaval36
 
PPTX
22172720-Valuation-of-Merger-Proposal.pptx
RaviRaval36
 
PPT
Chapter 3 - Agile Software Development.ppt
RaviRaval36
 
PPT
DevOps for Dummies By Sanjeev Sharma Bernie Coyne
RaviRaval36
 
PPTX
Unit-5 Agile Project Management Introduction
RaviRaval36
 
PPT
Organizational Behavior by S. vivekanantha
RaviRaval36
 
PPT
Functions of Managment and Organizatinal Behavior.ppt
RaviRaval36
 
PPTX
Management Thoughts [Pre-Scientific Management Era (before 1880), Classical m...
RaviRaval36
 
PPTX
Unit-4 Corporate Restructuring - Advance Finance.pptx
RaviRaval36
 
PPTX
motherboard.pptx
RaviRaval36
 
corporatefailures-causesandremedies-230614153416-c84a8d1c.pptx
RaviRaval36
 
22172720-Valuation-of-Merger-Proposal.pptx
RaviRaval36
 
Chapter 3 - Agile Software Development.ppt
RaviRaval36
 
DevOps for Dummies By Sanjeev Sharma Bernie Coyne
RaviRaval36
 
Unit-5 Agile Project Management Introduction
RaviRaval36
 
Organizational Behavior by S. vivekanantha
RaviRaval36
 
Functions of Managment and Organizatinal Behavior.ppt
RaviRaval36
 
Management Thoughts [Pre-Scientific Management Era (before 1880), Classical m...
RaviRaval36
 
Unit-4 Corporate Restructuring - Advance Finance.pptx
RaviRaval36
 
motherboard.pptx
RaviRaval36
 
Ad

Recently uploaded (20)

PDF
How to Buy Verified CashApp Accounts IN 2025
Buy Verified CashApp Accounts
 
PDF
Plant Control_EST_85520-01_en_AllChanges_20220127.pdf
DarshanaChathuranga4
 
PDF
Tesia Dobrydnia - An Avid Hiker And Backpacker
Tesia Dobrydnia
 
DOCX
Engineering Geology Field Report to Malekhu .docx
justprashant567
 
PDF
Bayesian Learning - Naive Bayes Algorithm
Sharmila Chidaravalli
 
PPTX
FSE_LLM4SE1_A Tool for In-depth Analysis of Code Execution Reasoning of Large...
cl144
 
PPTX
CST413 KTU S7 CSE Machine Learning Introduction Parameter Estimation MLE MAP ...
resming1
 
PPTX
ASBC application presentation template (ENG)_v3 (1).pptx
HassanMohammed730118
 
PPTX
Unit_I Functional Units, Instruction Sets.pptx
logaprakash9
 
PDF
bs-en-12390-3 testing hardened concrete.pdf
ADVANCEDCONSTRUCTION
 
PDF
LLC CM NCP1399 SIMPLIS MODEL MANUAL.PDF
ssuser1be9ce
 
PPTX
Computer network Computer network Computer network Computer network
Shrikant317689
 
PPTX
CST413 KTU S7 CSE Machine Learning Neural Networks and Support Vector Machine...
resming1
 
PDF
Authentication Devices in Fog-mobile Edge Computing Environments through a Wi...
ijujournal
 
PPT
دراسة حاله لقرية تقع في جنوب غرب السودان
محمد قصص فتوتة
 
PPTX
Comparison of Flexible and Rigid Pavements in Bangladesh
Arifur Rahman
 
PPTX
Artificial Intelligence jejeiejj3iriejrjifirirjdjeie
VikingsGaming2
 
PDF
Artificial Neural Network-Types,Perceptron,Problems
Sharmila Chidaravalli
 
PDF
NFPA 10 - Estandar para extintores de incendios portatiles (ed.22 ENG).pdf
Oscar Orozco
 
PPTX
Bharatiya Antariksh Hackathon 2025 Idea Submission PPT.pptx
AsadShad4
 
How to Buy Verified CashApp Accounts IN 2025
Buy Verified CashApp Accounts
 
Plant Control_EST_85520-01_en_AllChanges_20220127.pdf
DarshanaChathuranga4
 
Tesia Dobrydnia - An Avid Hiker And Backpacker
Tesia Dobrydnia
 
Engineering Geology Field Report to Malekhu .docx
justprashant567
 
Bayesian Learning - Naive Bayes Algorithm
Sharmila Chidaravalli
 
FSE_LLM4SE1_A Tool for In-depth Analysis of Code Execution Reasoning of Large...
cl144
 
CST413 KTU S7 CSE Machine Learning Introduction Parameter Estimation MLE MAP ...
resming1
 
ASBC application presentation template (ENG)_v3 (1).pptx
HassanMohammed730118
 
Unit_I Functional Units, Instruction Sets.pptx
logaprakash9
 
bs-en-12390-3 testing hardened concrete.pdf
ADVANCEDCONSTRUCTION
 
LLC CM NCP1399 SIMPLIS MODEL MANUAL.PDF
ssuser1be9ce
 
Computer network Computer network Computer network Computer network
Shrikant317689
 
CST413 KTU S7 CSE Machine Learning Neural Networks and Support Vector Machine...
resming1
 
Authentication Devices in Fog-mobile Edge Computing Environments through a Wi...
ijujournal
 
دراسة حاله لقرية تقع في جنوب غرب السودان
محمد قصص فتوتة
 
Comparison of Flexible and Rigid Pavements in Bangladesh
Arifur Rahman
 
Artificial Intelligence jejeiejj3iriejrjifirirjdjeie
VikingsGaming2
 
Artificial Neural Network-Types,Perceptron,Problems
Sharmila Chidaravalli
 
NFPA 10 - Estandar para extintores de incendios portatiles (ed.22 ENG).pdf
Oscar Orozco
 
Bharatiya Antariksh Hackathon 2025 Idea Submission PPT.pptx
AsadShad4
 
Ad

Problem Solving and Algorithm Design in Computer Science

  • 1. Chapter 6 Problem Solving and Algorithm Design
  • 2. 2 Chapter Goals • Determine whether a problem is suitable for a computer solution • Describe the computer problem-solving process and relate it to Polya’s How to Solve It list • Distinguish between following an algorithm and developing one • Describe the pseudocode constructs used in expressing an algorithm • Use pseudocode to express an algorithm
  • 3. 3 Chapter Goals • Apply top-down design methodology to develop an algorithm to solve a problem • Define the key terms in object-oriented design • Apply object-oriented design methodology to develop a collection of interacting objects to solve a problem • Discuss the following threads as they relate to problem solving: information hiding, abstraction, naming things, and testing
  • 4. 4 Problem Solving Problem solving The act of finding a solution to a perplexing, distressing, vexing, or unsettled question How do you define problem solving?
  • 5. 5 Problem Solving How to Solve It: A New Aspect of Mathematical Method by George Polya "How to solve it list" written within the context of mathematical problems But list is quite general We can use it to solve computer related problems!
  • 6. 6 Problem Solving How do you solve problems? Understand the problem Devise a plan Carry out the plan Look back
  • 7. 7 Strategies Ask questions! – What do I know about the problem? – What is the information that I have to process in order the find the solution? – What does the solution look like? – What sort of special cases exist? – How will I recognize that I have found the solution?
  • 8. 8 Strategies Ask questions! Never reinvent the wheel! Similar problems come up again and again in different guises A good programmer recognizes a task or subtask that has been solved before and plugs in the solution Can you think of two similar problems?
  • 9. 9 Strategies Divide and Conquer! Break up a large problem into smaller units and solve each smaller problem – Applies the concept of abstraction – The divide-and-conquer approach can be applied over and over again until each subtask is manageable
  • 10. 10 Algorithms Algorithm A set of unambiguous instructions for solving a problem or subproblem in a finite amount of time using a finite amount of data Why must instructions be unambiguous? Why must time and data be finite?
  • 11. 11 Computer Problem-Solving Analysis and Specification Phase Analyze Specification Algorithm Development Phase Develop algorithm Test algorithm Implementation Phase Code algorithm Test algorithm Maintenance Phase Use Maintain Can you name a recurring theme?
  • 12. 12 Phase Interactions Should we add another arrow? (What happens if the problem is revised?)
  • 13. 13 Pseudocode Pseudocode A mixture of English and formatting to make the steps in an algorithm explicit Algorithm to Convert base-10 number to other bases While ( the quotient is not zero ) Divide the decimal number by the new base Make the remainder the next digit to the left in the answer Replace the original decimal number with the quotient
  • 14. 14 Following an Algorithm Figure 6.4 A recipe for Hollandaise sauce
  • 15. 15 Following an Algorithm Algorithm for preparing a Hollandaise sauce If concerned about cholesterol Put butter substitute in a pot Else Put butter in a pot Turn on burner Put pot on the burner While (NOT bubbling) Leave pot on the burner Put other ingredients in the blender Turn on blender While (more in pot) Pour contents into lender in slow steam Turn off blender
  • 16. 16 Developing an Algorithm Two methodologies used to develop computer solutions to a problem – Top-down design focuses on the tasks to be done – Object-oriented design focuses on the data involved in the solution But first, let's look at a way to express algorithms: pseudocode
  • 17. 17 Pseudocode Pseudocode A way of expressing algorithms that uses a mixture of English phrases and indention to make the steps in the solution explicit There are no grammar rules in pseudocode Pseudocode is not case sensitive
  • 18. 18 Following Pseudocode What is 93 in base 8? 93/8 gives 11 remainder 5 11/6 gives 1 remainder 3 1/ 8 gives 0 remainder 1 answer 1 3 5 While ( the quotient is not zero ) Divide the decimal number by the new base Make the remainder the next digit to the left in the answer Replace the original decimal number with
  • 19. 19 Following Pseudocode Easier way to organize solution
  • 20. 20 Pseudocode for Complete Computer Solution Write "Enter the new base" Read newBase Write "Enter the number to be converted" Read decimalNumber Set quotient to 1 While (quotient is not zero) Set quotient to decimalNumber DIV newBase Set remainder to decimalNumber REM newBase Make the remainder the next digit to the left in the answer Set decimalNumber to quotient Write "The answer is " Write answer
  • 21. 21 Pseudocode Functionality Variables Names of places to store values quotient, decimalNumber, newBase Assignment Storing the value of an expression into a variable Set quotient to 64 quotient <-- 64 quotient <-- 6 * 10 + 4
  • 22. 22 Pseudocode Functionality Output Printing a value on an output device Write, Print Input Getting values from the outside word and storing them into variables Get, Read
  • 23. 23 Pseudocode Functionality Repetition Repeating a series of statements Set count to 1 While ( count < 10) Write "Enter an integer number" Read aNumber Write "You entered " + aNumber Set count to count + 1 How many values were read?
  • 24. 24 Pseudocode Functionality Selection Making a choice to execute or skip a statement (or group of statements) Read number If (number < 0) Write number + " is less than zero." or Write "Enter a positive number." Read number If (number < 0) Write number + " is less than zero." Write "You didn't follow instructions."
  • 25. 25 Pseudocode Functionality Selection Choose to execute one statement (or group of statements) or another statement (or group of statements) If ( age < 12 ) Write "Pay children's rate" Write "You get a free box of popcorn" else If ( age < 65 ) Write "Pay regular rate" else Write "Pay senior citizens rate"
  • 26. 26 Pseudocode Example Write "How many pairs of values are to be entered?" Read numberOfPairs Set numberRead to 0 While (numberRead < numberOfPairs) Write "Enter two values separated by a blank; press return" Read number1 Read number2 If (number1 < number2) Print number1 + " " + number2 Else Print number2 + " " number1 Increment numberRead
  • 27. 27 Walk Through Data Fill in values during each iteration 3 numberRead number1 number2 55 70 2 1 33 33 numberOfPairs What is the output?
  • 28. 28 Top-Down Design Top-Down Design Problem-solving technique in which the problem is divided into subproblems; the process is applied to each subproblem Modules Self-contained collection of steps, that solve a problem or subproblem Abstract Step An algorithmic step containing unspecified details Concrete Step An algorithm step in which all details are specified
  • 29. 29 Top-Down Design Process continues for as many levels as it takes to make every step concrete Name of (sub)problem at one level becomes a module at next lower level Figure 6.5 An example of top-down design
  • 30. 30 A General Example Planning a large party Figure 6.6 Subdividing the party planning
  • 31. 31 A Computer Example Problem Create a list that includes each person’s name, telephone number, and e-mail address – This list should then be printed in alphabetical order – The names to be included in the list are on scraps of paper and business cards
  • 32. 32 A Computer Example Main Level 0 Enter names and numbers into list Put list into alphabetical order Print list Enter names and numbers into list Level 1 While ( more names) Enter name Enter telephone number Enter email address Insert information into list Which steps are abstract? Which steps are concrete? What is missing?
  • 33. 33 A Computer Example Enter names and numbers into list (revised) Level 1 Set moreNames to true While (moreNames) Prompt for and enter name Prompt for and enter telephone number Prompt for and enter email address Insert information into list Write "Enter a 1 to continue or a 0 to stop." Read response If (response = 0) Set moreNames to false Which steps are concrete? Which steps are abstract?
  • 34. 34 A Computer Example Prompt for and enter name Level 2 Write "Enter last name; press return." Read lastName Write "Enter first name; press return." Read firstName Prompt for and enter telephone number Level 2 Write "Enter area code and 7-digit number; press return." Read telephoneNumber Prompt for and enter email address Level 2 Write "Enter email address; press return." Read emailAddress
  • 35. 35 A Computer Example Put list into alphabetical order Concrete or abstract? Print the list Level 1 Write "The list of names, telephone numbers, and email addresses follows:" Get first item from the list While (more items) Write item's firstName + " " + lastName Write item's telephoneNumber Write item's emailAddress Write a blank line Get next item from the list
  • 36. 36 A Computer Example Note: Insert information is within the loop
  • 37. 37 Testing the Algorithm Important distinction Mathematics We tests the answer Programs We test the process
  • 38. 38 Testing the Algorithm Desk checking Working through a design at a desk with a pencil and paper Walk-through Manual simulation of the design by team members, taking sample data values and simulating the design using the sample data Inspection One person (not the designer) reads the design (handed out in advance) line by line while the others point out errors
  • 39. 39 Object-Oriented Design Object-oriented Design A problem-solving methodology that produces a solution to a problem in terms of self-contained entities called objects Object A thing or entity that makes sense within the context of the problem For example, a student, a car, time, date
  • 40. 40 Object-Oriented Design World View of OOD Problems are solved by – isolating the objects in a problem, – determining their properties and actions (responsibilities), and – letting the objects collaborate to solve a problem What? Say again!
  • 41. 41 Object-Oriented Design An analogy: You and your friend fix dinner Objects: you, friend, dinner Class: you and friend are people People have name, eye color, … People can shop, cook, … Instance of a class: you and friend are instances of class People, you each have your own name and eye color, you each can shop and cook You collaborate to fix dinner
  • 42. 42 Object-Oriented Design Class (or object class) A description of a group of similar objects Object (instance of a class) A concrete example of the class Classes contain fields that represent the properties (name, eye color) and behaviors (responsibilities) (shop, cook) of the class Method A named algorithm that defines behavior (shop, cook)
  • 43. 43 Object-Oriented Design Top-Down Design decomposes problems into tasks Object-Oriented Design decomposes problems into collaborating objects Yes, but how?
  • 44. 44 Object-Oriented Design Steps – isolate the real-world objects in the problem – abstract the objects with like properties into groups (classes) – determine the responsibilities of the group in interacting with other groups
  • 45. 45 Object-Oriented Design Think of design as a mapping from real world objects to classes of objects birth date marriage date dog's birth date Date class Objects Classes of objects
  • 46. 46 Object-Oriented Design Program World simulates these groups class Date dogBirthdate birthdate marriageDate Description Instances
  • 47. 47 Object-Oriented Design Date's Actions in real world ? We call an object's interactions with other objects its responsibilities Create itself Know the state of its fields Compare itself to another date Return a date #days hence
  • 48. 48 Object-Oriented Design Responsibilities become methods in the Program World class Date getMonth getDay getYear dogBirthdate birthdate marriageDate
  • 49. 49 Object-Oriented Design Methodology Four stages to the decomposition process – Brainstorming to locate possible classes – Filtering the classes to find duplicates or remove unnecessary ones – Scenarios are tried to be sure we understand collaborations – Responsibility algorithms are designed for all actions that classes must exhibit
  • 50. 50 CRC Cards CRC cards are a notational device to record information about a class, what is must do and with whom it must collaborate
  • 51. 51 Brainstorming 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
  • 52. 52 Filtering 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 don’t belong in the problem solution
  • 53. 53 Scenarios Assign responsibilities to each class There are two types of responsibilities – What a class must know about itself (knowledge responsibilities) – What a class must be able to do (behavior responsibilities)
  • 54. 54 Scenarios Encapsulation 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 Each class encapsulates its data but shares their values through knowledge responsibilities
  • 55. 55 Responsibility Algorithms The algorithms must be written for the responsibilities – Knowledge responsibilities usually just return the contents of one of an object’s variables – Action responsibilities are a little more complicated, often involving calculations
  • 56. 56 Computer Example Let’s repeat the problem-solving process for creating an address list Brainstorming and filtering – Circling the nouns and underlining the verbs is a good way to begin
  • 57. Computer Example First pass at a list of classes list name telephone number email address list order names list scraps paper cards Filtered List list, name, telephone number email address
  • 58. 58 CRC Cards Can you think of any other useful responsibilities?
  • 59. 59 CRC Cards Can you think of any other useful responsibilities?
  • 60. 60 CRC Cards How is this class different from Name and Person?
  • 61. 61 Responsibility Algorithms Person Class Initialize name.initialize() Write "Enter phone number; press return." Get telephone number Write "Enter email address; press return." Get email address Print name.print() Write "Telephone number: " + telephoneNumber Write "Email address: " + emailAddress Tells name to initialize itself Tells name to print itself
  • 62. 62 Responsibility Algorithms Name Class Initialize "Enter the first name; press return." Read firstName "Enter the last name; press return." Read lastName Print Print "First name: " + firstName Print "Last name: " + lastName
  • 63. 63 Important Threads Information Hiding The practice of hiding the details of a module with the goal of controlling access to it Abstraction A model of a complex system that includes only the details essential to the viewer Information Hiding and Abstraction are two sides of the same coin
  • 64. 64 Important Threads Data abstraction Separation of the logical view of data from their implementation Procedural abstraction Separation of the logical view of actions from their implementation Control abstraction Separation of the logical view of a control structure from its implementation
  • 65. 65 Important Threads Abstraction is the most powerful tool people have for managing complexity!
  • 66. 66 Important Threads Identifiers Names given to data and actions, by which – we access the data and Read firstName, Set count to count + 1 – execute the actions name.initialize(), name.print() Giving names to data and actions is a form of abstraction
  • 67. 67 Importhat Threads Programming language A set of grammar rules, symbols, and special words used to construct a program Program A sequence of instructions written to perform a specified task Syntax The formal grammar rules governing the construction of valid instructions Semantics The rules that give meaning to the instructions
  • 68. 68 Ethical Issues Licensing Computer Professionals Are computer professionals licensed? What is the ACM and why is it opposed to licensing? What is the IEEE and what is its position on licensing? Should computer professionals be licensed?
  • 69. 69 Who am I? I am a mathematician. Why is my picture in a book about computer science?
  • 70. 70 Do you know? What does TNDM stand for and what is it? How is a computer data base being used to help endangered species? What is forensic computing? What techniques does it use? How is physical evidence protected?