1. The definition & property of algorithm
The definition of Algorithm is a step-by-step clear instructions to solve a problem which means use detailed orders to manipulate specific tasks, involving computational thinking. For example, I instead of teach Mr. James to speak “I love you” in Chinese which is quite general, I would first tell him the pronunciation of “I” in Chinese and then “Love” , at last “you”. Afterwards, I would ask him to connect those three words.

Finiteness, definiteness, input, output and effectiveness are all properties of Algorithm. Firstly, Finiteness refers to “An algorithm must always terminate after a finite number of steps, a very finite number, a reasonable number” In my own words, the number of directions ordered should be clear and accessible with numbers that are limited, while determines the beginning and the end using number. There should be a reasonable number like 3. Secondly, definiteness means each step of an algorithm must be precisely defined the actions to be carried out must be rigorously and unambiguously specified which makes each steps well-control and practical to operate, like I should say move 5 steps rather than move a little bit. Input is the quantity that given to the system to perform that algorithm, like I made an algorithm to get the sum of 2 numbers. Then, I need to put 2 numbers before I start this algorithm and those 2 numbers would be the input. Output is the quantities which has specified relationships with input. At last, it is the effectiveness which guarantee that all the operations performed in an algorithm should be sufficiently basic that anyone can do it exactly in a finite length of time.

2. Expressions for an algorithm
Natural language, flow chart, pseudocode and programming language are the expression for an algorithm. Natural language means to be clear and easy to understand. Flow chart is a structural form which reveals each step respectively. Pseudocode is a more formal expression which is generic artificial language. It provides a consistent form to express for all the algorithm. Programming Language is an artificial language to communicate with computer system, which is more abstract and hard to understand. But it is standardized while easy to perform.
3. Designing an Algorithm and understanding the Problem
There are 2 main area that we should considering about—final goal & individual state. I think it could be referred to the abstract step and the concrete step. First we need to know the purpose of our algorithm and have a general idea to achieve it like I want to lose weight. Then I would divide my main goal into many individual states like running, play basketball and dancing in order to lose my weight.

Generally, designing an algorithm requires both the abstract idea as well as the carry over of those idea into practical steps for all the people to replicate.
4. Algorithms that I learned from the video “The Secret Rules of Modern Living: Algorithms”

a. Matching algorithm
It begins with an attempt to match an applicant to the program most preferred on that applicant’s rank order list. If the applicant cannot be matched to that first-choice program, an attempt is made to place the applicant into the second most preferred program, and so on, until either the applicant obtains a tentative match to a program or until the algorithm has considered all the applicant’s choices and no match can be made.
b. Chilli algorithm

There is the game that thirteen candies and one hot pepper are placed into a jar. Two people play with the objective to avoid being stuck eating the chili pepper. Each person is allowed to take 1, 2, or 3 candies out of the jar at a time. Turns out the solution is to think mathematically, breaking down the thirteen candies into four even groups. There is a single candy leftover. To win, a person picks one candy first. They wait for their opponent to pick 1, 2, or 3 candies. It doesn’t matter how many their opponent draws.
Solution As long as the person takes four candies minus how many their opponent took in their turns, they will win. Say the opponent picks three candies, so the person will take only one. In that round, a total of four candies are removed from the jar. This is the winning strategy.
5. Algorithm role-playing and on paper activities
a. Role-play activity

I was the human robot without seeing anything in the role play activities and Kinsly was taking charge of giving orders which I would follow “blindly” to touch the target object. We apply the computational thinking as well as the algorithm in this activity. We need to divide the whole movements I need to do into small parts like turn right, stand up and move my arm. Then, we need to specify every order: instead of moving a little bit, we end up saying moving 1 step.
b. Paper activity
We need to plan a route for the tourists which start from the hotel to ensure they would visit all the spots only once. There are several ways to design the route and we need to write down every step in the route and fill into the chart with the correct sequence.

c. What I learn
Those activities give me chances to apply those computational thinking into real life situation. Planning a route and ordering human-robot are all the application of decomposition and abstraction. I realize how useful the computer science is in real life instance solving problems well also plan things in a clear and logical way.
c. Lightbot

6. Algorithm Magic—the Australian Magician Dream
It is a self-working trick: an algorithm, here is the procedure—basically 3 steps
- Place the chosen card in position 16 2. Discard roughly the bottom half
- Repeat 4 times:Discard the first and then-every second card thereafter
- Reveal the card is the one predicted.
Here is the explanation of this algorithm:
we’ve actually used another computational thinking trick – abstraction. Rather than give all the details of the trick we’ve given a simplified version of some steps without all the detail. For example the step:
“Discard the first and then every second card thereafter”
doesn’t include the detail of how that is done in the trick by dealing the cards into a Down pile and an Under pile then discarding the down pile. Abstraction allows us to focus on the big picture of how the algorithm works without getting lost in the details. We can worry about the details later.

The trick works because, as long as there are no more than 31 cards, by repeatedly discarding every second card you are guaranteed to end with the 16th card. We can do logical reasoning in the form of a diagram as follows:
Originally:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24…51 52
After the cut:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
After deal 1
2 4 6 8 10 12 14 16 18 20 22 24
After deal 2
4 8 12 16 20 24
After deal 3
8 16 24
After deal 4 16
The card left is always the 16th card.
7. My conclusion
I gradually come into the true world of computer science, seeing more and more possibility as well as innovation that computer science brings to us. Being able to design my set of program to deal with every problems I meet, algorithm is like a VIP service for all the people to make up their things using it. Also, the concepts like decomposition and abstraction which seems quite remote for us, actually is really practical handling different situations in real life instances.