Assignment 1
Assignment 1
Assignment 1
• When developing software applications, these skills are used to analyze problems to
produce solutions for better development.
• Programmers need to think about how to complete the given tasks while
instructing the computer to be understood.
• To do this, computational thinking skill, including figuring out what the task is about
and how to get there is a must. This step comes beforehand the actual coding.
What if programmers are lack in computational thinking skill
• The higher chance of getting inaccurately different result from desired result.
Four corner stones of computational thinking
Decomposition
The process of breaking big and complex problems or system down into
small and manageable pieces. The problem is structured as step by step
processes which is easier to understand.
Cleaning house
• Instead of solving the original problem directly, the simpler sub-problems are solved
firstly.
• After that, those solutions from sub-problems can be put together to solve the original
problem.
Usage problem
• When the task to too big to handle programmers have to use this skill.
• This skill helps programmers solve big and complex program in much convenience
way without overwhelming.
• For example- Let’s say we have to develop a gaming software, instead of thinking how
to develop the whole software, we can decompose the features and functions needed in
that software and then composing all of them would automatically form a gaming
software.
Analysis
• At the beginning, programmers list down what functions and features are needed in the
program.
• For example – a calculator must be able to used for adding, subtracting, multiplication,
division, finding squares and roots, and maybe other engineering functions.
• So the programmer will break it down into smaller task and will solve them one by one.
• Then, a complete calculator program would be built after solving all those small problems.
Analysis
• Some AI software can give the solution for a whole mathematic problem.
• These softwares scan a problem and decompose the big problem into a smaller
steps where the program can manage to calculate.
• When giving the step by step explanation, the program again decompose the
answer into the steps where the user can understand easily.
Pattern recognition
• We recall the things that have done before and match with the current problem.
• Pattern recognition can also be used in deciding whether the lines of code are
reusable or loop.
• When analyzing the big data, pattern recognition skills help to analyze and
organize the data better.
Analysis
• In those programs, the patterns of the features of the celebrity face and
the user’s face is recognized.
• Then the program will choose a celebrity that has the closet pattern with
the user.
Analysis
• Those patterns are analyzed from the behaviors and characteristics of the user, its
friends, the people within the user’s area.
• Those behaviours includes the common topics those people are following and
interested in, the mutual friends they share, the user’s demographic and
geographic.
Abstraction
For example – The information “African kids like candy, Asian kids like candy, European kids like
candy” has too much unnecessary details. We can just abstract the information “Kids like candy” .
Abstraction is done by
• Then taking care about the information and elements that is associated with the
problem and solution.
• Also understanding and looking the problem the whole as big picture.
Usage problem
• When giving explanation about the program, we can just left out complicated
details.
Analysis
• It means that the program try to translate the sentence user type into another
language, It choose the words the are relevant to the topic of the sentence.
• For example the word “like” can be used as “such as” or “enjoy”. But based on the
meaning of the user input, program ignore one definition and take the other one.
Analysis
• Some programs such as spreadsheet and database software allow us to sort the
data.
• These programs allow user to sort certain kind of data from bunch of data.
• That means programs hide all the other data, and only display necessary data.
• In search engines that have plenty of resources (such as google, safari, bing),
those resources are abstracted to show only some resources to user.
• They filer out the resources which are not relevant with the user’s keywords.
• Then they choose the most relevant answers and display them
• So that user is not distracted by other topics and get to explore only the things
he/she searched.
Algorithm design
• This algorithm design should be able to replicate and solve the problem every time.
Usage problem
• Programmers can get same result with any language they code by
following the algorithm design.
Analysis
• Back to the Rubik cube auto-solve programs, after it recognize the pattern,
it produces algorithm.
• That algorithm is designed to solve the specific stage of the cube and
produce the intended result every time.
• For example – in specific pattern, use this alogorithm (e.g. turn the right
side, turn the down side..), to solve a surface.
Analysis
• Back to the Rubik cube auto-solve programs, after it recognize the pattern,
it produces algorithm.
• That algorithm is designed to solve the specific stage of the cube and
produce the intended result every time.
• For example – in specific pattern, use this alogorithm (e.g. turn the right
side, turn the down side..), to solve a surface.
Analysis
• In mapping software (e.g. Google map, apple map), it can give a route with
shortest time to get to specific destination.
• This is done by using algorithms to check the available routes, check the
distance, check the traffic.
• Then the an algorithm again, it calculates the best way to get there .
Analysis
Algorithm is used in almost every programs including embedded systems, and robotics.
For example
• In self-driving cars , the set of instructions are written to perform every time the car is
started.
• The algorithm might include checking the route, starting the engine, adjusting the speed,
control the steering wheel, stop if it arrives the destination.
• In vacuum cleaner, the algorithm might be turning vacuuming mechanism on, checking
the obstacles with sensor, moving as the obstacles are sensed.
Evaluation
Additional
email name address Sub amount charges
• Many tasks and requirements are needed and given to develop a POS software
from scenario.
• Before calculating the final total amount of all items, final amount of
an item will be calculated.
• The main pros of using decomposition in this problem is that In this way, I will
not see it as a complicated problem to solve anymore.
• Another thing is if this problem were a real project, The decomposed steps can
be worked on by different people for example team members
• The workload is shared, thus it would be done faster, probably better, and more
efficiently.
Evaluation
• Also, if this project were working with a team, there should have great
communication and teamwork between teammates.
Evaluation
• Another skill that can be utilized for the case scenario is Abstraction.
• For example inputs such as customer name, address, email is not necessary
in calculations.
• For example – while calculating the final amount, we don’t need to think
about price and product name anymore, we just need sub amount, tax and
discount.
Evaluation
• There is another way that abstraction can applied, and that is we can
generalize things.
• When we are trying to get the general idea of our problem, we can
generalize things.
• That means for example, when trying to design the user interface of
software, we just have to think about how a POS system should look like.
Evaluation
Pros includes
• Generalizing the idea and not think about details in specific situation,
allows user to spend less time thinking and more time on action.
Evaluation
Pros includes
• Generalizing the idea and not think about details in specific situation,
allows user to spend less time thinking and more time on action.
Evaluation
Software designing is stating the functions, tasks and that a program needs to
perform and features and requirements that are needed in a software. (e.g.
flowcharts, pseudocode, UML diagrams)
How the software design impact the quality of software?
• Software design comes before the coding, and 70% of the thinking skills are
applied here.
• Programmers mostly just follow the design, so the software designers should include
desired outcomes in design.
• It is easier to fix and modify the design than the whole program.
The importance of computational thinking skill in software design
• Abstraction helps to understand the task as well, for example- what result does
the client need the program to output.
Addition +
Subtraction -
Division ( return quotient) /
Division( return remainder) %
Multiplication *
Equal ==
Not equal !=
Greater than >
Less than <
In flow chart, rectangle boxes are used to set
Ans= Num1+Num2
mathematical functions.
• Using the resources efficiently minimize the uses of storage, cpu and run time of the
program.
• Performance means how fast and how smooth a program can function and response.
• When using the resources, you should balance the cost and quality.
Maintainability
• Maintainability means a software should be easy to fix, repair and improve later.
• How long a software would last and useful depends on the maintenance of the
program.
Portability
• Reliability is about how the program can operate without any failure in an
given environment and time frame.
• Robustness is the ability of the software to handle the faults and errors.
• Software can deal with hardware faults, bugs and user mistakes.
• The interface of the software should be well designed and navigational while
maximizing the user experience.