Algorithms CS139 – Aug 30, 2004
Problem Solving Your roommate, who is taking CS139, is in a panic. He is worried that he might lose his financial aid if his GPA goes under 2.0 How can he figure out what his current GPA is? How can you build a process that any student can use to tell them what GPA they have based on grades provided thus far?
Algorithm Development Objectives • At the end of this unit the student will: • define the term algorithm • state 5 properties of a good algorithm • from a given problem and stated audience, create an appropriate algorithm using the properties stated above. • use the concept of abstraction and top-down design in creating an algorithm. • begin to think about the kinds of problems that have a computing solution.
References for this lecture • Schaum’s Outline – Chapter 2
Problem Solving • Understand the problem (and the audience) • Are you making a pie? • Needing directions? • Putting together a piece of equipment? • Trying to solve a mathematical puzzle? • Devise a plan • Is this similar to something else? • Who is the audience for the solution? • What are the required steps?
Problem Solving ( Cont’d ) • Carry out the plan (implement) • Does it work? • Is each step correct? Necessary? • Is the solution accurate? (Correct) • Will it always lead to a solution
Algorithm Definition • A logical sequence of steps for solving a problem, … • From http://Dictionary.msn.com • Dale and Lewis: • a plan of solution for a problem • Algorithm – An unambiguous (and precise) set of steps for solving a problem (or sub-problem) in a finite amount of time using a finite amount of data.
Algorithm Definition, cont • Shackelford, Russell L. in Introduction to Computing and Algorithms – • “An algorithm is a specification of a behavioral process. It consists of a finite set of instructions that govern behavior step-by-step.”
Notice • Notice the term finite. Algorithms should lead to an eventual solution. • Step by step process. Each step should do one logical action.
Algorithms • Algorithms are addressed to some audience. Consider: • A set of instructions for building a child’s bicycle. • A diagnostic checklist for a failure of some system on the space shuttle. • The algorithm for what to do when a nuclear reactor begins to overheat. • An algorithm that will run on a computer system to calculate student GPA’s.
Audience • Each audience will have its own “rules” that govern how we will address them, the language that they speak. • Each audience will have certain assumptions about what they know and don’t know. • An audience might include people or a computer.
Good vs. Bad Algorithms • All algorithms will have input, perform a process, and produce output. • A good algorithm should be: • Simple - relative • Complete – account for all inputs & cases • Correct (Right) • should have appropriate levels of Abstraction. – grouping steps into a single module • Precise • Mnemonic - SCRAP
Precision • Precision means that there is only one way to interpret the instruction. Unambiguous • Words like “maybe”, “sometimes” and “occasionally” have no business in a well developed algorithm. • Instead of “maybe”, we can specify the exact circumstances in which an action will be carried out.
Simplicity • Simple can be defined as having no unnecessary steps and no unnecessary complexity. (You may lose points if your algorithm contains unnecessary steps) • Each step of a well developed algorithm should carry out one logical step of the process. • Avoid something like: “Take 2nd right after you exit at King Street”
It has Levels of Abstraction. • From the Oxford English Dictionary, abstraction is defined as: • “The act or process of separating in thought, of considering a thing independently of its associations; or a substance independently of its attributes; or an attribute or quality independently of the substance to which it belongs.” • Example: Add all the scores then divide the sum by the number of students to get the average.
Or in other words • The abstraction property lets us view an algorithm as a series of high level aggregate steps, with the detail hidden in a lower level.
Abstraction, cont. • Instead of approaching a problem and worrying about each and every thing you must do to solve the problem, you can begin to look at the major steps. (Top down design) • After the major steps, you can begin to fill in how you would accomplish the major step. • That fill in may lead to the need for additional levels to fill in those details, etc. • Top down design.
Diagrammatically Drive the car to school Get directions Turn left out of your driveway Start the car At the next light, turn right. Follow the directions At the intersection with I-66, take the on-ramp for I-66 West Get parking pass Drive to the destination … Level 1 Find a place to park Level 3 Stop the car Level 2
Other algorithm attributes • A good algorithm should be correct. • A good algorithm should be complete. • Shackelford again, “To be correct, an algorithm must produce results that are correct and complete given any and all sets of appropriate data.” • And to be correct, an algorithm must proceed through to a conclusion.
Steps from Schaum’s • Analyze the problem and develop the specification. • Design the solution • Test the solution as part of the design steps. • Implement the program (code the program) • Test the program • Validate the program (further extensive testing) to insure it works under all circumstances.
In class exercise • In your group, create an algorithm to calculate a semester GPA. You may use a calculator. • Recall: • GPA is based on the letter grade achieved in the class and the number of credit hours for the class. • Generally QP’s – A = 4.0, B = 3.0, C=2.0, D=1.0, F=0.0 and a + adds .3 to the grade and a – subtracts .3 from the QP. • The semester GPA is then the average QP for each credit hour attempted.
For example: • For example, a student is taking 4 classes: • CS139 – 4 credits – C • CS110 – 1 credit – A • GWRIT103 – 3 credits – B+ • GHIST101 – 3 credits – C- • What is the student’s semester average? • How did you figure it out? • How can you describe that process for others in the class?
Look at the GPA calculation algorithm • What properties does the testing algorithm display? Is is simple, precise, etc. • Test the solution using a couple of different test cases. Does the algorithm work for those different cases? • What happens if the grades are all F’s? All A’s (limits)? • What about different numbers of classes? One or 6?
Next up • You will create some other algorithms in lab. • Please be on time for your selected section. • Focus on the 5 principles as you are building your algorithms. • Tomorrow is the last day to bring in folders for credit. Check blackboard to see if you have given me a folder. • Be sure to read Chapter 2 in Schaum’s for Wednesday’s class.