Software Engineering CS103 February 13, 2004. How Do You Solve Big Problems? Thousands of programmers Thousands of programmers Months or years of coding.

Slides:



Advertisements
Similar presentations
1 ICS102: Introduction To Computing King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer Science.
Advertisements

Problem Solving and Algorithm Design
Chapter 6 Problem Solving and Algorithm Design. 6-2 Chapter Goals Determine whether a problem is suitable for a computer solution Describe the computer.
Creating Computer Programs lesson 27. This lesson includes the following sections: What is a Computer Program? How Programs Solve Problems Two Approaches:
Algorithms and Problem Solving-1 Algorithms and Problem Solving Mainly based on Chapter 6: “Problem Solving and Algorithm Design” from the Book: “Computer.
17 March, 2000 CS1001 Lecture 2 Programming and problem solving Software engineering practices.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
Algorithms and Problem Solving
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
 Monday, 9/30/02, Slide #1 CS106 Introduction to CS1 Monday, 9/30/02  QUESTIONS (on HW02, etc.)??  Today: Libraries, program design  More on Functions!
Chapter 6 Problem Solving and Algorithm Design Nell Dale John Lewis.
Top-down Program Design, Relational and Logical Operators
Top-down Program Design Selim Aksoy Bilkent University Department of Computer Engineering
Program Design, Relational and Logical Operators Selim Aksoy Bilkent University Department of Computer Engineering
6-1 Problem Solving Problem solving is the act of finding a solution to a perplexing, distressing, vexing, or unsettled question.
Algorithms. Introduction Before writing a program: –Have a thorough understanding of the problem –Carefully plan an approach for solving it While writing.
Programming Fundamentals (750113) Ch1. Problem Solving
Chapter 4 Sec. 4.1, 4.2, 4.4 Procedures (User-defined)
The Art of Programming Top-Down Design. The Art of Problem Solving The art of problem solving is the transformation of an English description of a problem.
Problem Solving and Algorithm Design. 2 Problem Solving Problem solving The act of finding a solution to a perplexing, distressing, vexing, or unsettled.
Computer Science: A Structured Programming Approach Using C A Programming Example— Morse Code Morse code, patented by Samuel F. B. Morse in 1837,
School of Computer Science & Information Technology G6DICP - Lecture 9 Software Development Techniques.
CS 1308 Computer Literacy and The Internet Software.
CS 170 – INTRO TO SCIENTIFIC AND ENGINEERING PROGRAMMING.
Conditionals CS 103 February 16, Blast from the Past: C14 Dating Problem Statement: Calculate the age of a fossil from its C-14 radioactivity Problem.
Lecture 13: 10/10/2002CS149D Fall CS149D Elements of Computer Science Ayman Abdel-Hamid Department of Computer Science Old Dominion University Lecture.
CS221 Algorithm Basics. What is an algorithm? An algorithm is a list of instructions that transform input information into a desired output. Each instruction.
1 Program Development l Problem definition l Problem analysis l Algorithm design l Program coding l Program testing l Program documentation.
CMSC 2021 Software Development. CMSC 2022 Software Development Life Cycle Five phases: –Analysis –Design –Implementation –Testing –Maintenance.
C++ for Engineers and Scientists, Second Edition 1 Problem Solution and Software Development Software development procedure: method for solving problems.
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
Low-Level Programming Languages, Pseudocode and Testing Chapter 6.
Algorithms and Problem Solving
Problem Solving Techniques
Programming Fundamentals (750113) Ch1. Problem Solving
Programming Fundamentals (750113) Ch1. Problem Solving
Problem Solving and Algorithm Design
Global Challenge Fitness Friend Lesson 2.
Global Challenge Night Sensor Lesson 2.
Global Challenge Night Sensor Lesson 2.
Problem Solving and Algorithm Design
Global Challenge Night Sensor Lesson 2.
Global Challenge Night Sensor Lesson 2.
Global Challenge Fitness Friend Lesson 2.
Global Challenge Night Sensor Lesson 2.
Global Challenge Walking for Water Lesson 2.
Global Challenge Night Sensor Lesson 2.
Global Challenge Fitness Friend Lesson 2.
Algorithms and Problem Solving
Programming Fundamentals (750113) Ch1. Problem Solving
Global Challenge Fitness Friend Lesson 2.
Global Challenge Walking for Water Lesson 2.
Global Challenge Walking for Water Lesson 2.
Global Challenge Night Sensor Lesson 2.
Global Challenge Fitness Friend Lesson 2.
Global Challenge Night Sensor Lesson 2.
Global Challenge Fitness Friend Lesson 2.
Global Challenge Night Sensor Lesson 2.
Programming Fundamentals (750113) Ch1. Problem Solving
Global Challenge Fitness Friend Lesson 2.
Global Challenge Walking for Water Lesson 2.
Global Challenge Walking for Water Lesson 2.
Global Challenge Walking for Water Lesson 2.
Global Challenge Night Sensor Lesson 2.
Global Challenge Night Sensor Lesson 2.
Global Challenge Walking for Water Lesson 2.
Global Challenge Fitness Friend Lesson 2.
Global Challenge Walking for Water Lesson 2.
Global Challenge Walking for Water Lesson 2.
Global Challenge Walking for Water Lesson 2.
Presentation transcript:

Software Engineering CS103 February 13, 2004

How Do You Solve Big Problems? Thousands of programmers Thousands of programmers Months or years of coding Months or years of coding 10,000 or more lines of code 10,000 or more lines of code The same organizational skills can be used for small problems too!

What is Software Engineering? An entire discipline dedicated to studying ways of organizing and managing the solution of complex problems An entire discipline dedicated to studying ways of organizing and managing the solution of complex problems One of the first lessons of software engineering is that you should never start writing code until after you’ve completed a design phase (on paper or CASE). One of the first lessons of software engineering is that you should never start writing code until after you’ve completed a design phase (on paper or CASE).

Top-Down Design One of the most popular strategies from Software Engineering One of the most popular strategies from Software Engineering Problem Decomposition – describing a problem as a set of smaller, simpler sub- problems Problem Decomposition – describing a problem as a set of smaller, simpler sub- problems This is an iterative process, meaning you apply it over and over again. The repeated application of decomposition is called stepwise refinement This is an iterative process, meaning you apply it over and over again. The repeated application of decomposition is called stepwise refinement

A 5 Step Process For Top-Down Design 1. State the problem

A 5 Step Process For Top-Down Design 1. State the problem 2. Define the inputs and outputs “Black Box” Inputs Outputs

A 5 Step Process For Top-Down Design 1. State the problem 2. Define the inputs and outputs 3. Design the algorithm a. Decompose into subproblems b. Perform stepwise refinement

Use Pseudocode! When describing the algorithm, start thinking about how you might program it When describing the algorithm, start thinking about how you might program it Pseudocode is a mixture of English, Matlab syntax and your own personal symbology Pseudocode is a mixture of English, Matlab syntax and your own personal symbology With each refinement, you’ll add a little more code, until you’re ready to sit down at the computer and do some serious programming With each refinement, you’ll add a little more code, until you’re ready to sit down at the computer and do some serious programming

A 5 Step Process For Top-Down Design 1. State the problem 2. Define the inputs and outputs 3. Design the algorithm a. Decompose into subproblems b. Perform stepwise refinement 4. Convert the algorithm to a program

A 5 Step Process For Top-Down Design 1. State the problem 2. Define the inputs and outputs 3. Design the algorithm a. Decompose into subproblems b. Perform stepwise refinement 4. Convert the algorithm to a program 5. Test the program

Carbon 14 Dating Let’s try an example of top-down design. We want to figure out how old these bones are

Carbon 14 Dating Radioactive isotopes are not stable. They decay into other elements over time. Radioactive decay is an exponential process: Q(t) = Q 0 e -λt so….. t decay = -(1/λ) ln(Q/Q 0 ) Radioactive isotopes are not stable. They decay into other elements over time. Radioactive decay is an exponential process: Q(t) = Q 0 e -λt so….. t decay = -(1/λ) ln(Q/Q 0 )