LeongHW, SoC, NUS (UIT2201: Algorithms) Page 1 © Leong Hon Wai, 2003-2009 Algorithms Problem Solving  Readings: [SG] Ch. 2  Chapter Outline: 1.Chapter.

Slides:



Advertisements
Similar presentations
LeongHW, SoC, NUS (UIT2201: Algorithms) Page 1 Algorithms  Readings: [SG] Ch. 2 & 3  Chapter Outline: 1.Chapter Goals 2.What are Algorithms 1.Real Life.
Advertisements

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 1 Algorithms (more examples…)  Supplementary Notes: 1.For your reference… (esp. those new to programming)
Designing Algorithms Csci 107 Lecture 4. Outline Last time Computing 1+2+…+n Adding 2 n-digit numbers Today: More algorithms Sequential search Variations.
8 Algorithms Foundations of Computer Science ã Cengage Learning.
LeongHW, SoC, NUS (UIT2201: Algorithms) Page 1 Animation of Algorithm Goal: To understand an algorithm by animating its execution, step-by-step. Algorithm:
Efficiency of Algorithms
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
Chapter 2: Algorithm Discovery and Design
Program Design and Development
 Monday, 9/30/02, Slide #1 CS106 Introduction to CS1 Monday, 9/30/02  QUESTIONS (on HW02, etc.)??  Today: Libraries, program design  More on Functions!
Chapter 2 The Algorithmic Foundations of Computer Science
CHAPTER 2 CS
CS107 Introduction to Computer Science Lecture 5, 6 An Introduction to Algorithms: List variables.
Chapter 2: Design of Algorithms
Algorithms and Efficiency of Algorithms February 4th.
Designing Algorithms Csci 107 Lecture 4.
LeongHW, SoC, NUS (UIT2201: Algorithms) Page 1 © Leong Hon Wai, Algorithms Problem Solving  Readings: [SG] Ch. 2  Chapter Outline: 1.Chapter.
Chapter 2: Algorithm Discovery and Design
Algorithms. Introduction Before writing a program: –Have a thorough understanding of the problem –Carefully plan an approach for solving it While writing.
Chapter 1 Program Design
Chapter 2: Algorithm Discovery and Design
Chapter 2: Algorithm Discovery and Design
CPSC 171 Introduction to Computer Science 3 Levels of Understanding Algorithms More Algorithm Discovery and Design.
Chapter 2: Algorithm Discovery and Design Invitation to Computer Science, C++ Version, Third Edition.
Invitation to Computer Science 6th Edition
Invitation to Computer Science, Java Version, Second Edition.
LeongHW, SoC, NUS (UIT2201: AI) Page 1 © Leong Hon Wai, Integrating Different Ideas Together  Reading Materials:  Ch 3.6 of [SG]  Contents:
ดร.สุรศักดิ์ มังสิงห์ SPU, Computer Science Dept.
Procedural programming in Java Methods, parameters and return values.
Pseudocode Algorithms Using Sequence, Selection, and Repetition Simple Program Design Third Edition A Step-by-Step Approach 6.
© Leong Hon Wai, LeongHW, SoC, NUS (UIT2201: Algorithms) Page 1 Animation of Algorithm Goal: To understand an algorithm by animating its execution,
LeongHW, SoC, NUS (UIT2201: Algorithms) Page 1 © Leong Hon Wai, Efficiency of Algorithms  Readings: [SG] Ch. 3  Chapter Outline: oAttributes.
1 UNIT-I BRUTE FORCE ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 3:
8.1 8 Algorithms Foundations of Computer Science  Cengage Learning.
Invitation to Computer Science 5 th Edition Chapter 2 The Algorithmic Foundations of Computer Science.
INVITATION TO Computer Science 1 11 Chapter 2 The Algorithmic Foundations of Computer Science.
LeongHW, SoC, NUS (UIT2201: Algorithms) Page 1 © Leong Hon Wai, Notice….  No tutorial this Friday (12-Feb)  Special class on BASIC Algorithms.
CMPSC 16 Problem Solving with Computers I Spring 2014 Instructor: Tevfik Bultan Lecture 4: Introduction to C: Control Flow.
Chapter 2: Algorithm Discovery and Design Invitation to Computer Science.
PROGRAMMING FUNDAMENTALS INTRODUCTION TO PROGRAMMING. Computer Programming Concepts. Flowchart. Structured Programming Design. Implementation Documentation.
CMSC 104, Section 301, Fall Lecture 18, 11/11/02 Functions, Part 1 of 3 Topics Using Predefined Functions Programmer-Defined Functions Using Input.
16 Searching and Sorting.
ALGORITHMS AND FLOWCHARTS
Algorithms and Problem Solving
Analysis of Algorithms
COP 3503 FALL 2012 Shayan Javed Lecture 15
Python: Control Structures
GC211Data Structure Lecture2 Sara Alhajjam.
ALGORITHMS AND FLOWCHARTS
Introduction To Flowcharting
Algorithm Analysis CSE 2011 Winter September 2018.
Computer Programming Fundamentals
Teach A level Computing: Algorithms and Data Structures
ALGORITHMS AND FLOWCHARTS
Chapter 8: Introduction to High-Level Language Programming
Control Structure Senior Lecturer
Algorithm An algorithm is a finite set of steps required to solve a problem. An algorithm must have following properties: Input: An algorithm must have.
Chapter 5: Algorithms Computer Science: An Overview Tenth Edition
Algorithm Discovery and Design
ALGORITHMS AND FLOWCHARTS
Algorithm Discovery and Design
Algorithms and Problem Solving
Loops and Arrays in JavaScript
Discovery and Design of Algorithms
Chapter 9: More About Data, Arrays, and Files
6.001 SICP Interpretation Parts of an interpreter
Introduction to the Lab
Introduction to Computer Science
Chapter 13 Control Structures
Presentation transcript:

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 1 © Leong Hon Wai, Algorithms Problem Solving  Readings: [SG] Ch. 2  Chapter Outline: 1.Chapter Goals 2.What are Algorithms 3.Pseudo-Code to Express Algorithms 4.Some Simple Algorithms [SG] Ch Computing Array-Sum 2.Structure of Basic Iterative Algorithm 5.Examples of Algorithmic Problem Solving Last Revised: September 2013.

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 2 © Leong Hon Wai, Simple iterative algorithm: Array-Sum(A,n)  Input:  Input: List of numbers: A 1, A 2, A 3, …., A n  Output: To compute the sum of the numbers Note: Store numbers in array A[1], A[2], …, A[n] Array-Sum(A, n); (* Find the sum of A1, A2,…,An. *) begin Sum_SF  0; k  1; while (k <= n) do Sum_SF  Sum_SF + A[k]; k  k + 1; endwhile Sum  Sum_SF; Print “Sum is”, Sum; return Sum; end; Sum_SF represents the Sum-So-Far

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 3 © Leong Hon Wai, Exercising Algorithm Array-Sum(A,n): A[1] A[2] A[3] A[4] A[5] A[6] n= k Sum-SF Sum ? 0 ? 1 2 ? 2 7 ? 3 17 ? 4 20 ? 5 32 ? 6 56 ? Sum is 56 Input: Processing: Output:

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 4 © Leong Hon Wai, Defining Abstraction Algorithm Array-Sum(A, n); (* Find the sum of A1, A2,…,An. *) begin Sum_SF  0; k  1; while (k <= n) do Sum_SF  Sum_SF + A[k]; k  k + 1; endwhile Sum  Sum_SF; return Sum end; Name of AlgorithmParameters: A and n Some comments for human understanding Value returned: Sum

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 5 © Leong Hon Wai, Defining a High-level Primitive  Then Array-Sum becomes a high- level primitive defined as Array-Sum (A, n) Array-Sum A n Sum These are the inputs to Array-Sum; namely Array A, variable n. Inputs to Array-Sum: any array A, variable n Outputs from Array-Sum: variable Sum Definition: Array-Sum (A, n) The high-level primitive Array-Sum takes in as input any array A, a variable n, and it computes and returns the sum of A[1..n], namely, (A[1] + A[2] A[n]).

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 6 © Leong Hon Wai, Using a High-level Primitive To use the high-level primitive (or just primitive, in short) we just issue a call to that high-level primitive Example 1: Array-Sum (A, 6) call the primitive Array-Sum to compute the sum of A[1.. 6], and returns the sum as its value Example 2: Top  Array-Sum (B, 8) “compute the sum of B[1.. 8], and store that in variable Top Example 3: DD  Array-Sum (C, m) “compute the sum of C[1.. m], and store that in variable DD First, we define Array-Sum (A, n) The high-level primitive Array-Sum takes in as input any array A, a variable n, and it computes and returns the sum of A[1..n], namely, (A[1] + A[2] A[n]).

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 7 © Leong Hon Wai, Using a High-level Primitive First, we define Array-Sum (A, n) The high-level primitive Array-Sum takes in as input any array A, a variable n, and it computes and returns the sum of A[1..n], namely, (A[1] + A[2] A[n]). To use the high-level primitive (or just primitive, in short) we just issue a call to that high-level primitive GOOD POINT #1: Can call it many times, no need to rewrite the code GOOD POINT #2: Can call it to calculate sum of different arrays (sub-arrays) of diff. lengths

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 8 © Leong Hon Wai, Summary: Higher-level Primitive  The algorithm for Array-Sum (A, n) becomes a high- level primitive Array-Sum A n Sum  Can be re-used by (shared with) other people  Machines with this high-level primitive has more capability

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 9 © Leong Hon Wai, Recap: Defining & using high-level primitive  When we do a common task often, we define a high-level primitive to perform the task;  Give it a good name (that suggest what it does); specify what inputs it require, and what outputs it will produce;  Then we can call the high-level primitives each time we need to perform that common task;  In this way, we have extended the capability of “the computer”

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 10 © Leong Hon Wai, Algorithms (Introduction)  Readings: [SG] Ch. 2  Chapter Outline: 1.Chapter Goals 2.What are Algorithms 3.Pseudo-Code to Express Algorithms 4.Some Simple Algorithms 5.Examples of Algorithmic Problem Solving [Ch. 2.3] 1.Searching Example, 2.Finding Maximum/Largest 3.Modular Program Design 4.Pattern Matching

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 11 © Leong Hon Wai, Structure of “basic iterative algorithm” Algorithm Array-Sum(A, n); (* Find the sum of A1, A2,…,An. *) begin Sum_SF  0; k  1; while (k <= n) do Sum_SF  Sum_SF + A[k]; k  k + 1; endwhile Sum  Sum_SF; return Sum end; Initialization block Iteration block; the key step where most of the work is done Post-Processing block Structure of Basic iterative algorithm Recall Recurring Principle: The Power of Iterations

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 12 © Leong Hon Wai, Re-use of “basic iterative algorithm”  Once an algorithm is developed, oGive it a name (an abstraction): Array-Sum(A, n) oIt can be re-used in solving more complex problems oIt can be modified to solve other similar problems  Modify algorithm for Array-Sum(A,n) to… oCalculate the average and sum-of-squares oSearch for a number; find the max, min  Develop a algorithm library oA collection of useful algorithms oAn important tool-kit for algorithm development

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 13 © Leong Hon Wai, Algorithmic Problem Solving  Examples of algorithmic problem solving 1.Sequential search: find a particular value in an unordered collection 2.Find maximum: find the largest value in a collection of data 3.Pattern matching: determine if and where a particular pattern occurs in a piece of text

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 14 © Leong Hon Wai, An Lookup Problem NT 1RICHARD Son HENZ Marvin TEO Alfred ……… 5001LEONG Hon Wai HOU Manuel ……… ……… ……… ……… 10000ZZZ Zorro An unordered telephone Directory with 10,000 names and phone numbers TASK: Look up the telephone number of a particular person. ALGORITHMIC TASK: Give an algorithm to Look up the telephone number of a particular person.

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 15 © Leong Hon Wai, Task 1: Looking, Looking, Looking…  Given: An unordered telephone directory  Task oLook up the telephone number of a particular person from an unordered list of telephone subscribers  Algorithm outline oStart with the first entry and check its name, then repeat the process for all entries

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 16 © Leong Hon Wai, Task 1: Looking, Looking, Looking…  Sequential search algorithm  Re-uses the basic iterative algorithm Array-Sum(A, n) oRefers to a value in the list using an index i (or pointer/subscript) oUses the variable Found to exit the iteration as soon as a match is found oHandles special cases u like a name not found in the collection  Question: What to change in Initialization, Iteration, Post-Processing?

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 17 © Leong Hon Wai, Figure 2.9: The Sequential Search Algorithm Task 1: Sequential Search Algorithm Initialization block Iteration block; the key step where most of the work is done Post-Processing block

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 18 © Leong Hon Wai, Algorithm Sequential Search (revised) Algorithm Seq-Search (N, T, m, NAME); begin i  1; Found  No; while (Found = No) and (i <= m) do if (NAME = N[i]) then Print T[i]; Found  Yes; else i  i + 1; endif endwhile if (Found=No) then Print NAME “is not found” endif return Found, i; end;  Preconditions: The variables NAME, m, and the arrays N[1..m] and T[1..m] have been read into memory. Initialization block Iteration block; the key step where most of the work is done Post-Processing block

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 19 © Leong Hon Wai, Defining another High-level Primitive  Then Seq-Search becomes a high- level primitive defined as Seq-Search (N, T, m, Name) Definition: Seq-Search (N, T, m, Name) The high-level primitive Seq-Search takes in two input arrays N (storing name), and T (storing telephone #s), m the size of the arrays, and Name, the name to search; and return the variables Found and Loc. These are the inputs to Array-Sum; namely Array A, variable n. Inputs Outputs (more than one) Seq-Search N, T m NAME Found Loc

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 20 © Leong Hon Wai, Using a High-level Primitive To use the high-level primitive (or just primitive, in short) we just issue a call to that high-level primitive Example 1: Seq-Search (N, T, 100, “John Olson”) call the Seq-Search to find “John Olson” in array N[ ]. Example 2: Top  Array-Sum (B, 8) “compute the sum of B[1.. 8], and store that in variable Top Definition: Seq-Search (N, T, m, Name) The high-level primitive Seq-Search takes in two input arrays N (storing name), and T (storing telephone #s), m the size of the arrays, and Name, the name to search; and return the variable Found and Loc.

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 21 © Leong Hon Wai, Task 2: Big, Bigger, Biggest Task: oFind the largest value from a list of values Find-Max A n Max Loc Definition: Find-Max (A, n) The high-level primitive Find-Max takes in as input any array A, a variable n, and it finds and returns variable Max, the maximum element in the array A[1..n], found in location Loc.

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 22 © Leong Hon Wai, Task 2: Big, Bigger, Biggest Task: oFind the largest value from a list of values  Algorithm outline oKeep track of the largest value seen so far u Initialize: Set Largest-So-Far to be the first in the list u Iteration: Compare each value to the Largest-So-Far, and keep the larger as the new largest oUse location to remember where the largest is. u Initialize: … (Do it yourself) u Iteration: …. (Do it yourself)

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 23 © Leong Hon Wai, Figure 2.10: Algorithm to Find the Largest Value in a List Task 2: Finding the Largest Initialization block Iteration block; the key step where most of the work is done Post-Processing block

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 24 © Leong Hon Wai, Algorithm Find-Max Find-Max(A,n); (* find max of A[1..n] *) begin Max-SF  A[1]; Location  1; i  2; (* why 2, not 1? *) while (i <= n) do if (A[i] > Max-SF) then Max-SF  A[i]; Location  i; endif i  i + 1 endwhile Max  Max-SF; return Max, Location end;  Preconditions: The variable n and the arrays A have been read into memory. Initialization block Iteration block; the key step where most of the work is done Post-Processing block

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 25 © Leong Hon Wai, Modular Program Design  Software are complex oHUGE (millions of lines of code) eg: Linux, Outlook oCOMPLEX; eg: Flight simulator  Idea: Decomposition oComplex tasks can be divided and oEach part solved separately and combined later.  Modular Program Design oDivide big programs into smaller modules oThe smaller parts are ucalled modules, subroutines, or procedures uDesign, implement, and test separately oModularity, Abstraction, Division of Labour oSimplifies process of writing alg/programs

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 26 © Leong Hon Wai, Task 3: Pattern Matching  Algorithm search for a pattern in a source text Given: A source text S[1..n] and a pattern P[1..m] Question: Find all occurrence of pattern P in text S? CATATCATA S ATA P 1 23 Output of Pattern Matching Algorithm: There is a match at position 2 There is a match at position 7

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 27 © Leong Hon Wai, Example of Pattern Matching ATA P 1 23 k Align pattern P with text S starting at pos k = 1; Check for match (between S[1..3] and P[1..3]) Result – no match CATATCATA S

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 28 © Leong Hon Wai, Example of Pattern Matching ATA P 1 23 k Align pattern P with text S starting at pos k = 2; Check for match (between S[2..4] and P[1..3]) Result – match! Output: There is a match at position 2 CATATCATA S

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 29 © Leong Hon Wai, Example of Pattern Matching ATA P 1 23 k Align pattern P with text S starting at pos k = 3; Check for match (between S[3..5] and P[1..3]) Result – No match. CATATCATA S

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 30 © Leong Hon Wai, Example of Pattern Matching ATA P 1 23 k Align pattern P with text S starting at pos k = 4; Check for match (between S[4..6] and P[1..3]) Result – No match. CATATCATA S

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 31 © Leong Hon Wai, Example of Pattern Matching ATA P 1 23 k Align pattern P with text S starting at pos k = 5; Check for match (between S[5..7] and P[1..3]) Result – No match. CATATCATA S

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 32 © Leong Hon Wai, Example of Pattern Matching ATA P 1 23 k Align pattern P with text S starting at pos k = 6; Check for match (between S[6..8] and P[1..3]) Result – No match. CATATCATA S Align S[k..(k+m–1)] with P[1..m]

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 33 © Leong Hon Wai, Example of Pattern Matching ATA P 1 23 k Align pattern P with text S starting at pos k = 7; Check for match (between S[7..9] and P[1..3]) Result – match! Output: There is a match at position 7 CATATCATA S Note: k = 7 is the last position to test; After that S is “too short”. In general, it is k = n–m+1

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 34 © Leong Hon Wai, Pattern Matching: Decomposition Task: Find all occurrences of the pattern P in text S;  Algorithm Design: Top Down Decomposition oModify from basic iterative algorithm (index k)  At each iterative step (for each k) oAlign pattern P with S at position k and oTest for match between P[1..m] and S[k.. k+m –1]  Define an abstraction (“high level operation”) Match(S, k, P, m) = Yes if S[k..k+m–1] = P[1..m] No otherwise

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 35 © Leong Hon Wai, Pattern Matching: Pat-Match Pat-Match(S,n,P,m); (* Finds all occurrences of P in S *) begin k  1; while (k <= n-m+1) do if Match(S,k,P,m) = Yes then Print “Match at pos ”, k; endif k  k+1; endwhile end;  Preconditions: The variables n, m, and the arrays S and P have been read into memory. Use the “high level operation” Match(S,k,P,m) which can be refined later.

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 36 © Leong Hon Wai, Match of S[k..k+m-1] and P[1..m] Align S[k..k+m–1] with P[1..m] (Here, k = 4) Match(S,k,P,m); begin i  1; MisMatch  No; while (i <= m) and (MisMatch=No) do if (S[k+i-1] not equal to P[i]) then MisMatch=Yes else i  i + 1 endif endwhile Match  not(MisMatch); return Match end; ATA P 1 23 CATATCATA S i

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 37 © Leong Hon Wai, Example: Match of S[4..6] and P[1..3] i Align S[k..k+m–1] with P[1..m] (Here, k = 4) [k = 4] With i = 1, MisMatch = No Compare S[4] and P[1] (S[k+i-1] and P[i]) They are equal, so increment i ATA P 1 23 CATATCATA S

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 38 © Leong Hon Wai, Example: Match of S[4..6] and P[1..3] Align S[k..k+m–1] with P[1..m] (Here, k = 4) [k = 4] With i = 2, MisMatch = No Compare S[5] and P[2] (S[k+i-1] and P[i]) They are equal, so increment i ATA P 1 23 CATATCATA S i

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 39 © Leong Hon Wai, Example: Match of T[4..6] and P[1..3] Align S[k..k+m–1] with P[1..m] (Here, k = 4) [k = 4] With i = 3, MisMatch = No Compare S[6] and P[3] (S[k+i-1] and P[i]) They are not equal, so set MisMatch=Yes ATA P 1 23 CATATCATA S i

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 40 © Leong Hon Wai, Our Top-Down Design oAchieves good division-of-labour  Made use of top-down design and abstraction oSeparate “high-level” view from “low-level” details oMake difficult problems more manageable oAllows piece-by-piece development of algorithms oKey concept in computer science Pat-Match(S,n,P,m) Match(S,k,P,m) “higher-level” view “high-level” primitive  Our pattern matching alg. consists of two modules

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 41 © Leong Hon Wai, Pattern Matching: Pat-Match (1 st draft) Pat-Match(S,n,P,m); (* Finds all occurrences of P in S *) begin k  1; while (k <= n-m+1) do if Match(S,k,P,m) = Yes then Print “Match at pos ”, k; endif k  k+1; endwhile end;  Preconditions: The variables n, m, and the arrays S and P have been read into memory. Use the “high level primitive operation” Match(S,k,P,m) which can be de/refined later.

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 42 © Leong Hon Wai, Figure 2.12: Final Draft of the Pattern-Matching Algorithm Pattern Matching Algorithm of [SG] This part compute Match(T,k,P,m) THINK:: How can Mismatch=NO here?

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 43 © Leong Hon Wai, Pattern Matching Algorithm of [SG]  Pattern-matching algorithm oContains a loop within a loop uExternal loop iterates through possible locations of matches to pattern uInternal loop iterates through corresponding characters of pattern and string to evaluate match

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 44 © Leong Hon Wai, Summary  Specify algorithms using pseudo-code oUnambiguous, readable, analyzable  Algorithm specified by three types of operations oSequential, conditional, and repetitive operations  Seen several examples of algorithm design oDesigning algorithm is not so hard oRe-use, Modify/Adapt, Abstract your algorithms  Algorithm design is also a creative process oTop-down design helps manage complexity oProcess-oriented thinking helps too

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 45 © Leong Hon Wai, Summary  Importance of “doing it” oTest out each algorithm to find out “what is really happening” oRun some of the animations in the lecture notes  If you are new to algorithms oread the textbook otry out the algorithms odo the exercises … The End …

LeongHW, SoC, NUS (UIT2201: Algorithms) Page 46 © Leong Hon Wai, Thank you!