Emaz Kareem (10-F) - Problem Solving and Algorithm Design
The document discusses various aspects of computational thinking and software development. It defines the key components of computational thinking as abstraction, decomposition, and algorithm design. It also discusses problem solving steps, abstraction with an example, how decomposition and pattern recognition help in software development, and defines an algorithm and how it is represented.
Emaz Kareem (10-F) - Problem Solving and Algorithm Design
The document discusses various aspects of computational thinking and software development. It defines the key components of computational thinking as abstraction, decomposition, and algorithm design. It also discusses problem solving steps, abstraction with an example, how decomposition and pattern recognition help in software development, and defines an algorithm and how it is represented.
2. What are the various steps involved in problem-solving? Ans) The first step of problem-solving is to understand the problem. To do so first all the relevant data must be gathered to understand the problems and the circumstances present. If it's solvable, then the complex problem can be divided into smaller modules and further solved separately for better efficiency. The next step is to Construct a plan to solve the problem. This is done by checking whether this type of problem has been solved before. If that is so, then the plan is adapted according to the developer’s needs and suitability. Some complications can even be resolved using mathematics. The third step is to implement and apply the plan while making sure that at each stage what is being done is correct. Lastly the developer has to check for errors and look for improvements in the current plan. The solution must be checked whether it's correct. It has to be productive and reusable for the future. 3. What is abstraction? Explain with an example. Ans) Abstraction is similar to generalization rather than something concrete. In software engineering Abstraction is the simplified version of something technical like an object in a program. The purpose behind abstracting data is to reduce the complexity by removing unnecessary information or temporal and physical details. This allows the user to focus on details which are more important while developing a program and running numerous computer operations etc. To explain this concept better let's take a common daily life example. Which is making coffee using a coffee machine. All you have to do is provide the water, the coffee beans, switch on the switch and choose the kind of coffee you need. What we do not need to know is how the machine is working internally to brew the coffee, neither do we need to know the heating temperature or the amount of ground coffee beans. Another big example is that the driver doesn't have to know the internal working/ inner mechanism of the accelerator or the brakes to be able to drive the car. 4. How is decomposition helpful in software development? Ans)Decomposition is helpful in software development when making codes. It is beneficial to break down the code into smaller chunks as it saves a lot of time: the code for a complex program could run to many lines of code. If a mistake was made it would take a very long time to find the error. Another benefit of decomposition is that it allows programmers to easily copy and reuse useful chunks of code for other programs. Also to solve sophisticated problems in programs by decomposing it based on different characteristics, disciplines, and functionalities results in increased computational efficiency. This is the case as the programmer or developers gets a clearer, well-organized and characterized picture of the overall program which allows him to focus on separate modules with greater precision and accuracy. This ultimately helps in error-tracking as mentioned before and allows the program/software to be modified. 5. How does pattern recognition save time and effort in software development? Ans) Pattern recognition involves finding the similarities, patterns or shared characteristics among small, decomposed problems that can help us solve more complex problems more efficiently. This saves time and effort as the same solution can be used for each similar occurrence and pattern found in problems. Also it can help derive a better and revised solution instead of spending your effort in coming up with a new solution which may even not turn out to be as perfect as the revised solution mentioned previously. Lastly decomposed problems can be put to use to easily trace similar errors in other parts of the program when a pattern is identified, it allows programmers to prevent from taking similar actions that had led to errors previously. 6. What is an algorithm? In what forms, is it represented? Ans) An algorithm is the set of logical steps or instructions needed by the computer to reach a specific goal or to solve a specific problem by breaking it down. An algorithm specifies only the tasks that are needed to be carried out in a chronological order, starting with start and ending with end. It is represented in the form of pseudocode which is a semi-programming language that describes the steps in an algorithm using simple words and mathematical operators . Another form used is a diagram known as flowchart that depicts the steps graphically using standard symbols to represent the different types of instructions and order to be followed to perform a task. This also must have a clear start and ending which is indicated by terminator symbols (Start and End).