Saturday, December 14, 2013

Professor for one year (week 35): Should everybody know how to program?

This post is the report, I wrote for the GPP 2013.

Introduction

Being a computational linguist, I was trained in programming as well as in linguistics.  After school in the mid-nineties, I couldn't decide whether to focus on linguistics (or nowadays "humanities") or computer science/math (or nowadays "STEM").  So I was quite happy to be able to focus on both when studying computational linguistics.  I always loved algorithms, abstraction -- and yes, I also loved Latin.  Maybe that's a rare combination, but in today's world it turns out to be quite handy.

One aspect of the 2013 GPP motto "University and Society -- Meeting Expectations?" is the aspect of university as the institution to prepare students to be successfull in today's society.  In the last decade, we saw the emergence of more and more electronic devices, "digital" is one of the buzzwords in several scientific fields, technology becomes pervasive.  We speak of the "Generation Y" as being "digital natives."  However, if we look how today's students use technology, they are only users, they are not creators.  They often even don't know how to configure programs.

Douglas Rushkoff in his book Program or be Programmed argues that everybody should know how to program to understand today's technology and to be able to control it instead of becoming a slave of the electronic devices surrounding us.  So my personal focus in the GPP 2013 was to explore how universities support or enable learning to program.  Of course students in computer science (CS) and related fields (like computational linguistics) are trained in programming, but I was interested in courses for non-CS students.

Answers from US professors

During our visit in the US, I asked my question at two places explicitely and I got two different answers. 

At North Eastern University, Dr. Neenah Estrella-Luna, an assistant academic specialist,  as she described herself, argued that indeed, computer literacy would be a valuable topic to teach considering that university should empower students to deal with current challenges.  However, she admitted that there are no courses offered to all students, not to mention being required.  My question was understood as asking about "teaching students how to program." 

At swissnex in Boston, we met Dr. James Honan, senior lecturer at the John F. Kennedy School of Government at Harvard.  He understood my question differently and answered that students would keep faculty busy and push them to use more technology.  He talked about MOOCs before and probably this influenced his answer.  However, his statement made clear that there is a view of "computer literacy" as "being able to use devices", including the expectation that instructors offer digital content and e-learning material.

At this moment, I was a bit disappointed.  Either the necessity of teaching and learning how to program is not recognized, or, when it is recognized, it is impossible to offer such courses for all students.

While at the MIT, we visited the Media Lab and the "Lifelong Kindergarten" headed by Professor Mitchel Resnick.  We got an introduction into scratch, the programming language and online community intended to teach kids how to program using a game concept.  They learn abstraction, algorithmics, and data structures while they play with code snippets, interact with other kids around the world, and program their own games and worlds.  It's an advanced model of learning the concept of recursion while playing "Towers of Hanoi."  I was aware of scratch before and I really enjoyed seeing some demos and talking to the researchers involved in designing and implementing scratch.  I think using games as a vehicle for teaching important concepts is a good strategy -- the users aren't probably not even aware that they acquire valuable knowledge they will use later in school, in university, and in their jobs.

Situation in Switzerland

On the morning of the day I took my flight to Boston, I took part in a meeting of an experts panel on CS competencies of the Hasler Foundation in Berne.  The foundation is working towards a proposal for a general subject "Computer Science" at Swiss schools.  Currently, some schools in some cantons offer CS as supplementary subject (in German: Ergänzungsfach).  However, this subject is often taught as it was in the 1990s: students learn how to use certain software, they don't learn to program, they don't learn about abstraction, algorithms, and data structures.  In the publication "informatik@gymnasium", published by the Hasler foundation through NZZ Libro (note that the German version of this book is already sold out!), the authors argue that CS and using software are two differnt things and that school should teach students the basics of CS to prepare future citizens to cope with everyday life.  It is probably a long way to achieve this goal, but it's a goal worth all the effort.

However, here we talk about serious teaching, not about fun instruction as in the case of scratch.

Answers from the Web

After coming home, I searched the web for comments about computer literacy and opinions or activities on teaching programming.  Bill Gates, in a questions session at Microsoft's Faculty Summit, confirmed that there is indeed a "gap between how computer scientists use computers to automate their lives and how most people don't really know how to use them effectively."

Larry Hardesty talks about the "programmable world" that surrounds us and that will change the world as we know it by making the distinctions between virtual and physical objects obsolete.  To make good use of the new world, we should be able to understand opportunities and challenges (and issues) and how to manage them.

In England, efforts are on their way to teach algortithms to primary school kids.  The government acknowledges the need to "catch up with the world's best education systems."  However, this new curriculum is still under development and the teacher's union isn't sure about when would be a good starting point to introduce it -- they object to only react to governmental decisions.  According to Sean Coughlan it will include computing defined as:

Computing will teach pupils how to write code. Pupils aged five to seven will be expected to "understand what algorithms are" and to "create and debug simple programs". By the age of 11, pupils will have to "design, use and evaluate computational abstractions that model the state and behaviour of real-world problems and physical systems".

It would be great if England could manage to design and actually implement this aspect.

And there are discussions going on in the emerging field of "Digital Humanities": In a twitter post, Jan Hecker-Stampehl (@heckerstampehl) asks "Should humanities scholars learn to program or trust that the programmers in DH projects will understand them?", obviously not aware of the more than 30-year old answer, Jacques Froger gave 1970 (Froger, J. (1970). La critique des textes et l'ordinateur. Vigiliae Christianae 24 (3), 210-217.), as Michael Piotrowski responds:

Il n'est pas indispensable que le philologue établisse lui-même le programme, encore que ce soit infiniment souhaitable ; il devrait au moins connaître assez le langage de programmation pour contrôler le travail du technicien ; en effet, l'expérience m'a appris qu'il ne faut pas s'en remettre les yeux fermés aux électroniciens, mal préparés par leur formation mathématique à se faire une idée juste de problèmes concrets qui se posent dans la domaine de la philologie.
(English: It is not absolutely necessary that the philologist writes the program himself, even though it would be extremely desirable; but he must at least know the programming language, so that he is able to check the work of the technician; in fact, experience has taught me that one should not blindly rely on the electronics people, whose mathematical training has hardly prepared them for fully understanding the concrete problems encountered in the domain of philology. (translation by Piotrowski))


However, even in fields where you would expect learning to program to be part of the curriculum, it is rather rare, as the blog post by Philip Guo shows.  He argues: "If you're a scientist or engineer, programming can enable you to work 10 to 100 times faster and to come up with more creative solutions than your colleagues who don't know how to program."  Students would need more concrete motivation than only arguing that programming helps them become an empowered citizen (the argument Estrella-Luna used at North Eastern).  Guo accepts that programming tools, i.e., text editors, should be improved to foster programming, but in the meantime we should focus on teaching students programming skills to support creative problem solving.

Selena Larson emphasizes the need to teach programming to students in schools already.  She supports the Hour of Code initiative during Computer Education Week 2013, following a similar strategy as scratch: Using games and fun figures, kids should understand basic principles and get an idea about what it means to program.

Conclusion

Studies by professional assocations like the ACM (Association of Computing Machinery) regularly show an increasing number of jobs requiring programming knowledge.  They also show that there is a lack of people with appropriate skills meeting these requirements.  So there is an urgent need in society. 

As I agree that school would be an appropriate place to start teaching basic concepts of CS, university should be the place to empower students to actually program.  Maybe learning to program, acquiring knowledge about algorithms and data structures should be a required course in every curriculum.  I strongly support the statement made by Steve Jobs in an interview in 1995 saying "It teaches you how to think.  I view computer science as a liberal art.  It should be something that everybody learns."

However, we are still on the way to implementing those ideas into education, be it in school or at university.  If we have the chance to support initiatives like the Hour of Code or panels and experts groups designing curricula, those of us having the respective knowledge, should take part and see this as opportunity to serve society.

No comments: