Monday, July 18, 2011

0 Computational Thinking

This week I am at a computational thinking workshop at Carnegie Mellon University. This workshop is part of their ACTIVATE (Advancing Computing and Technology Interest and Innovation through Teacher Education) workshops for teachers.


Workshop Description (in case your interested for next year)

This workshop illustrates the wide variety of applications of computational thinking at conceptual and practical levels through a series of teacher-participation exercises and presentations. In particular, the workshop includes hands-on activities that teachers can duplicate in their classrooms to illustrate computing principles beyond computer programming. (From the CMU ACTIVATE website)
I am always looking for opportunities to learn new programming languages and applications of computing, which is why I enrolled for this workshop (oh, did I forget to mention, they pay you to attend :) )


What is computational thinking? This term was coined by Jeanette Wing, her vision "is that computational thinking will be a fundamental skill used by everyone in the world by the middle of the 21st century."

Some examples of computational thinking in our everyday lives:

  • Sorting important documents
  • Choosing a line at the supermarket (queuing and scheduling)
  • Putting things in your child's knapsack for the day (caching)
  • Running errands (traveling salesperson)
  • Cooking dinner or washing loads of laundry (parallel processing/pipelining)
Computational Thinking in STEM
  • Biology: DNA sequences are strings in a language
  • Brain Science: Analyzing fMRI data with machine learning algorithms
  • Chemistry: Optimizaion and searching algorithms identify best chemicals for improving reaction conditions to improve yields
  • Engineering: Boeing 777 tested via computer simulation alone, not in a wind tunnel
An operational definition of computational thinking for K-12
  • formulating problems in a way that enables us to use a computer and other tools to solve them
  • logically organizing and analyzing data
  • representing data through abstractions such as models and simulations
  • automating solutions through algorithmic thinking (a series of ordered steps)
  • identifying, analyzing, and implementing possible solutions with the goal of achieving the most efficient and effective combination of steps and resources
  • generalizing and transferring this problem solving process to a wide variety of problems