1 of 39Module 1 : Computing and Algorithms Introduction to              Computational Thinking Module 1 :                                       Computing and Algorithms Asst Prof Chi‐Wing FU, Philip Office: N4‐02c‐104 email: cwfu[at]ntu.edu.sg
2 of 39Module 1 : Computing and Algorithms Topics • What is Computational Thinking? • What is an Algorithm • How to Express an Algorithm? • Flowcharts • Nassi-Schneiderman Diagrams • Pseudo-code
3 of 39Module 1 : Computing and Algorithms What is Computational Thinking? • It is a problem solving process that involves • Analysis and modeling of data • Understanding of how computers work • Logic and procedure design • Formulating a solution that we can use a computer to work it out • Automation • Efficiency • …
4 of 39Module 1 : Computing and Algorithms What is a problem? • First… you may wonder… What is a problem? It is a question proposed for a solution. Let’s start with a simple example: Find the last 4 digits in factorial n or n!
5 of 39Module 1 : Computing and Algorithms 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
6 of 39Module 1 : Computing and Algorithms 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
7 of 39Module 1 : Computing and Algorithms Let’s do Problem Solving!!! • Now, let me give you a minute to think about how to solve this problem? ……. Don’t look at the next slides… Think about it yourself first!!!!!!!
8 of 39Module 1 : Computing and Algorithms 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) ……
9 of 39Module 1 : Computing and Algorithms Method 1 …… Accumulator ← Accumulator x 3 Accumulator ← Accumulator x 2 Accumulator ← Accumulator x 1 Step 3: Lastly, output last 4 digits in Accumulator
10 of 39Module 1 : Computing and Algorithms 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.0414…x1064. • 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!
11 of 39Module 1 : Computing and Algorithms 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? • It can be more efficient and independent of the number representation precision!!!
12 of 39Module 1 : Computing and Algorithms 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!!!
13 of 39Module 1 : Computing and Algorithms 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, … you should learn these in course “Introduction to Computing Systems” (which runs in parallel)
14 of 39Module 1 : Computing and Algorithms • What is Computational Thinking? • What is an Algorithm? • How to Express an Algorithm? • Flowcharts • Nassi-Schneiderman Diagrams • Pseudo-code Topics
15 of 39Module 1 : Computing and Algorithms What is an Algorithm? • Just like the example you saw… When you formulate a method/procedure for solving a problem, it is something computable and it 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
16 of 39Module 1 : Computing and Algorithms What is an Algorithm? • So… Algorithm and computational thinking are both independent of the programming language we choose to implement the program Problem Algorithm Program Run on Computational Thinking Programming
17 of 39Module 1 : Computing and Algorithms 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 will take in the future: “CZ2001 Algorithm” in 2nd year)
18 of 39Module 1 : Computing and Algorithms 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
19 of 39Module 1 : Computing and Algorithms • 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 Aspects of an Algorithm
20 of 39Module 1 : Computing and Algorithms • Example: Making scrambled eggs More detail? it depends, e.g., audience Source: http://whatscookingamerica.net/Eggs/ScrambledOmelette.htm
21 of 39Module 1 : Computing and Algorithms Topics • What is Computational Thinking? • What is an Algorithm? • How to Express an algorithm? • Flowcharts • Nassi-Schneiderman diagrams • Pseudo-code
22 of 39Module 1 : Computing and Algorithms How to express an Algorithm? • Algorithms is basically Sequential (step after step) • But may include • Branching (making a selection) • Looping (repeating certain operations) Step 1 Step 2 Step 3 ……Sequence:
23 of 39Module 1 : Computing and Algorithms Algorithm can have Branching • Branching (make a selection) • E.g., if there are extra ingredients such as herbs and cheese, then add them to the eggs before serving the scrambled eggs; Else we skip this step. 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
24 of 39Module 1 : Computing and Algorithms Algorithm can have Looping • Looping (certain operations needed to be repeated again and again) • E.g., while the eggs do not look like what you desire, keep gently stirring them in the pan 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
25 of 39Module 1 : Computing and Algorithms How to express an Algorithm? • Three general (and very common) techniques to express algorithms: • Flowcharts • Nassi-Schneiderman diagrams • Pseudo-code
26 of 39Module 1 : Computing and Algorithms General Notes • No strict rules • Informal language - mix of English and keywords • Common keywords: IF, ELSE, WHILE, etc. • Other keywords: READ, PRINT, SET, INITILAIZE, COMPUTE, ADD, SUBTRACT, etc. • Usually start an operation sentence with a verb (description should be concise and precise)
27 of 39Module 1 : Computing and Algorithms #1. Flowcharts • Represent an algorithm by a diagram for effective visualization Sym b o l N a m e Process Decision Input / Output Terminal Flowlines
28 of 39Module 1 : Computing and Algorithms #1. Flowcharts Beating the eggs in a bowl Heating a frying pan Melt butter and put eggs on pan If eggs ok? Stir eggs N Y Any ingredient? Add ingredients Y N end start Decision blocks (make choices) Can do repetition Can do selection Serve Scrambled Eggs Output!
29 of 39Module 1 : Computing and Algorithms #2. Nassi-Schneiderman diagrams • Similar to a flowchart but it is arrow-free and so more space-friendly Beating the eggs in a bowl Heating a frying pan Melt butter and put eggs on pan #1: Sequential operations: Just stack them up
30 of 39Module 1 : Computing and Algorithms #2. Nassi-Schneiderman diagrams #2: Selection operations: Make Branches Any ingredient? N Y Serve Scrambled Eggs Add ingredient Here is empty, meaning do nothing but we may also put operations here #3: Looping operations: Repetition Eggs not ok? Stir eggsWhile condition is true, keep running the operations inside Join again
31 of 39Module 1 : Computing and Algorithms #2. Nassi-Schneiderman diagrams Beating the eggs in a bowl Heating a frying pan Melt butter and put eggs on pan Putting them together: Any ingredient? N Y Serve Scrambled Eggs Add ingredient Egg not ok? Stir eggs Can do repetition Can do selection
32 of 39Module 1 : Computing and Algorithms #2. Nassi-Schneiderman diagrams • One more example: Computing factorial Can do selection (true or false) Here I takes a value of 3 up to N in different iteration of this loop, which Is repeated with different I And accumulate to NFACT
33 of 39Module 1 : Computing and Algorithms #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
34 of 39Module 1 : Computing and Algorithms #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
35 of 39Module 1 : Computing and Algorithms #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
36 of 39Module 1 : Computing and Algorithms #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
37 of 39Module 1 : Computing and Algorithms More detail on these techniques later in this course Expressing an Algorithm • Important Note: • 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)
38 of 39Module 1 : Computing and Algorithms Take Home Messages • Computational thinking is a mental process, aiming at solving a problem by formulating the solution into a procedure/method that the computer can work on • Problem-solving is independent of the choice of the programming language • An algorithm is a description of a procedure on how one can follow to solve the problem, whereas a program is an implementation of an algorithm in a particular language to run on a computer • Algorithms may not be sequential, they may include branching and looping; Three basic techniques to express algorithms: flowcharts, Nassi-Schneiderman diagrams, and pseudo-code.
39 of 39Module 1 : Computing and Algorithms 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.

Lecture 1 computing and algorithms