Beruflich Dokumente
Kultur Dokumente
Computational Thinking
Module 1 :
Computing and Algorithms
Topics
What is Computational Thinking?
What is an Algorithm
How to Express an Algorithm?
Flowcharts
Nassi-Schneiderman Diagrams
Pseudo-code
2 of 39
3 of 39
What is a problem?
First you may wonder
What is a problem?
It is a question proposed for a solution.
Lets start with a simple example:
Find the last 4 digits in factorial n or n!
4 of 39
What is a problem?
Before that What is a factorial?
0! = 1
1! = 1
2! = 2 x 1! = 2 x 1
3! = 3 x 2! = 3 x 2 x 1 = 6
n! = n x (n-1)! = = n x (n-1) x (n-2) x x 2 x 1
5 of 39
What is a problem?
So we have to find out the last 4 digits in n!
Input: n
Output: 4 digits: could be 0000, 0001, , 9999
Computational thinking is the problem-solving
process to devise a method to compute the solution
6 of 39
7 of 39
Accumulator
Method 1
Method 1: (Straight-forward)
Step 1: First, ask the user to input or tell you n
Step 2: We can compute n! by iteratively doing
the multiplication (like using a calculator)
Accumulator initialized to n
Accumulator Accumulator x (n-1)
Accumulator Accumulator x (n-2)
8 of 39
Method 1
Accumulator Accumulator x 3
Accumulator Accumulator x 2
Accumulator Accumulator x 1
Step 3: Lastly, output last 4 digits in Accumulator
9 of 39
Any issue?
How if we use a calculator to
compute it!!!
If n is large, say 50, the accumulator will
soon be too large, and not representable and
displayable with the finite precision on your
calculator: 50! = 3.0414x1064.
Any better or more efficient method?
Note: we only need to know the last 4 digits
Do we really need to know the whole value of n!
Module 1 : Computing and Algorithms
10 of 39
Method 2
Home exercise: your problem solving time
Hints:
Since we only need the last 4 digits as output
The computation ONLY involves a series of
multiplication
Whatever we multiply two numbers, we only
need to keep (think about this )
And any trick to speed up?
11 of 39
Computational Thinking!!
Computational thinking is a mental process
aiming at solving a problem by formulating the
solution into a procedure/method that the
computer (like a calculator) can work on
This is the focus on this course!!!!!!!
Note!!! Generally, problem-solving is independent
of the choice of programming language!!!
Module 1 : Computing and Algorithms
12 of 39
Computational Thinking!!
And
Computers and programming languages are
basically tools (like calculators) for you to
formulate your solution (algorithm/procedure)
into a program that a computer can run
Note: What is computer, hardware, software,
See course Introduction to Computing Systems
(which runs in parallel)
http://en.wikipedia.org/wiki/Human_computer
Module 1 : Computing and Algorithms
13 of 39
Topics
What is Computational Thinking?
What is an Algorithm?
How to Express an Algorithm?
Flowcharts
Nassi-Schneiderman Diagrams
Pseudo-code
14 of 39
What is an Algorithm?
Just like the example you saw
When you formulate a method/procedure for
solving a problem, it has to be computable;
such a procedure is also called an algorithm
Algorithm VS Program
An algorithm is a description of the procedure
on how one can follow to solve the problem
A program is an implementation of an algorithm
in a particular language for computers to run on
Module 1 : Computing and Algorithms
15 of 39
What is an Algorithm?
Problem
Algorithm
Computational
Thinking
Programming
Program
Run on
16 of 39
Why Algorithm?
Hence, we can analyze the problem and derive
the solution independent of programming
Furthermore, we can also examine how easily
or difficult a language allows us to realize the
algorithm
And how different computers impact the
realization of an algorithm, e.g., efficiency
(in a course that you may take in the future:
CZ2001 Algorithm in 2nd year)
Module 1 : Computing and Algorithms
17 of 39
Aspects of an Algorithm
How detail should an algorithm be:
Provide enough detail to be implementable
Can be tricky to define completely:
relies on common sense and the audience
18 of 39
Aspects of an Algorithm
Example: Making scrambled eggs
1. Beating the eggs for 20 to 35 seconds in a bowl
2. Heating a frying pan over a medium-low heat
3. Melt some butter in the frying pan
4. Cook eggs on the pan and stir eggs while cooking
5. Add other ingredients
6. Serve the scrambled eggs
19 of 39
Source: http://whatscookingamerica.net/Eggs/ScrambledOmelette.htm
Module 1 : Computing and Algorithms
20 of 39
Topics
What is Computational Thinking?
What is an Algorithm?
How to Express an algorithm?
Flowcharts
Nassi-Schneiderman diagrams
Pseudo-code
21 of 39
Step 1
Step 2
Step 3
22 of 39
23 of 39
24 of 39
25 of 39
General Notes
No strict rules
Informal language - mix of English and
keywords
Common keywords: IF, ELSE, WHILE, etc.
Other keywords: READ, PRINT, SET,
INITIALIZE, COMPUTE, ADD, SUBTRACT, etc.
Usually start an operation sentence with a verb
(description should be concise and precise)
26 of 39
#1. Flowcharts
Represent an algorithm by a diagram for
effective visualization
Symbol
Name
Process
Decision
Input / Output
Terminal
Flowlines
Module 1 : Computing and Algorithms
27 of 39
#1. Flowcharts
start
Can do repetition
Melt butter and put eggs on pan
Decision blocks
(make choices)
If eggs ok?
Stir eggs
Any ingredient?
Output!
Add ingredients
Can do selection
end
Module 1 : Computing and Algorithms
28 of 39
29 of 39
Here is empty,
meaning do nothing
but we may also put
operations here
Y
Add ingredient
Join again
Stir eggs
30 of 39
Stir eggs
Can do repetition
Can do selection
Any ingredient?
Y
Add ingredient
31 of 39
32 of 39
#3. Pseudo-code
How to pronounce?
sy-ooooooooooooo-doh! code
IDEA: directly use informal English to
describe an algorithm step by step with
one step per line
33 of 39
#3. Pseudo-code
Example #1: Making Scrambled Eggs
BEAT the eggs for 20 to 35 seconds in a bowl
HEAT a frying pan over a medium-low heat
MELT some butter in the frying pan
PUT eggs on pan
WHILE eggs not okay
STIR eggs while cooking
END WHILE
IF any ingredients
Add other ingredients
END IF
SERVE the scrambled eggs
Module 1 : Computing and Algorithms
34 of 39
#3. Pseudo-code
Example #2: factorial
READ N from user input
IF N <= 1
nfact = 1
ELSE
nfact = 2
REPEAT I = 3 to N
nfact = nfact x I
END IF
OUTPUT nfact
35 of 39
#3. Pseudo-code
Guidelines:
Write only one statement per line
Capitalize the keywords
Indent to show hierarchy
End multi-line structures
Keep statements programming-language
independent
36 of 39
Expressing an Algorithm
Important Note:
More detail on
these techniques
later in this course
Must be unambiguous
Every step must be clear and precise
Specify the order of steps precisely
[Sequence]
Consider all possible decision points
[Branching and Looping]
Must terminate
(No matter which representation you use)
Module 1 : Computing and Algorithms
37 of 39
38 of 39
Reading Assignment
Textbook
Chapter 0: The Study of Computer Science
0.1 to 0.4
Note: Though some material in textbook is not
directly related to the lecture material, you can
learn more from them.
Exercise:
Write down the algorithm for the problem on P.4.
Module 1 : Computing and Algorithms
39 of 39