PROBLEM SOLVING SKILLS

Slides:



Advertisements
Similar presentations
1 ICS102: Introduction To Computing King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer Science.
Advertisements

6-1 Chapter Goals Determine whether a problem is suitable for a computer solution Describe the computer problem-solving process and relate it to Polya’s.
Problem Solving and Algorithm Design
Chapter 6 Problem Solving and Algorithm Design. 6-2 Chapter Goals Determine whether a problem is suitable for a computer solution Describe the computer.
Computer Algorithms. Fact: computers are dumb machines Basic property of a computer (a machine): Computers do what we tell them to do Unfortunately, computer.
8 Algorithms Foundations of Computer Science ã Cengage Learning.
© Janice Regan, CMPT 102, Sept CMPT 102 Introduction to Scientific Computer Programming The software development method algorithms.
© Janice Regan Problem-Solving Process 1. State the Problem (Problem Specification) 2. Analyze the problem: outline solution requirements and design.
Algorithms and Problem Solving-1 Algorithms and Problem Solving Mainly based on Chapter 6: “Problem Solving and Algorithm Design” from the Book: “Computer.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
Algorithms and Problem Solving
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
Chapter 2: Algorithm Discovery and Design
Chapter 6 Problem Solving and Algorithm Design Nell Dale John Lewis.
Programming Fundamentals (750113) Ch1. Problem Solving
Chapter 2: Algorithm Discovery and Design
Domain Modeling (with Objects). Motivation Programming classes teach – What an object is – How to create objects What is missing – Finding/determining.
COMP An Introduction to Computer Programming : University of the West Indies COMP6015 An Introduction to Computer Programming Lecture 02.
DCT 1123 PROBLEM SOLVING & ALGORITHMS INTRODUCTION TO PROGRAMMING.
Chapter 9 High-Level Programming Languages: C++. Chapter Goals Describe the expectations of high level languages Distinguish between functional design.
Fundamentals of Algorithms MCS - 2 Lecture # 1
Introduction Algorithms and Conventions The design and analysis of algorithms is the core subject matter of Computer Science. Given a problem, we want.
CSE 219 Computer Science III Program Design Principles.
“The study of algorithms is the cornerstone of computer science.” Algorithms Fall 2011.
1 What is OO Design? OO Design is a process of invention, where developers create the abstractions necessary to meet the system’s requirements OO Design.
CS221 Algorithm Basics. What is an algorithm? An algorithm is a list of instructions that transform input information into a desired output. Each instruction.
The Software Development Process
Data Structures Using C++ 2E
8.1 8 Algorithms Foundations of Computer Science  Cengage Learning.
ALGORITHMS AND FLOWCHARTS. Why Algorithm is needed? 2 Computer Program ? Set of instructions to perform some specific task Is Program itself a Software.
Lecture #1: Introduction to Algorithms and Problem Solving Dr. Hmood Al-Dossari King Saud University Department of Computer Science 6 February 2012.
PROGRAMMING FUNDAMENTALS INTRODUCTION TO PROGRAMMING. Computer Programming Concepts. Flowchart. Structured Programming Design. Implementation Documentation.
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
How Computers Solve Problems Computers also use Algorithms to solve problems, and change data into information Computers can only perform one simple step.
Low-Level Programming Languages, Pseudocode and Testing Chapter 6.
 Problem Analysis  Coding  Debugging  Testing.
ICS 3UI - Introduction to Computer Science
Algorithms and Problem Solving
Lecture 1 Introduction Richard Gesick.
GC211Data Structure Lecture2 Sara Alhajjam.
ALGORITHMS AND FLOWCHARTS
Algorithm and Ambiguity
About the Presentations
Lecture 2 Introduction to Programming
Lecture 2 of Computer Science II
Introduction to Computer Programming
Algorithm and Ambiguity
Object-Oriented Design
Chapter 1 Software Engineering.
Unit# 9: Computer Program Development
Problem Solving Techniques
Algorithm An algorithm is a finite set of steps required to solve a problem. An algorithm must have following properties: Input: An algorithm must have.
Objective of This Course
Chapter 5: Algorithms Computer Science: An Overview Tenth Edition
Programming Fundamentals (750113) Ch1. Problem Solving
Programming Fundamentals (750113) Ch1. Problem Solving
Problem Solving Skill Area 305.1
Programming.
Algorithm and Ambiguity
Algorithms and Problem Solving
Programming Fundamentals (750113) Ch1. Problem Solving
Lecture 6 Architecture Algorithm Defin ition. Algorithm 1stDefinition: Sequence of steps that can be taken to solve a problem 2ndDefinition: The step.
Tonga Institute of Higher Education IT 141: Information Systems
Computer Algorithms.
Programming Fundamentals (750113) Ch1. Problem Solving
Tonga Institute of Higher Education IT 141: Information Systems
Basic Concepts of Algorithm
Computer Science: An Overview Tenth Edition
Presentation transcript:

PROBLEM SOLVING SKILLS Computer Algorithms PROBLEM SOLVING SKILLS

Fact: computers are dumb machines Basic property of a computer (a machine): Computers do what we tell them to do Unfortunately, computer do not necessarily do what we want them to do.... (Because we can make mistake in telling the computer what we want to do... These mistakes are called "bugs")

Algorithm Definition: algorithm Dictionary definition: Algorithm = a step-by-step procedure for solving a problem or accomplishing some task, especially by means of a computer

Computer Algorithms Computer Algorithm: is an algorithm that can be executed by a computer

Computer Algorithms (cont.) Properties of computer algorithms: The steps in an algorithm must be consists of operations that can be executed by a computer The step in an algorithm must be unambiguous (Remember that a dumb machine like a computer will do what it is told to do. Resolving ambiguity requires some thinking (intelligence) which computers cannot do !) Computers cannot think.

Algorithm development We will now illustrate the process of developing an algorithm An algorithm always accomplishes some well- defined task or solves some well-defined problem The task/problem that we will use to illustrate the process of developing an algorithm is: Replacing a burned out light bulb

Instruction for humans on replacing a burned out light bulb Typical instructions given to humans on how to replace a light bulb: These brief instructions assume a lot of common sense knowledge that a machine does not have !!! Remove the burned-out bulb Insert a new bulb

Instruction for humans on replacing a burned out light bulb (cont.) What can go wrong if a machine uses these instructions: A machine does not know how to remove a bulb It could yank the bulb out of its socket and damage the fixture in the process. A machine does not know how to insert a bulb A machine can replace the bulb with one that has an inadequate wattage (too bright or too dim)

Instructions for computers on replacing a burned out light bulb Computers have no common sense knowledge (really dumb) Instructions for computers must be given very explicitly (in "baby steps")

Example of how you would instruct a computer to change a light bulb: [The following instructions will remove the burn-out bulb] repeat until (bulb comes free of socket) { turn bulb in counter-clockwise direction } [The following instructions will find a suitable bulb] select a new bulb repeat until (wattage of bulb selected = wattage of old bulb) discard the selected bulb select another bulb [The following instructions will insert the new bulb] repeat until (bulb is secure in socket) turn bulb in clockwise direction

Algorithms and Problem Solving

Lecture Objectives Learn about problem solving skills Explore the algorithmic approach for problem solving 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 changes

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

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? (Cont’d) 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? (Cont’d)

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 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!

Representation of Algorithms (Cont’d) 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 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 (Cont’d) Example: The sequential search algorithm in pseudocode

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 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!

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.

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

Class-Responsibility-Collaboration (CRC) Cards

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

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

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

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

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

Computer Example (Cont’d) First pass at a list of classes

Computer Example (Cont’d) Filtered list

CRC Cards

Responsibility Algorithms