Algorithms and Problem Solving 1 Problem Solving Programming
Algorithms and Problem Solving 1
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 Algorithms and Problem Solving 2
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 in code Verify that the algorithm works �Step 3 - Maintenance Use and modify the program if the problem domain changes Algorithms and Problem Solving 3
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 Algorithms and Problem Solving 4
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 Algorithms and Problem Solving 5
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! Algorithms and Problem Solving 6
The definition of an algorithm Algorith ms and Problem Solving 7
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 Algorith ms and Problem Solving 8
Algorithms can be represented in different ways: �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! Algorith ms and Problem Solving 9
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. Algorith ms and Problem Solving 10
Expressing Algorithms � English description More easily expressed More � Pseudo-code precise � High-level programming language Algorith ms and Problem Solving 11
Pseudocode is a notational system where ideas can be expressed in enough detail to be represented as an algorithm. �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 Algorith ms and Problem Solving 12
Example: The sequential search algorithm in pseudocode Algorith ms and Problem Solving 13
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! Algorith ms and Problem Solving 14
Problem Solving is an art and 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! Algorith ms and Problem Solving 15
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! � Algorith ms and Problem Solving 16
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 Algorith ms and Problem Solving 17 posses a natural modular structure - hence its
Object-Oriented Design Methodology �Four stages to the decomposition process Brainstorming Filtering Scenarios Responsibility algorithms Algorith ms and Problem Solving 18
Class-Responsibility-Collaboration (CRC) Cards Algorith ms and Problem Solving 19
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 Algorith ms and Problem Solving 20
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 Algorith ms and Problem Solving 21
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 Algorith ms and Problem Solving 22
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 Algorith ms and Problem Solving 23
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 171 Algorith ms and Problem Solving 24
Computer Example �First pass at a list of classes
Computer Example �Filtered list
CRC Cards Algorith ms and Problem Solving 27
Responsibility Algorithms Algorith ms and Problem Solving 28
- Slides: 28