Tag Archives: Computational thinking

The Times: “Program or Be Programmed”

A lot of computer science in The Times today: a full-page article on page 3 entitled Play the game, but write the software too (£), a four-page pullout on learning how to code, as well as the following leader (£) on page 2:

Program or be Programmed

The best time to start learning the language of computer code is now

void draw() {
    background(255);
    stroke(0,0,0);
    line(0,0,60,hour());
    line(0,0,120,minute());
    stroke(255,0,0);
    line(0,0,180,second());
}

The world divides into a majority of people for whom the preceding four lines are meaningless and a minority for whom it is clear at once that, given the right breaks between them, these lines will create on your computer screen a simple clock.

For the majority, the world of software is a built world that, like a city, helps us to organise and to consume. But it has been built by others. For the minority, software is merely a curtain that can be pulled aside to reveal a wild world of confusion, trial and error, but also of potentially unlimited creative and commercial potential. It is time for Britain’s schoolchildren to be granted access to this world.

For a brief period in the 1980s, British schools and universities punched far above their weight in the production of graduates who spoke the language of computers. This was partly a legacy of Britain’s pioneering role in the fundamentals of computer science and partly thanks to the BBC Micro, which appeared in most schools in the country but required a basic understanding of code for even its most basic functions.

The Micro generation went on to dominate the creative side of the computer gaming industry, but mainly in other countries. Since then Britain’s top three universities for computer science — Oxford, Cambridge and Imperial College, London — have kept their rankings in a global top 20 predictably dominated by the United States. But for a wasted generation, computer science in schools has languished at the expense of something else entirely.

As Michael Gove lamented in a speech in January, the national curriculum’s vision of Information and Communications Technology (ICT) had atrophied to little more than a primer in the use of Microsoft Word and PowerPoint. What pupils got, if they could stay awake, were simple skills that conferred little competitive advantage and in most cases could anyway be self-taught. What they needed was a rigorous but rewarding grounding in code as a foreign language.

At the Education Secretary’s invitation, industry has produced a blueprint for a new computer science curriculum. It would start early. By the end of primary school, pupils would be able to build an app for a mobile phone. By 16 they would be able to write a program to solve a Sudoku puzzle. By 18, if they took computer science at A-Level, they would be able to write the code to guide a van along the shortest route between two points on a digitised map.

Under this scheme, coding would start at 7. Its advocates say this would produce, eventually, the number of computer-literate graduates that British employers need; equip all pupils with the ability to compartmentalise and sequence their thinking as coding requires; and reflect the new reality that no rounded education is complete without an introduction to programming.

It is a compelling case. Some schools may respond that they cannot possibly have enough qualified teachers ready for a curriculum by 2014, when the successor to ICT is due. That is no reason to push back the deadline. It is a reason to speed up the necessary training. That clock on your computer screen is ticking.

While it has been widely reported that industry have taken the lead on developing the new ICT Programme of Study in England, this is not quite correct. It has been coordinated by the BCS and the Royal Academy of Engineering on behalf of the Department for Education, with input from key stakeholders across education, academia, government and industry. They may have been indirectly referring to Computer Science: A Curriculum for Schools, the CAS curriculum which has been endorsed by industry and the examination boards.

N.B. The Times also cleverly demonstrated that programming is non-trivial, by inserting a couple of typos in the code fragment at the start of the article…

Tagged , , , , , ,

Programming is the start not the end: let’s develop computational thinking and problem solving skills

(N.B. This is the original unedited version of an article published online today in The Telegraph)

I wholeheartedly support the high-profile initiatives to get more children programming, especially as part of the rethinking of the ICT curriculum in UK schools. The publication of the Royal Society’s report Shut down or restart? in January highlighted the unsatisfactory state of ICT education in the UK, recommending that every child should have the opportunity to study the rigorous academic discipline of computer science. With the disapplication of the existing ICT Programmes of Study and the development of a new programme of study as part of the National Curriculum Review in England, we are at an exciting crossroads, with a real opportunity to make computing and technology a key focus of our education system. But if there’s one lesson we should take away from the problems of the past 15 years it is that we must not focus on transient and superficial technology skills. Computer science is not programming (and vice versa) and we should be wary of teaching programming just for the sake of teaching programming, without thinking about why we want to get kids to program.

publicclassfoopenis2

When Michael Bloomberg, Mayor of New York City, tweeted in January that he was going to learn how to program, there were strong opinions expressed implying that programming is not for everyone. This is untrue. One of the reasons that programming is increasingly perceived to be a 21st century literacy in our technology-dependent society is because it is ultimately empowering, developing the ability to manipulate and control your digital world. But the key message is that learning how to program is not the endpoint, but part of the journey of equipping children with the necessary digital skills to solve problems. Our high-level aim should be to develop technology-independent skills and techniques, such as data literacy and computational thinking.

Computational thinking is a way of solving problems, designing systems and understanding human behavior that draws on concepts fundamental to computer science. Computational thinking includes a range of mental tools that reflect the breadth of the field of computer science. Computational thinking means creating and making use of different levels of abstraction, to understand and solve problems more effectively; it means thinking algorithmically and with the ability to apply mathematical concepts to develop more efficient, fair, and secure solutions; it means understanding the consequences of scale, not only for reasons of efficiency but also for economic and social reasons. And this is why it is important to teach computer science in schools: we need to embed principles and theory to develop a deeper conceptual understanding of how technology works and how it can be leveraged to solve problems. There is a quote commonly misattributed to Edsger Dijkstra: “Computer science is no more about computers than astronomy is about telescopes.” — this is where computational thinking fits in, abstracting away the technology.

Hence, there is an important balance to strike between focusing on developing practical programming skills (i.e. being able to write code for a specific task) and embedding a deeper understanding of languages and constructs: principles of programming. We know technology changes quickly, so we need to make sure that when “Technology X” appears, we have transferable knowledge and a deeper conceptual understanding of how it works and how it can be used.

But there are significant challenges ahead in changing the status quo and enthusing and engaging children in schools. Programming is a creative endeavour and offers a tangible way for children to express themselves by hacking, making and sharing. We now have the hooks to use in schools e.g. Raspberry Pi, Arduino, .NET Gadgeteer, LEGO Mindstorms, etc, offering opportunities for embedding computing across the curriculum. But we also have to recognise the importance of developing this deeper conceptual understanding, the problem solving and analytical skills, as well as knowledge of the underpinning theoretical foundations of computing.

So let’s change the focus from just writing code to developing the crucial thinking skills and the ability to solve problems. To quote Jeannette M. Wing, Professor of Computer Science at Carnegie Mellon University: “Computational thinking is a fundamental skill for everyone, not just for computer scientists. To reading, writing and arithmetic, we should add computational thinking to every child’s analytical ability.

Tagged , , , , , , , ,

The Global Impact of Computer Science

I recently watched the excellent closing keynote from Megan Smith (Vice President, New Business Development at Google) at the 2010 Computer Science & Information Technology Conference at Google HQ in California. The annual CS & IT Conference is organised by the Computer Science Teachers Association (CSTA), a membership organisation that supports and promotes the teaching of computer science and other computing disciplines in the US (CAS in the UK is modelled on the CSTA).


The keynote was originally pitched as a talk on the “future of technology and education” but was a wider analysis of the extraordinary global impact of computer science. And it is truly extraordinary and widespread: from analysing global flu trends, making critical information more accessible in times of disaster or using decades of satellite date to track Amazon deforestation, through to its impact on education: search engines for learning, the value of programming and creating apps and even widening access to learning.

Megan’s talk gives a great overview of what is happening in the world because of computer science and information technology, as well as the wider trend of convergence and interconnection between disciplines (especially between the physical sciences and the life sciences). It also reinforces the importance of data literacy and computational thinking; we frequently talk about the value of digital literacy and the effective use of technology for learning, but how can we truly embed computer science across the curriculum?

Tagged , , , , ,

Computational Thinking and Thinking About Computing

In the run up to the 2012 CAS Wales/Technocamps Conference, I wanted to draw attention to a concept that is increasingly praised for its wide utility across education, but rarely adequately explained: computational thinking. The phrase computational thinking was brought to the forefront of the computer science community as a result of a 2006 CACM article by Jeannette M. Wing. Wing is Professor of Computer Science at Carnegie Mellon University, where she leads the Microsoft Research-sponsored Centre for Computational Thinking.

Computational thinking is the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by an information-processing agent.

Computational thinking is a way of solving problems, designing systems and understanding human behavior that draws on concepts fundamental to computer science. Computational thinking includes a range of mental tools that reflect the breadth of the field of computer science. Computational thinking means creating and making use of different levels of abstraction, to understand and solve problems more effectively; it means thinking algorithmically and with the ability to apply mathematical concepts such as induction to develop more efficient, fair, and secure solutions; it means understanding the consequences of scale, not only for reasons of efficiency but also for economic and social reasons. And this is one of the reasons why we are espousing the teaching of computer science in UK schools to every child; there is a quote that is commonly misattributed to Dijkstra: “Computer science is no more about computers than astronomy is about telescopes.” — this is where computational thinking fits in. Many people equate computer science with computer programming, with some parents seeing only a narrow range of job opportunities for their children who study computer science. Computational thinking is a grand vision to guide computer science educators, researchers and practitioners as we act to change society’s perception of the field. There are two key message from Wing’s 2006 article:

  • Intellectually challenging and engaging scientific problems remain to be understood and solved. The problem domain and solution domain are limited only by our own curiosity and creativity;
  • One can study computer science and do anything. One can study English or mathematics and go on to a multitude of different careers. Ditto computer science. One can study computer science and go on to a career in medicine, law, business, politics, any type of science or engineering and even the arts.

We should look to inspire the public’s interest in the intellectual adventure of the field. We’ll thus spread the joy, awe and power of computer science, aiming to make computational thinking (truly a 21st century skill) commonplace.

Computational thinking is a fundamental skill for everyone, not just for computer scientists. To reading, writing and arithmetic, we should add computational thinking to every child’s analytical ability.

 

Tagged , , ,

Will 2012 be the Year of Computer Science?

2011 was a promising year for computer science in schools, with government ministers (even the Prime Minister) appearing to recognise its importance from both an educational and economic perspective; all in the midst of a uncertain large-scale education review in England. 2012 is shaping up to be just as promising, starting with the publication of the Royal Society’s 18 month study on computing in schools in a fortnight. Computing At School (CAS) have been busy on a number of fronts over the past year, but in particular advocacy at national policy level (along with the BCS Academy of Computing).

However, we have to remain grounded — there is still a huge amount of work to be done (and nothing is yet guaranteed). As well as continuing the policy work, one of the priorities for CAS is to further connect with and support the network of Computing and ICT teachers across the UK, as well as changing the wider public’s poor perception of computer science — into a rigorous, practical and intellectually useful academic discipline (and as a pathway to a wide range of careers). There are also a number of excellent initiatives to support that focus on developing the key skills of computational thinking and programming, as well as genuinely engaging young people with technology: Young Rewired State, Hack to the Future, Apps for Good, Codecademy et al.

After a recent conversation with @BringBackCS, it seemed an opportune time to coalesce Twitter discussions under a unifying hashtag:


I will be using this hashtag to promote Computer Science in 2012; please use and spread the message!

And why is 2012 especially important? It’s also the Turing Centenary, a celebration of the life and scientific influence of Alan Turing on the centenary of his birth on 23rd June 1912. A number of major events (such as the Computability in Europe 2012 conference) will be taking place throughout the year, with many linked to places with special significance in Turing’s life, including Cambridge, Manchester, Bletchley Park and Princeton. 2012: The Alan Turing Year and the Year of Computer Science.

We can only see a short distance ahead, but we can see plenty there that needs to be done.

Alan Turing, Computing Machinery and Intelligence (1950)

Tagged , , , , , , , , , ,
Follow

Get every new post delivered to your Inbox.

Join 355 other followers