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.
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!
ReplyDeleteNicole,
ReplyDeleteI 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.