Sunday, September 11, 2016

Hutchins - Computational Thinking Curriculums in Practice

The selection of what programming language to use for educational purposes is constantly changing.  Here at Vanderbilt alone, there was recently a discussion of which language to use during the first three semesters of computer science courses. Initially, students are introduced to Java – a platform independent, object-oriented programming language, but in the second-level course (2201), students move to C++. In a discussion with a professor on why they change between the two linked classes he said that based on the introductory level it was more logical to use Java, especially since C++ utilized pointers – a topic that may be better suited for most second year students. However, last year Java was used for the third year, Intermediate Software Design course, but I believe the course is back to using C++ this year. I start with this idea because as I was reading to understand the underpinnings of what exactly is computational literary I kept thinking -- how can it relate to literacy when the language itself is constantly changing and adapting to the evolutions in technology (more-so than the introduction of English words such as “bootylicious” to the dictionary)?
Moving forward from that notion, and prior to my discussion on topics from the readings, I wanted to pose another question to everyone – what happens when programming languages aren’t needed? Along the same lines that AI researchers are moving towards solving the Grand Challenge mentioned by Wing (2006, page 35), researchers in the same fields, mainly machine learning, are using artificial intelligence designs to move towards applications in which computers can understand the English language in a way that users would be able to “train” them instead of program them. This idea, illustrated in an article in Wired Magazine this summer entitled, The End of Code, is growing at a tremendous pace.
I brought this up because I believe it is important to address or utilize these educational tools in a way that sets a strong, productive path for our youth. What do I mean? While we may not need to program machines (well, I believe there will still be a need for computer programmers, but that is an entirely separate topic), training them involves a strong understanding of computational thinking topics outlined by Wing (Conceptualizing, abstraction, ideas - not artifacts, etc).

Computational Thinking Curriculums in Practice
An idea I struggled with while reading Wing’s articles was – what does the teaching of computational thinking look like? It seemed to me that programming was still key to teaching these concepts. For instance, before I agreed to teach high school computer science I took Harvard’s CS50 course on EdX because I heard great reviews on it as a course that inspires the non-programmers to move forward in computer science. And while I agree, it is fun, eye-opening, and teaches a great deal of computational thinking skills – programming was still at its base (in that case they used C for the programming language). Wing also struck me when she noted that, “we do not want people to come away thinking they understand concepts because they are adept at using the tool” (2008, pg 3721). This reminded me of Resnick’s TedTalk and what constitutes “digital natives.”
I have to say I enjoyed Curzon et al article (although I would love to see more information on how each workshop and evaluation was conducted), but I enjoyed it because they outlined workshops delivered on computational and algorithmic thinking without having to code. They also posed the notion that how to best teach computational thinking remained “an open question.” Wilensky's "Fostering computational Literacy in Science Classrooms" paper (which I also wished for more information on the implementation of each project as well as more data on the results) introduced the idea of agent-based modeling as a way to introduce computation - which seems to be a middle ground between common programming class and Curzon's workshops. 
So, to my fellow Programming to Learners – what does an implementation of a computational thinking curriculum look like to you?

More on the Scratch Cloud Story Idea:
A few of my students back home did a project for my former middle school science teacher on how clouds are formed. 

Here are Olivia and Nati’s projects:


 I want to develop it from there and make the project the students create either more interactive/specifically related to memorizing the different types of clouds.

2 comments:

  1. I am so amazed by reading the thoughts you brought up in your writing about the choice of programming language. Scratch, if we compare with other more traditional and formal programming languages such as C, C++ or Java, still is a higher level of language. Scratch has blocks such as movement blocks, sound blocks which to write in C, one may need to write tens even hundreds of lines of code. The same program one could write in C in just few lines if one has access to a proper library. One could argue, though one gets access to more developed libraries they still need to use C syntax when to write code in C. Then again, there are programming languages which are not syntactically as low level as C. For example scratch uses different syntax in fact they use visual syntax. It is imaginable with the advances of computing technologies programming language which are as static as now would not be so anymore. They may become much closer to natural language. What would not change is computational thinking. Computational thinking in my understanding is much older than the development of computers. It is rooted in mathematics and logics and in thinking about the world around us including thinking about our own self and our society which were founded thousands of years before the computer appeared into being may be even before what our historian could tell us about. I also would like to take it further; it is rooted in the system of how beings evolve in the whole system of evolution on which our world is founded on. May be our method of computation is not matured enough and it needs constant development. But it is there!

    ReplyDelete
  2. Nicole,
    I really enjoyed reading your post!! I greatly approve; Curzon et al.'s article most accurately describes how computational thinking could be dissociated from a programming language. But I still believe that applying these concepts through programming allows for a deeper level of understanding and reveals their beauty and power.
    And although, as you pointed out in the beginning of your article, different languages do have some different concepts, there are still other generic concepts that span all languages.

    ReplyDelete