See discussions, stats, and author profiles for this publication at: https://www.researchgate.
net/publication/351493978
Steps of Problem Solving in Computer Science
Presentation · March 2021
CITATIONS READS
0 47,234
1 author:
Ishaq Zakari
Umaru Musa Yar'adua University Katsina
10 PUBLICATIONS 1 CITATION
SEE PROFILE
All content following this page was uploaded by Ishaq Zakari on 11 May 2021.
The user has requested enhancement of the downloaded file.
PRESENTATION
By:
ISHAQ ZAKARI
DEPARTMENT OF COMPUTER SCIENCE
FEDERAL COLLEGE OF EDUCATION, KATSINA STATE, NIGERIA.
+2347066377161, +2349079945536
csc181836@students.umyu.edu.ng
ishaqzakarikakasmall18@gmail.com
TOPIC:
Steps of solving problems in Computer Science
MARCH, 2021
1
PROLOGUE
Solving problems is the core of computer science. Programmers must
first understand how a human solves a problem, then understand how to
translate this "algorithm" into something a computer can do, and finally how to
"write" the specific syntax (required by a computer) to get the job done. It is
sometimes the case that a machine will solve a problem in a completely
different way than a human.
Problem solving consists of using generic or ad hoc methods in an orderly
manner to find solutions to problems. Some of the problem-solving techniques
developed and used in philosophy, artificial intelligence, computer
science, engineering, mathematics, medicine and societies in general are related
to mental problem-solving techniques studied in psychology and cognitive
sciences.
PROBLEM SOLVING IN COMPUTER SCIENCE
In computer science and in the part of artificial intelligence that deals
with algorithms, problem solving includes techniques
of algorithms, heuristics and root cause analysis. The amount of resources (e.g.
time, memory, energy) required to solve problems is described
by computational complexity theory. In more general terms, problem solving is
part of a larger process that encompasses problem determination, de-
duplication, analysis, diagnosis, repair, and other steps.
2
Other problem solving tools are linear and non – linear
programming, queuing systems, and simulation. Much of computer science
involves designing completely automatic systems that will later solve some
specific problem – systems to accept input data and, in a reasonable amount of
time, calculate the correct response or a correct – enough approximation.
In addition, people in computer science spend a surprisingly large amount of
human time finding and fixing problems in their programs: Debugging.
The following are six steps that must be followed to solve a problem using
computer
1. Problem Analysis
2. Program Design - Algorithm, Flowchart and Pseudocode
3. Coding
4. Compilation and Execution
5. Debugging and Testing
6. Program Documentation
PROBLEM ANALYSIS
A Problem Analysis investigates a situation/problem in order to allow the
researcher to understand more fully the problem, in order to recommend
practical solutions for solving it. Thus, the problem analysis would report that
the lighting was not the cause of the problem, saving the company time and
money.
The following are steps involves in problem analysis
3
a. Understand your problem
b. Break the problem
c. Define problem goals
d. Decide how to measure progress towards goals.
1. Understand Your Problem: You must understand the issue, problem or
symptom you are experiencing before you can realistically try to figure out what
to do about it. As a first step towards self – help, take steps to understand the
nature of your problem.
2. Break the Problem Down Into Small Parts: Even when you understand
what your problem is, it may be too big and too well established for you to
figure out how to fix all at once. Instead of trying to tackle the entire problem
all at once, break it down into manageable parts. Then, make a plan for how you
will fix or address each part separately.
3. Define Problem Goals: For each of your small manageable problem parts,
figure out what your goals are; where you want to end up at the end of the self-
help process for each part of your problem. If you don't know what you are
working towards, you will never know when you've arrived there.
4. Decide How To Measure Progress Towards Goals: Find ways to measure
progress you make towards accomplishing each of your problem goals, so that
you will always know:
a. What your problem starting point looked like,
b. How far you've come towards meeting your goals at any given moment,
and
4
c. How you'll know when you've met your goals and are done.
ALGORITHM
In mathematics and computer science, an algorithm is a finite sequence
of well-defined, computer – implementable instructions, typically to solve a
class of problems or to perform a computation. Algorithms are
always unambiguous and are used as specifications for
performing calculations, data processing, automated reasoning, and other tasks.
In computer systems, an algorithm is basically an instance
of logic written in software by software developers, to be effective for the
intended "target" computer(s) to produce output from given (perhaps null) input.
An optimal algorithm, even running in old hardware, would produce faster
results than a non-optimal (higher time complexity) algorithm for the same
purpose, running in more efficient hardware; that is why algorithms, like
computer hardware, are considered technology.
FLOWCHART
A flowchart is a type of diagram that represents a workflow or process. A
flowchart can also be defined as a diagrammatic representation of an algorithm,
a step-by-step approach to solving a task.
The flowchart shows the steps as boxes of various kinds, and their order
by connecting the boxes with arrows. This diagrammatic representation
illustrates a solution model to a given problem. Flowcharts are used in
5
analyzing, designing, documenting or managing a process or program in various
fields.
PSEUDOCODE
In computer science, pseudocode is a plain language description of the
steps in an algorithm or another system. Pseudocode often uses structural
conventions of a normal programming language, but is intended for human
reading rather than machine reading.
for (i = 1; i <= 100; i++) {
set print_number to true;
If i is divisible by 3 {
print "Fizz";
set print_number to false; }
If i is divisible by 5 {
print "Buzz";
set print_number to false; }
If print_number, print i;
print a newline;
}
}
CODING
Coding or computer programming is the process of designing and
building an executable computer program to accomplish a
specific computing result or to perform a specific task. Programming involves
tasks such as: analysis, generating algorithms, profiling algorithms' accuracy
and resource consumption, and the implementation of algorithms in a
chosen programming language (commonly referred to as coding).
6
COMPILATION:
Compilation is the process the computer takes to convert a high – level
programming language into a machine language that the computer can
understand. The software which performs this conversion is called a compiler.
High – level language, Machine language, Programming terms.
The translation process influences the design of computer languages, which
leads to a preference of compilation or interpretation.
EXECUTION:
Execution in computer and software engineering is the process by which
a computer or virtual machine reads and acts on the instructions of a computer
program. Each instruction of a program is a description of a particular action
which must be carried out, in order for a specific problem to be solved. As the
executing machine follows the instructions, specific effects are produced in
accordance with the semantics of those instructions.
DEBUGGING:
In computer programming and software development, debugging is the
process of finding and resolving bugs (defects or problems that prevent correct
operation) within computer programs, software, or systems.
Debugging tactics can involve interactive debugging, control flow analysis, unit
testing, integration testing, log file analysis, monitoring at
the application or system level, memory dumps, and profiling. Many
7
programming languages and software development tools also offer programs to
aid in debugging, known as debuggers.
TESTING:
Software testing is an investigation conducted to provide stakeholders
with information about the quality of the software product or service under
test. Software testing can also provide an objective, independent view of the
software to allow the business to appreciate and understand the risks of software
implementation. Test techniques include the process of executing a program or
application with the intent of finding failures, and verifying that the software
product is fit for use.
Software testing involves the execution of a software component or
system component to evaluate one or more properties of interest. In general,
these properties indicate the extent to which the component or system under
test:
Meets the requirements that guided its design and development,
Responds correctly to all kinds of inputs,
Performs its functions within an acceptable time,
Is sufficiently usable,
Can be installed and run in its intended environments
Achieves the general result its stakeholder’s desire.
8
PROGRAM DOCUMENTATION:
Software documentation is written text or illustration that accompanies
computer software or is embedded in the source code. The documentation either
explains how the software operates or how to use it, or may mean different
things to people in different roles.
Documentation is an important part of software engineering. Types of
documentation include:
Requirements – Statements that identify attributes capabilities,
characteristics, or qualities of a system. This is the foundation for what will
be or has been implemented.
Architecture/Design – Overview of software. Includes relations to an
environment and construction principles to be used in design of software
components.
Technical – Documentation of code, algorithms, interfaces, and APIs.
End user – Manuals for the end-user, system administrators and support
staff.
Marketing – How to market the product and analysis of the market demand.
9
REFERENCES
Malakooti, Behnam (2013). Operations and Production Systems with Multiple
Objectives. John Wiley & Sons. ISBN 978-1-118-58537-5.
"The Definitive Glossary of Higher Mathematical Jargon — Algorithm". Math
Vault. August 1, 2019. Archived from the original on February 28, 2020.
Retrieved November 14, 2019.
"The Definitive Glossary of Higher Mathematical Jargon — Algorithm". Math
Vault. August 1, 2019. Archived from the original on February 28, 2020.
Retrieved November 14, 2019.
SEVOCAB: Software Systems Engineering Vocabulary. Term: Flow chart.
Retrieved 31 July 2008.
Compilers: Principles, Techniques, and Tools by Alfred V. Aho, Ravi Sethi,
Jeffrey D. Ullman - Second Edition, 2007.
S. Gill, The Diagnosis of Mistakes in Programmes on the EDSAC, Proceedings
of the Royal Society of London. Series A, Mathematical and Physical
Sciences, Vol. 206, No. 1087 (May 22, 1951), pp. 538-554.
Thomas T. Barker, Writing Software Documentation, Preface, xxiv. Part of
the Allyn & Bacon Series in Technical Communication, 2nd ed. Upper
Saddle .
10
View publication stats