3Ch1: Engineering Problem Solving Read Section 1.1 from the textbookRecent Engineering AchievementsMicroprocessorMoon landingSatellitesComputer-aided design (CAD) and manufacturingJumbo jetAdvance computer materialsComputerized axial tomographyGenetic engineeringLasersOptical fiberChanging Engineering EnvironmentCommunication skills (oral, written)Concept-Design-process-manufactureInterdisciplinary teamsWord marketplaceAnalyzing-SynthesizingSocietal Context
4Ch1: Engineering Problem Solving (cont’d) Section 1.2: Computing SystemsComputer: a machine that is designed to perform operations (set of instructions called program) to achieve a specific task (e.g., 3+4)Hardware: computer equipment (e.g., keyboard, mouse, terminal, hard disk, printer)Software: programs that describe the steps we want the computer to perform.
5Computer Hardware CPU - Central processing unit InternalMemoryExternalMemoryCPUProcessorInputOutputALUIn this sense, do you think we are like a computer?Yes + we have intelligenceCPU - Central processing unitALU - Arithmetic and logic unitROM - Read only memoryRAM - Random access memory
6Computer SoftwareOperating System - Provides an interface with the userunix, windows, linux, ...Software Toolsword processors (MicrosoftWord, WordPerfect, ...)spreadsheet programs (Excel, Lotus1-2-3, ...)mathematical computation tools (MATLAB, Mathematica, ...)Computer Languagesmachine languageassembly languagebinary languagehigh level languages (C, C++, Ada, Fortran, Basic, java)WE WILL STUDY C PROGRAMMING LANGUAGEGeneral purpose, machine-independent languageDeveloped at Bell Labs in 1972 by Dennis RitchieAmerican National Standards Institute(ANSI) approved ANSI C standard in 1989
7Executing a Computer Program CompilerConverts source program to object programLinkerConverts object program to executable program
8Some Key Terms and Software Life-Cycle Phases Source Programprintable/Readable Program fileObject Programnonprintable machine readable fileExecutable Programnonprintable executable codeSyntax errorsreported by the compilerLinker errorsreported by the linkerExecution/Run-time errorsreported by the operating system
10Ch 1.3 Problem Solving Methodology (must read) 1. State the problem clearly2. Describe the input/output information3. Work the problem by hand, give example4. Develop a solution (Algorithm Development)and Convert it to a program (C program)5. Test the solution with a variety of data
11Example 1 1. Problem statement Compute the straight line (x1,y1)(x2, y2)1. Problem statementCompute the straight linedistance between two points in a plane2. Input/output descriptionPoint 1 (x1, y1)Distance between two points (distance)Point 2 (x2, y2)
13Example 1 (cont’d) 4. Algorithm development and coding a. Generalize the hand solution and list/outline the necessary operations step-by-stepGive specific values for point1 (x1, y1) and point2 (x2, y2)Compute side1=x2-x1 and side2=y2-y1ComputePrint distanceb. Convert the above outlined solution to a program using any language you want (see next slide for C imp.)
15Example 1 (cont’d) 5. Testing After compiling your program, run it and see if it gives the correct result.Your program should print outThe distance between two points is 3.61If not, what will you do?
16Modification to Example 1 How will you find the distance between two other points (2,5) and (10,8)?x1=2, y1=5, x2=10, y2=8,
17Few IssuesWe will study the details of this program and C language later…The programming language is not the main part of problem solving!Main part is to figure out the necessary steps and their orders (if you can develop solution then coding is easy)For the same problem, we may come up with different and yet correct solutions.Computers cannot think or develop a solution, they just follow your instructions and do the operations fasterThen how do computers do many things? Even play a game, for example chess?
19Compute the area of a triangle State problemI/OHand exampleDevelop solutionand CodingTestingx=3 cmy=4 cmareaxyarea = ½ * 3 *4 = 6 cm2Get values of x and yCompute area = ½*x*yPrint area
20Given two complex numbers z1=a1+b1*i and z2=a2+b2*i, find z3= z1+z2 State problemI/OHand exampleDevelop solutionand CodingTestingGet a1 b1 a2 b2Compute a3 = a1 + a2Compute b3 = b1 + b2Print z3 = a3 + b3 * i
21Given the number of seconds, find number of hours, minutes and seconds total_secMSState problemI/OHand exampleDevelop solutionand CodingTesting3675 seconds can be written as1 hour 1 min 15 secGet total_secH = total_sec / 3600 (integer division)M = (total_sec – (H*3600)) / 60M = (total_sec mod 3600) / 60S = total_sec – (H*3600) – (M*60)Print H hour, M min, S sec
22A little bit difficult examples to develop solutions Some problems are from How to Solve it: Modern Heuristics by Michalewicz and Fogel. Springer 2004.
23Example: Average speed Suppose a car goes from city A to city B with speed of 40 mph and immediately comes back with the speed of 60 mph.What is the average speed?Can you generalize this solution and outline step by step to find average speed when the speed from A to B is X and the speed from B to A is Y?
24Quiz: Dimensions of a rectangle ranch? A farmer has a rectangular ranch with a perimeter of P=110 meters and an area of A=200 square meters.What are thedimensions ofhis ranch?What are the dimensions for any P and A?yx
25Example: Make a triangle with maximum area Suppose you have a stick with the length of L meters. You want to divide it into three pieces with the length of x, y, and z meters, and make a triangleFind x, y, z such thatthe area of that triangleis maximum.Lxyz
26Example: Climbing a wooden post A snail is climbing a wooden post that is H=10 meters high.During the day, it climbs U=5 meters up.During the night, it falls asleep and slides down D=4 meters.How many days will it take the snail to climb the top of the post?Given that H > U > D. Can you generalize your solution for any H, U, and D?
27Minimum number of coins Suppose you want to give x=67 cents to a person, what is the minimum number of coinsYou have many 25, 10, 5, 1 cents
28Example: Assign letter grades Suppose I have your grades as followsname final midterm avg_hw quizze letteraaaa ?bbbb ?…How can I assign letter grades?
29Example: Sum of numbers Given n (for example n=1000), computesum = …+nsum_odd = …+(2n+1)ln2=1- 1/2 + 1/3 - 1/4 +… 1/n
30If you want this course to be easy, you must learn how to act like a computer Develop necessary step-by-step instructions to perform the following real-life tasks like a computerDriving a carFollowing a direction to find an addressCook somethingSearch a word in a dictionaryMake a phone callNow, its your turn to think of a problem and give STEP-BY-STEP instructions…For the same problem, we may have different and yet correct solutions. So, …
31Ten heuristics for problem solving How to Solve it: Modern Heuristics by Michalewicz and Fogel. Springer 2004.Don’t rush to give an answer, think about itConcentrate on the essentials and don’t worry about the noise (tiny details)Sometimes finding a solution can be really easy (common sense), don’t make it harder on yourselfBeware of obvious solutions. They might be wrongDon’t be misled by previous experience
32Ten heuristics for problem solving How to Solve it: Modern Heuristics by Michalewicz and Fogel. Springer 2004.Start solving. Don’t say “I don’t know how”Most people don’t plan to fail, they just fail to plan!Don’t limit yourself to the search space that is defined by the problem. Expand your horizonConstraints can be helpful to focus on the problem at the handDon’t be satisfied with finding a solution, look for better onesBe patient. Be persistent!
33A Checklist for Engineering Reasoning http://www. criticalthinking 1. All engineering reasoning expresses a purpose. Take time to state your purpose clearly.Distinguish your purpose from related purposes.Check periodically to be sure you are still on target.Choose realistic and achievable purposes.
342. All engineering reasoning seeks to figure something out, to settle some question, solve some engineering problem.Take time to state the question at issue clearly and precisely.Express the question in several ways to clarify its meaning and scope.Break the question into sub-questions.Determine if the question has one right answer, or requires reasoning from more than one hypothesis or point of view.
353. All engineering reasoning requires assumptions. Clearly identify your assumptions and determine whether they are justifiable.Consider how your assumptions are shaping your point of view.Consider the impact of alternative or unexpressed assumptions.Consider the impact of removing assumptions.
364. All engineering reasoning is done from some perspective or point of view. Identify your specific point of view.Consider the point of view of other stakeholders.Strive to be fair-minded in evaluating all relevant points of view.
375. All engineering reasoning is based on data, information, and evidence. Validate your data sources.Restrict your claims to those supported by the data.Search for data that opposes your position as well as alternative theories.Make sure that all data used is clear, accurate, and relevant to the question at issue.Make sure you have gathered sufficient data.
386. All engineering reasoning is expressed through, and shaped by, concepts and theories. Identify key concepts and explain them clearly.Consider alternative concepts or alternative definitions of concepts.Make sure you are using concepts and theories with care and precision.
397. All engineering reasoning entails inferences or interpretations by which we draw conclusions and give meaning to engineering work.Infer only what the data supports.Check inferences for their internal and external consistency.Identify assumptions that led you to your conclusions.
408. All engineering reasoning leads somewhere or has implications and consequences. Trace the implications and consequences that follow from your data and reasoning.Search for negative as well as positive implications (technical, social, environmental, financial, ethical).Consider all possible implications.