Notes
Computational Thinking for Problem Solving
Week 1

Topics

Introduction

  • Computational Thinking is a subset of problem solving
  • It can be applied in various fields, not just programming
  • There are four pillars (ways) to solve a problem
    • Decomposition
    • Pattern Recognition
    • Data Representation and Abstraction
    • Algorithms

Decomposition

  • First pillar is decomposition, the way to break problem into sub-problems
  • Breaking huge problem into smaller pieces allow us to focus and solve the problems effectively
  • Similar to having an issue and break it into smaller tickets in daily work
  • Combining all sub-problems, should present the whole problem

Pattern Recognition

  • The second pillar of computational thinking
  • It is the step we observe the problem and focus at features of the problem
  • If there is any features we could discover, it is possible for us to create reusable solutions

Data Representation and Abstraction

  • The 3rd pillar of computational thinking
  • Filter out the unrelated & trivial information based on the criteria of the task
  • It allows us to have better vision of the problem
  • The result from this pillar should be the "schema" or "shape" of the output

Algorithms

  • A set of instruction of what to do in a certain order
  • It is the last step after we implemented the other three pillars
    • We might not need all the pillars every time
  • We can start from a simple algorithm and further improve it to a more generic algorithm
  • Algorithms could be represented in plain English, Flow Chat, pseudo code and etc.
  • Basic Flow chart syntax is as follow:
    • Computational Thinking Flow Chart Example

Reflections

  • It is generally a good introduction course because I realized some strategies I have been using in my career or even life
    • e.g. After receiving a task, I will confirm the expectation and result from my supervisor, and break into smaller tickets (Decomposition)
    • e.g. By checking the tickets, I will try to find out how to reduce repetitive work (pattern recognition) and prioritize them
    • After taking the lessons from this week, I will try to be more cognitive of using computational thinking in my future work
  • I had trouble on the Data Representation and Abstraction part, because I thought it is only a filter for useful information, but actually it is a review on the shape of result
  • After working on assignments and doing peer reviews, I found that my classmates and I could not grasp the computational thinking as a whole and tend to lose focus of the problem
    • e.g. In the Algorithms part, some of us only listed out the instruction of a specific task, which is not the purpose of Algorithm