Download Presentation
## Algorithms

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -

**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.