algorithms and problem solving. learn about problem solving skills explore the algorithmic approach...
Post on 20-Dec-2015
217 views
TRANSCRIPT
![Page 1: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/1.jpg)
Algorithms andProblem Solving
![Page 2: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/2.jpg)
• Learn about problem solving skills
• Explore the algorithmic approach for problem solving
• Learn about algorithm development
• Become aware of problem solving process
Lecture Objectives
![Page 3: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/3.jpg)
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
![Page 4: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/4.jpg)
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 changes
![Page 5: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/5.jpg)
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 subproblems Analyze each subproblem as above
![Page 6: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/6.jpg)
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
![Page 7: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/7.jpg)
• Before a computer can perform a task, it musthave 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? (Cont’d)
![Page 8: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/8.jpg)
What is an algorithm? (Cont’d)
![Page 9: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/9.jpg)
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
![Page 10: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/10.jpg)
Representation of Algorithms
• A single algorithm can be represented in many ways: 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!
![Page 11: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/11.jpg)
A program is a representation of an algorithmdesigned for computer applications.
Process: Activity of executing a program, or execute the algorithm represented by the program
Process: Activity of executing an algorithm.
Representation of Algorithms (Cont’d)
![Page 12: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/12.jpg)
Expressing Algorithms
• English description
• Pseudo-code
• High-level programming language
More
preciseMore easily expressed
![Page 13: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/13.jpg)
• 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
![Page 14: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/14.jpg)
Example: The sequential search algorithm in pseudocode
Pseudocode (Cont’d)
![Page 15: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/15.jpg)
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!
![Page 16: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/16.jpg)
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!
![Page 17: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/17.jpg)
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 before 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!
![Page 18: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/18.jpg)
Stepwise Refinement
• Stepwise refinement is a top-down methodology in that it progresses from the general to the specific.
• 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.
![Page 19: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/19.jpg)
Object-Oriented Design Methodology
• Four stages to the decomposition process
Brainstorming
Filtering
Scenarios
Responsibility algorithms
![Page 20: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/20.jpg)
Class-Responsibility-Collaboration (CRC) Cards
![Page 21: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/21.jpg)
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
![Page 22: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/22.jpg)
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
![Page 23: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/23.jpg)
Scenarios
• 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
![Page 24: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/24.jpg)
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
![Page 25: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/25.jpg)
Computer Example
• Let’s repeat the problem-solving process for creating an address list
• Brainstorming and filtering Circling the nouns and underlining the verbs
![Page 26: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/26.jpg)
• First pass at a list of classes
Computer Example (Cont’d)
![Page 27: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/27.jpg)
• Filtered list
Computer Example (Cont’d)
![Page 28: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/28.jpg)
CRC Cards
![Page 29: Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development](https://reader035.vdocument.in/reader035/viewer/2022062516/56649d485503460f94a23630/html5/thumbnails/29.jpg)
Responsibility Algorithms