Monday, August 29, 2011

The Age of Cassandra

Kristen Marhaver is a PhD student studying coral biology who wrote the absolutely fascinating Ecosystems in the Age of Cassandra in the May 5 Science Progress. She cites Adam Cohen's New York Times editorial wondering why policymakers do not react appropriately to scientific warnings of impending disaster such as the Hurricane Katrina flooding, September 11th attacks, and Bernie Madoff fraudulence.

Marhaver suggests that the problem is the difference in pace between science, which takes years to research and verify, and news, which doesn't spend more than a day or two on a story, especially one about scientific research or predictions. She has a number of notable suggestions for indicating to publishers and policymakers which research is really, really important and making research findings openly available.

The comments are worth reading as well, especially for people who want to make their message heard. One journalist remarks on the importance of a story - protagonist, antagonist, beginning, middle, end. People respond to research written with a narrative theme. They respond to the stories of individuals too - "the death of one man is a tragedy, the death of millions is a statistic" (misattributed to Stalin).

There are systemic problems leading to a failure on our part to heed important warnings. Research reports written for peer-reviewed journals aren't necessarily appropriate for lay people, even when the information is crucial. And researchers who are embedded in their own little world may miss the forest of the larger world for the trees of their own point of view.

Scientists must find ways to choose the message and frame it in a way that important audiences can hear and act on. Policymakers have many competing interests. So does industry. So does the public at large, so do teachers, so do students, but they aren't all the same interests. It's important to figure out what messages are crucial and which can be heard and by whom. Then we can hope for success in making the world a better place.

Wednesday, August 10, 2011

Computer Science Around Programming

Alfred Thompson posted Computer Science Before Programming, where he starts by considering the new trend of courses that teach introductory CS without relying on programming-first. He quickly moves into a discussion of different levels of programming languages and focuses on the question of whether "post-syntax" languages such as Scratch, Alice, and Kodu expose the right concepts, such as how loops work.

I think that even when we focus and try hard, we all too often fall into the trap of thinking that the big ideas of programming are synonymous with the big ideas of computer science. We all learned CS through programming first, and it's our mental model of how it works. Changing such an ingrained mental model, especially when nearly everyone around you is reinforcing the model, is hard.

I believe that programming is to computer science as experimentation is to other sciences. It is the work of professionals in the field. It is how we develop new ideas. And it is a skill that must be learned before it can be used in a meaningful way.

We don't make students experimentally derive all we know about science from first principles - we tell them the formula for acceleration, the value of the force of gravity, the periodic table of elements. We don't make them figure these things out, and it's a good thing because usually they don't have the skill or tools to accurately measure these known quantities.

Now, some people will be saying, "but we TELL them about conditionals and loops and parameters and abstract classes!" Those are big ideas of programming. Not of computer science.

Here are some of the big ideas of computer science:
  • The design of things is impacted by the assumptions and experience of the people who make them.
  • The computational devices we use affect our society. And related: there are ethical implications to computational tools.
  • What is computing good for and what is it bad for?
  • How do we abstract details to model problems and find solutions?
  • What does it mean that computers run on binary when we have beautiful user interfaces?
I can teach every one of those, and lots of others, with no formal programming languages. Programming would only get in the way of what could be a rich discussion and deep understanding.

Students should experience programming - it's empowering and fun and an important part of computer science. But we shouldn't confuse the skill of programming with the concepts of computer science.