Computational Thinking
I stumbled upon a Google site to promote computational thinking in K-12 classrooms. http://www.google.com/edu/computational-thinking/
Computational thinking (which they abbreviate as CT, but I think of CT as critical thinking) involves a set of problem-solving skills and techniques that software engineers use. It makes sense from a Google perspective to approach things like an engineer, but I am not so sure that all things in education need to be approached that way. I always thought that Google's problem with doing social (see Orkut, Wave, Plus) was that it was designed by engineers rather than a mix of people with the emphasis on non-engineers.
Nevertheless, here are a few examples they give of techniques that their engineers use to write programs.
Pattern Recognition: People look for patterns in stock prices to decide when to buy and sell.
Pattern Generalization and Abstraction: A daily planner uses abstraction to represent a week in terms of days and hours, helping us to organize our time.
Algorithm Design: When a chef writes a recipe for a dish, she is creating an algorithm that others can follow to replicate the dish.
That last item, Algorithm Design, is something we hear about frequently these days even though most of us have no idea what that measn other than "it has something to do wih math." They define it as the ability to develop a step-by-step strategy for solving a problem. Algorithm design seems to include the other techniques: look at the decomposition of a problem and the identification of patterns that help to solve the problem. In computer science as well as in mathematics, algorithms are often written abstractly, utilizing variables in place of specific numbers. Look at the examples they provide:
- When a chef writes a recipe for a dish, she is creating an algorithm that others can follow to replicate the dish.
- When a coach creates a play in football, he is designing a set of algorithms for his players to follow during the game.
- In mathematics, when we calculate the percent change between two numbers, we follow an algorithm along the lines of:
original = float(input('Enter the original number: '))
new = float(input('Enter the new number: '))
if original > new:
percent_decrease = 100 (original - new) / original
print 'Percent decrease:', percent_decrease, '%'
elif new > original:
percent_increase = 100 (new - original) / original
print 'Percent increase:', percent_increase, '%'
else:
print 'There is no percent change.'
Of course, the "step further" is the key for an educator. Google says in its professional development section that this is intended for math teachers and on the web resources page it is all math, science and computer science. What I would be interested in seeing are some applications in other areas.
The one site I could find was the Interactive Journalism Institute for Middle Schoolers which is a research project that introduces students to CT via the creation of online magazines. The computational thinking is via digital media, interactive graphics, animation, video and database design in a collaborative setting. It is designed to foster computational and writing skills and they also get to to share their online magazine with family, friends and teachers. This research project is led by three computer science and journalism faculty and a gender-equity specialist at The College of New Jersey.
Computational thinking (which they abbreviate as CT, but I think of CT as critical thinking) involves a set of problem-solving skills and techniques that software engineers use. It makes sense from a Google perspective to approach things like an engineer, but I am not so sure that all things in education need to be approached that way. I always thought that Google's problem with doing social (see Orkut, Wave, Plus) was that it was designed by engineers rather than a mix of people with the emphasis on non-engineers.
Nevertheless, here are a few examples they give of techniques that their engineers use to write programs.
Pattern Recognition: People look for patterns in stock prices to decide when to buy and sell.
Pattern Generalization and Abstraction: A daily planner uses abstraction to represent a week in terms of days and hours, helping us to organize our time.
Algorithm Design: When a chef writes a recipe for a dish, she is creating an algorithm that others can follow to replicate the dish.
That last item, Algorithm Design, is something we hear about frequently these days even though most of us have no idea what that measn other than "it has something to do wih math." They define it as the ability to develop a step-by-step strategy for solving a problem. Algorithm design seems to include the other techniques: look at the decomposition of a problem and the identification of patterns that help to solve the problem. In computer science as well as in mathematics, algorithms are often written abstractly, utilizing variables in place of specific numbers. Look at the examples they provide:
- When a chef writes a recipe for a dish, she is creating an algorithm that others can follow to replicate the dish.
- When a coach creates a play in football, he is designing a set of algorithms for his players to follow during the game.
- In mathematics, when we calculate the percent change between two numbers, we follow an algorithm along the lines of:
If the original number is greater than the new number, use the following equation to calculate the percent change: percent decrease = 100*(original - new)/original.They lose me when they say that you can take it "a step further" and implement this algorithm in Python so that a computer calculates this for us:
If the new number is greater than the original number, use the following equation to calculate the percent change: percent increase = 100*(new - original)/original.
If neither is true, then the original and new numbers must equal each other and there is no percent change.
original = float(input('Enter the original number: '))
new = float(input('Enter the new number: '))
if original > new:
percent_decrease = 100 (original - new) / original
print 'Percent decrease:', percent_decrease, '%'
elif new > original:
percent_increase = 100 (new - original) / original
print 'Percent increase:', percent_increase, '%'
else:
print 'There is no percent change.'
Of course, the "step further" is the key for an educator. Google says in its professional development section that this is intended for math teachers and on the web resources page it is all math, science and computer science. What I would be interested in seeing are some applications in other areas.
The one site I could find was the Interactive Journalism Institute for Middle Schoolers which is a research project that introduces students to CT via the creation of online magazines. The computational thinking is via digital media, interactive graphics, animation, video and database design in a collaborative setting. It is designed to foster computational and writing skills and they also get to to share their online magazine with family, friends and teachers. This research project is led by three computer science and journalism faculty and a gender-equity specialist at The College of New Jersey.
Comments
No comments