360 likes | 375 Views
Explore the evolving landscape of problem solving and emerging technologies, essential for future readiness. Learn effective decision-making criteria, problem-solving models, and techniques like Algorithm, PseudoCode, and Flowchart.
E N D
Emerging Computing Unit-1: Introduction to Problem Solving M. Abu Baker Siddique
Course Outlines • Introduction to problem solving • Introduction to software engineering • Overview of .NET Framework & Methods • Overview of Visual Studio 2005 • Introduction to C# • Classes & OOP • Software Requirements • Requirements Engineering Processes • Rapid Application Development • Forms & Controls • Software Testing • Verification and validation
Introduction • Emerge means • “to move out of or away from something and become visible”. • “become apparent or prominent” • “coming to maturity” • "the rising generation“
Introduction Continued… • Obtaining a broad view of emerging trends and new technologies as they relate to business can help an organization wait and prepare for the future • Organizations that can most effectively grasp the deep currents of technological evolution can use their knowledge to protect themselves against sudden and fatal technological obsolescence
Trends Shaping Our Future • World’s population will double in the next 40 years • Population in developed countries is living longer • Growth in information industries creates a knowledge-dependent global society • The global economy is becoming more integrated • The economy and society are dominated by technology • Pace of technological innovation is increasing • Time is becoming one of the most precious commodities
Objectives • Learn how to state and clarify a problem • Develop a procedure for problem solving • Learn the traps in problem solving
What’s typical? Self-Doubt Over Confidence Procrastination Flip-flops Desperation! WRONG!
Six Criteria for Effective Decisions • Focuses on what is important • Logical and consistent • Acknowledges objective and subjective factors, blends analytical and intuitive thinking • Does not gather too much information • Tries to reach consensus • Straightforward, reliable, easy to use, flexible
Problem Solving Model P OACT roblem bjectives lternatives onsequences radeoffs
Additional Factors • Risk • Uncertainty • Linked decisions
Problem Solving Steps • State the problem carefully • Acknowledge complexities • Avoid assumptions and prejudices • Specify the objectives • Create imaginative alternatives • Understand the consequences of the alternative • Grapple with your tradeoffs………con’t
Problem Solving Steps, con’t • Clarify uncertainties • Think about your risk tolerance and the risks of each alternative • Consider linked decisions • Each alternative opens or closes future options
What’s the best solution? A good solution to a well-posed problem…. Is a almost always a smarter choice than.. An excellent solution to a poorly posed problem
Define the Problem • What triggers the problem? • State the problem • Question the constraints of the problem • statement • Identify the essential elements • How does this impact other decisions? • What is the scope of the problem? • Gain insights from others • Restate problem, if necessary
What Objectives Do • Help determine what information to seek • Explain your choices to others • Determine the importance of, time and effort devoted to the problem
How to identify objectives • Write down the concerns you hope to address: • Wish list • Worst possible outcome • Impact on others • Insights from others • What’s a good alternative but unfeasible? • What is bad about the worst alternatives?
How to identify objectives • Convert the concerns into succinct objectives • Separate the ends from the means • Clarify what you mean by each objective • Test your objectives
Alternatives • Use your objects and ask HOW? • Challenge constraints to your alternatives • Set high aspirations • Think through your alternatives before consulting others • Learn from past experience • Then ask others for suggestions
Some Techniques to solve a problem • We can solve a problem using other techniques such as: • Algorithm • Pseudo Code • Flow Chart
Some Techniques to solve a problem • Algorithm • An algorithm is simply a solution to a problem • An algorithm presents the solution to a problem as a well defined set of steps or instructions • A recipe in a cookbook is a good example of an algorithm
Some Techniques to solve a problem • Pseudocode • Pseudocode is one of the methods that could be used to represent an algorithm • It is not written in a specific syntax that is used by a programming language and therefore cannot be executed in a computer • But it closely resembles the structure of a programming language and contains roughly the same level of detail
Some Techniques to solve a problem • Flowchart • A flowchart is a pictorial representation of an algorithm in which the steps are drawn in the form of different shapes of boxes and the logical flow is indicated by interconnecting arrows. • The boxes represent operations and the arrows represent the sequence in which the operations are implemented.
Some Techniques to solve a problem • Flowchart
What is Software? • The product that software professionals build and then support over the long term. • Software encompasses: • instructions (computer programs) that when executed provide desired features, function, and performance; • data structures that enable the programs to adequately store and manipulate information and • documentation that describes the operation and use of the programs.
What is Software? • Software is more than just a program code. • A program is an executable code, which serves some computational purpose. • Software is considered to be collection of executable programming code, associated libraries and documentations.
Engineering • On the other hand, • is all about developing products • using well-defined • scientific principles and methods.
Software Engineering • is an engineering branch associated with development of software product using well-defined scientific principles, methods and procedures. • The outcome of software engineering is an efficient and reliable software product.
Software Engineering Definition • The seminal definition: • [Software engineering is] the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. • The IEEE definition: • Software Engineering: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1).
Importance of Software Engineering • More and more, individuals and society rely on advanced software systems. We need to be able to produce reliable and trustworthy systems economically and quickly.
Importance of Software Engineering • It is usually cheaper, in the long run, to use software engineering methods and techniques for software systems rather than just write the programs as if it was a personal programming project. For most types of system, the majority of costs are the costs of changing the software after it has gone into use.