DSOOP Class 03
DSOOP Class 03
BASIC CONCEPT
1
How to create programs
Requirements
Analysis: bottom-up vs. top-down
Design: data objects and operations
Refinement and Coding
Verification
– Program Proving
– Testing
– Debugging
2
Software Development
Requirement analysis, leading to a
specification of the problem
Design of a solution
Implementation of the solution (coding)
Analysis of the solution
Testing, debugging and integration
Maintenance and evolution of the system.
3
Specification of a problem
A precise statement/description of the
problem.
It involves describing the input, the
expected output, and the relationship
between the input and output.
4
Design
Formulation of a method, that is, of a sequence of
steps, to solve the problem.
6
Implementation
(Good Principles)
Code Re-use
– Re-use of other people’s software
– Write your software in a way that makes it (re)usable
by others
Hiding of implementation details: emphasis on
the interface.
Hiding is also called data encapsulation
Data structures are a prime instance of data
encapsulation and code re-use
7
Analysis of the Solution
Estimation of how much time and memory an
algorithm takes.
The purpose is twofold:
– to get a ballpark figure of the speed and memory
requirements to see if they meet the target
– to compare competing designs and thus choose the
best before any further investment in the application
(implementation, testing, etc.)
8
Testing and Debugging
Testing a program for syntactical correctness (no
compiler errors)
This is done by
– having sample input data and corresponding, known output data
– comparing the program output to the known output
– in case there is no match, modify the code to achieve a perfect
match.
10
Maintenance and Evolution of a
System
Ongoing, on-the-job modifications and
updates of the programs.
11
Specification vs. Implementation
Operation specification
– function name
– the types of arguments
– the type of the results
Implementation independent
12
Measurements
Criteria
– Is it correct?
– Is it readable?
–…
Performance Analysis (machine independent-
priori )
– space complexity: storage requirement
– time complexity: computing time
Performance Measurement (machine dependent-
posteriori)
13
Space Complexity
S(P)=C+SP(I)
Fixed Space Requirements (C)
Independent of the characteristics of the inputs
and outputs
– instruction space
– space for simple variables, fixed-size structured
variable, constants
Variable Space Requirements (SP(I))
depend on the instance characteristic I
– number, size, values of inputs and outputs associated
with I
– recursive stack space, formal parameters, local
variables, return address
14
main()
{ int a,b,c;
scanf(“%d %d”, &b,&c);
a=b+c;
Printf ( “%d”,a);
}
15
*Program 1.11: Recursive function for summing a list of numbers
float rsum(float list[ ], int n)
{
if (n) return rsum(list, n-1) + list[n-1];
return 0;
} Ssum(I)=Ssum(n)=6n
Assumptions:
*Figure 1.1: Space needed for one recursive call of Program 1.11
16
Time Complexity
T(P)=C+TP(I)
Compile time (C)
independent of instance characteristics
run (execution) time TP
Definition TP(n)=caADD(n)+csSUB(n)+clLDA(n)+cstSTA(n)
A program step is a syntactically or semantically
meaningful program segment whose execution
time is independent of the instance characteristics.
Example
– abc = a + b + b * c + (a + b - c) / (a + b) + 4.0
– abc = a + b + c Regard as the same unit
machine independent
17
Methods to compute the step count
18
Iterative summing of a list of numbers
*Program 1.12: Program 1.10 with count statements (p.23)
20
Matrix addition
21
*Program 1.16: Matrix addition with count statements (p.25)
23
Tabular Method
*Figure 1.2: Step count table for Program 1.10 (p.26)
Iterative function to sum a list of numbers
steps/execution
Statement s/e Frequency Total steps
float sum(float list[ ], int n) 0 0 0
{ 0 0 0
float tempsum = 0; 1 1 1
int i; 0 0 0
for(i=0; i <n; i++) 1 n+1 n+1
tempsum += list[i]; 1 n n
return tempsum; 1 1 1
} 0 0 0
Total 2n+3
24
Recursive Function to sum of a list of numbers
*Figure 1.3: Step count table for recursive summing function (p.27)
25
Matrix Addition
*Figure 1.4: Step count table for matrix addition (p.27)
Total 2rows‧cols+2rows+1
26
Exercise 1
27
Exercise 2
28
Exercise 3
*Program 1.20:Matrix product function(p.29)
29
Exercise 4
30
Asymptotic Notation
Theta Notation (Θ-notation) -
*Average case analysis
Big-O Notation (O-notation)
*Worst case Analysis
Omega Notation (Ω-notation)
*Best case analysis
Eg. Array :Linear Search
10 20 30 40 50 60 70 80 90 100
https://www.youtube.com/watch?v=AWHi1-Xmd-Y
31
i) printf(“Hello”); O(1)
ii) for (i=1 ; i<n ;i++) iii) for (i=1 ; i<n ;i++)
printf(“Hello”); printf(“Hello”);
O(n) for (i=1 ; i<m ;i++)
printf(“Hello”);
O(n+m)
iv) for (i=1 ; i<n ;i++)
for (j=1 ; j<n ;j++)
printf(“Hello”);
O(n2) 32
O(1): constant
O(n): linear
O(n2): quadratic
O(n3): cubic
O(2n): exponential
O(logn) - recursive algorithm
O(nlogn) - recursive algorithm
33
*Figure 1.7:Function values (p.38)
34
*Figure 1.8:Plot of function values(p.39)
nlogn
logn
35
*Figure 1.9:Times on a 1 billion instruction per second computer(p.40)
36
Algorithm
Definition
An algorithm is a finite set of instructions that
accomplishes a particular task.
Criteria
– input
– output
– definiteness: clear and unambiguous
– finiteness: terminate after a finite number of steps
– effectiveness: instruction is basic enough to be carried
out
37
Data Type
Data Type
A data type is a collection of objects and a set of
operations that act on those objects.
Abstract Data Type
An abstract data type(ADT) is a data type that is
organized in such a way that the specification of
the objects and the operations on the objects is
separated from the representation of the objects
and the implementation of the operations.
38
*Structure 1.1:Abstract data type Natural_Number
structure Natural_Number is
objects: an ordered subrange of the integers starting at zero and ending
40