Posts tagged ‘computing education’

Universities aren’t preparing enough computer science teachers, and we have no path to get there

Not really a surprising claim, but I still think that we’re not talking enough about this. No K-12 subject is taught nationwide without producing teachers from universities. We simply cannot create sustainable K-12 CS education without universities producing CS teachers (called “pre-service teacher professional development”). Currently, we produce new CS teachers by recruiting existing teachers from other subjects (called “in-service teacher professional development”). None of our models for growing CS nationwide currently have a plan to replace in-service with pre-service (as described in this blog post).

Looking for answers, we examined the state-by-state data on the number of graduates prepared to teach various subjects. We found that in 2016, only 75 teachers graduated from universities equipped to teach computer science. Compare that to the number of graduating teachers prepared in mathematics (12,528) and the sciences (11,917 across general science, biology, chemistry, physics, and earth science).

Source: Universities aren’t preparing enough computer science teachers

November 24, 2017 at 7:00 am 7 comments

Keeping the Machinery in Computing Education: Back to the Future in the Definition of CS

I’ve been excited to see this paper finally come out in CACM. Richard Connor, Quintin Cutts, and Judy Robertson are leaders in the Scotland CAS effort. Their new curriculum re-emphasizes the “computer” in computer science and computational thinking. I have bold-faced my favorite sentence in the quote below. I like how this emphasis reflects the original definition of computer science: “Computer science is the study of computers and all the phenomena surrounding them.”

We do not think there can be “computer science” without a computer. Some efforts at deep thinking about computing education seem to sidestep the fact that there is technology at the core of this subject, and an important technology at that. Computer science practitioners are concerned with making and using these powerful, general-purpose engines. To achieve this, computational thinking is essential, however, so is a deep understanding of machines and languages, and how these are used to create artifacts. In our opinion, efforts to make computer science entirely about “computational thinking” in the absence of “computers” are mistaken.

As academics, we were invited to help develop a new curriculum for computer science in Scottish schools covering ages 3–15. We proposed a single coherent discipline of computer science running from this early start through to tertiary education and beyond, similar to disciplines such as mathematics. Pupils take time to develop deep principles in those disciplines, and with appropriate support the majority of pupils make good progress. From our background in CS education research, we saw an opportunity for all children to learn valuable foundations in computing as well, no matter how far they progressed ultimately.

Source: Keeping the Machinery in Computing Education | November 2017 | Communications of the ACM

November 20, 2017 at 7:00 am 3 comments

Royal Society Report on CS in English Schools: The Challenge of Reaching Everyone

The new report from the UK’s Royal Society is fascinating and depressing. More than half of school don’t offer CS. Because the largest schools do offer CS, 70% of English students are at a school that offer CS — but they’re still not getting into CS classes. Only 1 in 5 CS students are female. The Royal Society recommends a tenfold increase in funding.

We have heard about some of these demographics before (see the Roehampton report and BBC coverage). Here in the US, we’re also talking about dramatically increasing funding (see blog post here about the $1.3B funding from White House and Tech industry).  Are the US and England on the same paths in CS? Is there any reason to expect things to be different, or better, in the US?

report by the UK’s national academy of sciences finds that more than half of English schools do not offer GCSE Computer Science, leaving too many young people without the chance to learn critically important programming and algorithm skills at a crucial stage of their education.

Unless the government urgently invests £60m in computing education over the next five years – a tenfold increase from current levels that puts it on par with support for maths and physics – an entire generation may never unlock the full potential of new technologies such as robotics, artificial intelligence and machine learning.

Key findings from the report include:

  • 54% of English schools do not offer Computer Science GCSE

  • 30% of English GCSE pupils attend a school that does not offer Computer Science GCSE – the equivalent of 175,000 pupils each year

  • Bournemouth leads England with the highest uptake of Computer Science GCSE (23% of all pupils), with Kensington & Chelsea (5%), Blackburn (5%) and City of London coming last (4%)

  • England meets only 68% of its recruitment target for entries into computing teacher training courses, lower than Physics and Classics

  • Only 1 in 5 Computer Science GCSE pupils are female

Source: Invest tenfold in computing in schools to prepare students for digital world, says Royal Society

November 13, 2017 at 7:00 am 4 comments

Why do so few schools try LiveCode? We let industry dictate our tools

I’m an old HyperCard programmer, so I like LiveCode.  LiveCode does very well on the five principles I suggest for picking an educational programming language. The language is highly readable, and was actually designed drawing on research on how novices best understand programming. It’s easy to put together something that looks authentic and that runs on virtually any platform — much easier than Python, Java, Scratch, Blockly, or any of the other top five most popular teaching languages. Authenticity is often engaging for students.

The LiveCode folks have just put together a web page (linked below) describing some of the reasons why teachers should consider LiveCode.  But in general, we don’t.  Why not?  I have two guesses:

  1. There is no community of practice. There isn’t a visible community of teachers using LiveCode. There isn’t an obvious industry call for more LiveCode programmers.
  2. We in computing education are mostly driven by surface-level interpretations of industry needs.  It isn’t obvious that it must be so, or even that it should be so.  But the same forces that killed Pascal and promoted Python, Java, and C++ as our intro languages prevent LiveCode from getting adopted.

I think LiveCode, Smalltalk, and Lisp are all excellent pedagogical programming languages, but our teaching decisions in secondary and post-secondary CS education are rarely based on what will engage students, be easier to learn, or lead to transferable knowledge.  Instead, we tend to make decisions on what obviously looks like what current professionals do.  It binds us to normative practices. We’re stuck in apprenticeship as our teaching perspective, and can’t consider social reform or developmental perspectives.

Better Exam Results, Better Real Life Outcomes, More Fun!

Over a third of Scottish schools are now teaching using LiveCode. They are doing this because they have proven results showing that using LiveCode results in more students remaining engaged, reaching good grades, and continuing in the direction of a coding career.

Source: Education | LiveCode

November 10, 2017 at 7:00 am 24 comments

How to scale our capacity to offer high-quality CS Education – CRA Education Committee

What a great idea!  The CRA Education Committee has created a website of practices to help CS departments manage “Generation CS.”  It includes projects from Google’s CS Capacity Awards.

Although different institutions, large and small, are experiencing the enrollment increases in different ways, many programs are already operating at or beyond their maximum capacity. To help departments and faculty deal with this capacity crunch, this Scaling Capacity website is intended to provide a platform for sharing technological and pedagogical interventions for addressing capacity challenges. These practices are not designed to be ‘one size fits all’, but rather offer a variety of solutions derived from specific university needs.This intervention list includes recipients of Google’s CS Capacity Awards and other self-nominated programs.

Source: Scaling Capacity – CRA Education

November 6, 2017 at 7:00 am 2 comments

What we should be teaching kids about CS and changing our tools to get there: Ben Shapiro

Ben Shapiro gave the opening keynote at VL/HCC a couple weeks ago. (See Andy Ko’s great summary of VL/HCC this year.) He shared the slides with me, and he just made a video of himself re-giving the talk.

Ben has been exploring what we need to teach kids to prepare them to create authentic applications for the world that they live in — multiple, heterogenous platforms with rich networking.  He wants kids to think about networks, failures, and communication between programs running on devices with different capabilities. Today, we talk about teaching kids variables and loops. Tomorrow (like, literally tomorrow), we should be teaching them about the realities of the digital world in which they live.

But we’re not going to do this with Scratch, Python, or Java. He’s suggesting new kinds of tools, including having young kids work with machine learning.

I recommend letting Ben change your thinking about the next things to teach in CS.

October 21, 2017 at 7:00 am 3 comments

Why should we teach programming (Hint: It’s not to learn problem-solving)

This is a revision of the original post. Several readers pointed out on Twitter that my original post was insensitive. It read like an attack on Brenda, a woman of color, from a senior white guy (me). That was not my intent, and I apologize for that. I am grateful to Joseph P. Wilson who helped me understand how to avoid that impression. I can’t change the post that went out yesterday, but I will be more careful in future blog posts.


At the CS for All Consortium Celebration Tuesday, Brenda Wilkerson gave the closing keynote. The full livestream of the CS for All Summit is available here, and it includes Brenda’s talk. I’m a huge fan of Brenda, and she’s done fabulous work in Chicago. She is a leader in bringing CS to All.

I have not seen Brenda’s talk or any of the livestream. My experience of the Consortium Celebration was through reading the Twitter stream as I found time during the day. Brenda had one slide (which you can see in the tweet linked here) that I disagreed with, and because it’s an important point, I’m going to respond to it here.

It says, “Computer science builds the mental discipline for breaking down problems, and solving them.” There are few studies that test this claim as “computer science,” but there have been lots of studies looking for transfer from teaching programming to general problem-solving skills. Probably the first study investigating this claim is Roy Pea and Midian Kurland’s paper On the cognitive effects of learning computer programming. You can find this claim in a paper by Henry Walker to which I responded in this blog. You can see it in posts all over the Internet, from this blog post to this article from a teacher in England. There is a strong belief out there that learning computer science, and programming called out specifically, leads to new problem-solving and “a new way to think.”

There is simply not evidence in support of these claims. I talk about these in my book, I reference the Palumbo meta-review in this blog post, and NYTimes wrote about it this last spring. Like “learning styles” and “Latin teaches thinking,” this is a persistent myth that learning computing leads to problem-solving skills, and we have no support the claim.

I tweeted in response to Brenda’s slide, and several CS teachers asked me, “So why teach programming or computing at all?”  That’s a great question!  Here are some of my top reasons:

  1. To understand our world. The argument that Simon Peyton Jones made in England for their computer science curriculum is that Computer Science is a science like all the others. We teach Chemistry to students because they live in a world with chemical interactions. We teach Biology because they live in a world full of living things. We teach Physics because they live in a physical world. We should teach Computer Science because they live in a digital world.
  2. To study and understand processes. Alan Perlis (first ACM Turing Award laureate) argued in 1961 that everyone on every campus should learn to program. He said that computer science is the study of process, and many disciplines need people to know about process, from managers who work on logistics, to scientists who try to understand molecular or biological processes. Programming automates process, which creates opportunities to simulate, model, and test theories about processes at scale. Perlis was prescient in predicting computational science and engineering.
  3. To be able to ask questions about the influences on their lives. C.P. Snow also argued for everyone to learn computing in 1961, but with more foreboding. He correctly predicted that computers and computing algorithms were going to control important aspects of our lives. If we don’t know anything about computing, we don’t even know how to ask about those algorithms. It shouldn’t be magic.  Even if you’re not building these algorithms, simply knowing about them gives you power. C.P. Snow argues that you need that power.
  4. To use an important new form of literacy. Alan Kay made the argument in the 1970’s that computing is a whole new medium. In fact, it’s human’s first meta-medium — it can be all other media, and it includes interactivity so that the medium can respond to the reader/user/viewer. Computing gives us a new way to express ideas, to communicate to others, and to explore ideas.  Everyone should have access to this new medium.
  5. To have a new way to learn science and mathematics. Mathematics places a critical role in understanding our world, mostly in science. Our notation for mathematics has mostly been static equations. But code is different and gives us new insights. This is what Andy diSessa has been saying for many years. Bruce Sherin, Idit Harel, Yasmin Kafai, Uri Wilensky, and others have shown us how code gives us a powerful new way to learn science and mathematics. Bootstrap explicitly teaches mathematics with computing.  Everyone who learns mathematics should also learn computing, explicitly with programming.
  6. As a job skill. The most common argument for teaching computer science in the United States is as a job skill.  The original Code.org video argued that everyone should learn programming because we have a shortage of programmers. That’s just a terrible reason to make every school child learn to program. That’s what Larry Cuban was arguing this last summer. Tax payers should not be funding a Silicon Valley jobs program. Not everyone is going to become a software developer, and it doesn’t make any sense to train everyone for a job that only some will do. But, there’s some great evidence from Chris Scaffidi (that I learned about from Andy Ko’s terrific VL/HCC summary) showing that workers (not software developers) who program make higher wages than those comparable workers who do not. Learning to program gives students new skills that have value in the economy. It’s a social justice issue if we do not make this economic opportunity available to everyone.
  7. To use computers better. This one is a possibility, but we need research to support it. Everyone uses computers all the time these days. Does knowing how the computer works lead to more effective use of the computer?  Are you less likely to make mistakes? Are you more resilient in bouncing back from errors? Can you solve computing problems (those that happen in applications or with hardware, even without programming) more easily?  I bet the answer is yes, but I don’t know the research results that support that argument.
  8. As a medium in which to learn problem-solving. Finally, computer programming is an effective medium in which we can teach problem-solving. Just learning to program doesn’t teach problem-solving skills, but you can use programming if you want to teach problem-solving. Sharon Carver showed this many years ago. She wanted students to learn debugging skills, like being able to take a map and a set of instructions, then figure out where the instructions are wrong. She taught those debugging skills by having students debug Logo programs. Students successfully transferred those debugging skills to the map task. That’s super cool from a cognitive and learning sciences perspective. But her students didn’t learn much programming — she didn’t need much programming to teach that problem solving skill.But here’s the big caveat: They did not learn enough programming for any of the other reasons on this list!  The evidence we have says that you can teach problem-solving with programming, but students won’t gain more than that particular skill. That is a disservice to students.

Certainly there are more reasons than these, and I’ve seen several in the response to this blog post, and some in the comments below.

This was just one slide in Brenda’s talk. Her overall point was much more broader and more significant. I strongly agree with Brenda’s key point: CS for All is a social justice issue. Learning computing is so important that it is unjust to keep it from some students. Currently, CS is disproportionately unavailable to poorer students, to females, and to minority ethnic groups. We need CS for All.

October 18, 2017 at 12:30 pm 12 comments

Older Posts Newer Posts


Recent Posts

December 2017
M T W T F S S
« Nov    
 123
45678910
11121314151617
18192021222324
25262728293031

Feeds

Blog Stats

  • 1,460,703 hits

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 5,193 other followers

CS Teaching Tips