Teaching and Assessing Computational Thinking

thumb[1].jpgComputational thinking (CT) might seems like a foreign concept when it comes to elementary and secondary education. People have the misconception CT can only be used in computer science, but the reality is computational thinking can be seen in all subject areas and grade levels. Students are always using problem solving skills to tackle assignments or daily life issues. Then, why isn’t computational thinking intentionally used in classrooms? The fact is the majority of educators do not know what computational thinking is and how it can be used in general education. There is no definitive definition that truly represents what and how computational thinking can be used. There is no sufficient exposure outside computer science. So what can be done to change this? How can educators and the education system change this to better student learning? commoncorelogo[1]

A change of the educational system is way overdue. The need to change how students learn is of crucial importance and this can only be done by changing schools’ curriculum. Students’ expecting learning outcomes should be a reflection of the skills they need to succeed in today’s society. Computational thinking not only provides this but as well as improves students’ educational experience. Students become active participants of their own learning experience and make a connection with real world scenarios. CT needs to be incorporated into all schools’ curriculum in a various subject matters and grade levels. Now when incorporating CT, it does not mean schools and teachers need to teach students coding or use digital tools. There are many ways the CT components can be used without technology or computation. coding-national-curriculum-computing[1]

The next step is providing professional development for educators. Teachers need to know how to implement CT in non computer science (CS) subjects and know what type of resources are available. This can be in the form of summer institutes, learning communities, curriculum materials, models, simulations, and open source tools.

Until major changes are done at the federal level, these are some ways computational thinking can slowly change how students learn. Bringing computational thinking into the classroom is an article that explains more in-depth how computational thinking can integrated into the educational system. The author explains the many steps necessary needed for a profound educational revolution and provides detailed examples of how CT components can be incorporated into various subjects. Code is a website that provides ample resources for students and teachers on coding in different grade levels. Google Exploring Computational Thinking is another great source for lessons and learning about CT.

When it comes to assessing computational thinking the use of video games, non video games and robotics is one approach.  The Center for Connected Learning and Computer-Based Learning provides various approaches to assessing CT. In the article Interactive tools for Assessing computational Thinking Skills explains how CT assessments should be based on the skills used in CT like data collection and analysis and simulations.

Using CT in The Classroom

This is a Project Based Learning Lesson Plan for Surface Area and Volume that demonstrates how computational thinking can be incorporated into a middle school setting in a subject area outside of computing or computer science. The lesson is a long term project based learning assignment where students participate in various chunked activities that are put together in the end and presented.

Throughout the project, several components of computational thinking are being used such as the collection of data, analyzing, decomposing and presenting data, algorithms and procedures and simulation. Students are being challenged by a real-world issue that they can easily relate to. They are given sufficient autonomy of how to tackle the project and decide how they will solve issues along the way.

Algorithms and Pattern Recognition

daie-algorithms[1]An algorithm is a fancy word used in the computer science world to describe a plan to solve a problem. Most people believe algorithms are only used with computers, but in reality algorithms can be used in a variety of instances. In computational thinking, algorithms make up a great part of the computational thinking process.

With every problem there is a solution and to get to the solution you need a plan. To start the plan you must have a description of the problem. This is easier said than done since the majority of the descriptions are vague and ambiguous in nature. The developer, or the person that creates the plan, must identify and specifically state the defects within the description without making any assumptions.

The second step is to analyze the problem. This is a crucial step given that you identify the starting and ending point to solving the problem. When determine the starting point, the developer must take into consideration the type of data available, what relationships are there between the data and or what rules exists for working with the data. The same concept applies when determine the ending point. The creator must decide what characteristics will be used to identify the solution. What items will change at the end?

Here is where pattern recognition is crucial. Knowing how to identify patterns leads to relevant data that can be used to make an algorithm.

The third step is to develop the high algorithm or the plan to the solution. By high-algorithm, I mean focusing on the bigger picture of the plan and leaving the small details for later.

Naturally the following the step is to refine the high algorithm plan by adding details. Here is when emphasis is put on the small details that make the algorithm precise. The only issue is knowing how many details are enough. The algorithm has to precise to be used in similar situation, but too detailed where the possibilities of its use are limited to only a few problems.

The final step is reviewing and putting to the test the algorithm.

Here is a more depth explanation on Algorithms and Problem Solving.

 

 

Alice and NetLogo

 

aliceprogramming

Alice

Alice is another educational programming language aimed at teaching children about object-oriented programming in a 3D environment. The same “drag-and-drop” concept is used in this programming language with the exception of an integrated development environment (IDE).  The intended purpose of the programming language is to not only teaching coding but as well as instill elements of problem solving, collaboration and analytical thinking skills. The program can be used by middle school students as well as a tool for introductory course for programming at the college level. Currently Alice is being used for storytelling.

When comparing Alice to other programming language programs, Alice is not as user friendly as Scratch or Mindcraft. Alice can be used for the same activities as Scratch and Mindcraft. It is a matter of preference.

NetLogo

netlogo[1]

NetLogo is another educational programming language used to teach students about coding. The difference with this programming language is the environment model it uses. NetLogo runs on a HubNet system, which is a participatory simulation, where a whole class takes part in enacting the intended behavior of the system as each students controls a part using an individual device. This is a great feature since it can easily be used in a classroom and with almost any subject since NetLogo has an extensive library with numerous models in various subjects. Another neat feature is the use of emergent phenomena where students find patterns from smaller entities to put together and form a higher complex process. Not only students are learning about coding, but as well as computational thinking.

Scratch: educational programming

Scratch is a free programming language used to teach children about basic computer programming through the creation and use of interactive stories, games, art, simulations and more. The concept behind the program is to emulate programming by having users drag blocks from a block palette and attaching them to other blocks. Essentially it is building code with blocks, also known as “drag-and-drop programming.”

2000px-scratchcat-svg

The program is very intuitive and easy to use. The user interface divides the screen into several panes where the command blocks are dragged from one section to another. The main pane is the stage where the “sprites” or animations are played. The other panes are the sprite pane, the block pallet, the costume pane, and the toolbar.  Within the block pallet the commands are in ten different groups ranging from motion, looks, sounds, pen, control, events, sensing, operators, variables, and more. One can get an idea of how the program works by simply looking at games that have already been created.

What is so neat about this language is it can be used for more than just learning code. Students, teachers, scholars and even parents are coming together and creating games that can be used for an array of topics and subjects. Currently Scratch is being used from a constructivist learning point of view for math, science, art, and social sciences. There is even a community within the Scratch site where any user can  share projects and remix other projects from other users. All projects on the website are shared under a Creative Commons attribution and can be played in web browser using Flash Player. There are also online communities specifically for certain groups like educators, ScratchEd.

Link

Computational Thinking

Computational thinking is a problem solving process used by computers to help people think more efficiently and effective when tackling new ideas or projects. The process consists in collecting data to break it down and analyze to identify patterns that can be used to create a plan to solve a given problem or idea.

computational-thinking-white-bg-300x300[1].jpgComputational thinking is causing big waves outside the computer science field given that it has the potential be used in an array of educational levels. CT offers educators and students the necessary skills needed to succeed in today’s society. Even more so, computational thinking makes the learning process engaging and fun.

computational-thinking-21-638[1].jpg

 

Video

Components of Computational Thinking

  • Data collection: gathering appropriate information
  • Data analysis: Finding patterns and drawing conclusions
  • Data representation: Organizing data in appropriate categories and images
  • Decomposition: Breaking down tasks into smaller manageable parts
  • Abstraction: Reducing complexity to define main idea

barefoot-ct-poster-for-website

  • Algorithms and procedures: Series of ordered steps taken to solve a problem or achieve some end.
  • Automation: Having computers or machines do repetitive or tedious tasks.
  • Simulation: Representation or model of a process. Also running experiments using models.
  • Parallelization: Organize resources to simultaneously carry out tasks to reach a common goal.