This week’s materials focus on computational thinking and why it’s beneficial to us. So I kept asking myself: Why do we need computational thinking? As for me, I had a hard time trying to figure out how to ask research questions and how to write high quality research paper. I think there’s something about computational thinking that are paralleled with research processes.
Both Daniel Hills and Jeannette Wing mentioned that computational thinking is about hierarchy, thinking at multiple levels of abstraction. I think it is also true for how to boiling down a research question. Research questions are not answered simply. Usually we need to boil down the major question into different little answerable questions and link every one of them logically to answer the major one. Today Professor Tinkcom talked about how to do academic writing to different audiences (as a guest lecture, new content this year, and I am a TA so I was there.) He said that academic writing is about problem solving and it always start with questions that you genuinely want to know. He also mentioned how to work on each part of your writing and how to finally put them together. I think the process of breaking down and then synthesize is just like the level of abstraction in computational thinking. For example, when programming with Python, you want to find out how much positive words, neutral words, and negative words are there in one article. Like what professor Irvine said, computation always starts with functions, not with physical technologies. So now the question is “find out the words”. It’s something conceptual we want to do. So next we want to ask ourselves: what does it mean by positive/neutral/negative? There are many resources we can refer to online sentiment words dictionaries computer scientists build that categorize every English word into three categories: positive words, neutral words, and negative words. Then we might think, recognizing a word to be positive/neutral/negative is subjective and varies according to different contexts. So how can we use the static sentiment words dictionaries? Well, we can do some adaptation to the dictionary. Then we run Python program to compare each word in the article with the dictionary to get the result about the percentage of positive/neutral/negative words. Also, when we write Python scripts, there are many symbols we need to define as well.
The thinking process I described above actually is not computation specific. The logical problem solving process exists in many ways of our life. I think what I learned most from reflecting computational thinking is how to logically connect each part of my research to better answer the major question that I raise. Sometimes I read research articles that jump into conclusions or the conclusion is not answering the major question (I think I make the same mistakes too.)
Another thing I think is interesting about computational thinking is that not all programmings and algorithms are dealing with a grand question, instead most of the time, it solves questions that sound like minor and not important. For example, we want to use a program to do math. We all can do math but computers can do it faster, over and over again. Computers are not doing anything that at a very high level of complexity but it’s humans who boil the question down to many sub-questions and use the automaticity feature of computer to tackle problems.