Posts tagged ‘computing for everyone’
Larry Cuban is a remarkable educational historian. He’s written an article about why requiring coding is a bad idea, and links it to the history of Logo in the 1980’s. I think #1 is the most important, and is similar to Seymour Papert’s “Why School Reform is Impossible” article and to Roy Pea’s concerns about requiring computing.
The reasons are instructive to current enthusiasts for coding:
1. While the overall national context clearly favors technological expertise, Big Data, and 21st century skills like programming, the history of Logo showed clearly, that schools as institutions have lot to say about how any reform is put into practice. Traditional schools adapt reforms to meet institutional needs.
2. Then and now, schools eager to teach coding , for the most part, catered to mostly white, middle- and upper-middle class students. They were and are boutique offerings.
3. Then and now, most teachers were uninvolved in teaching Logo and had little incentive or interest in doing so. Ditto for coding.
4. Then and now, Logo and coding depend upon the principle of transfer and the research supporting such confidence is lacking.
The below linked article makes some strong assumptions about “learning to code” that lead to the author’s confusion about the difference between learning to code and digital literacy. NOBODY is arguing that all students “need to learn how to build the next Dropbox.” EVERYONE is in agreement about the importance of digital literacy — but what does that mean, and how do you get there?
As I’ve pointed out several times, a great many professionals code, even those who don’t work in traditional “computing” jobs — for every professional software developer, there are four to nine (depending on how you define “code”) end-user programmers. They code not to build Dropbox, but to solve problems that are more unique and require more creative solutions than canned applications software provides. We’re not talking thousands of lines of code. We’re talking 10-20, at most 100 lines of code for a solution (as my computational engineer colleagues tell me). For many people, coding WILL be part of the digital literacy that they need.
Learning some basic coding is an effective way of developing the valued understanding of how the cloud works and how other digital technology in their world works. Applications purposefully hide the underlying technology. Coding is a way of reaching a level lower, the level at which we want students to understand. In biology, we use microscopes and do dissections to get (literally) below the surface level. That’s the point of coding. No student who dissects a fetal pig is then ready for heart surgery, and no student who learns how to download a CSV data file and do some computation over the numbers in it is then ready to build Dropbox. But both groups of hypothetical students would then have a better understanding of how their world works and how they can be effective within it.
Offering programming electives for students who want to learn Python or scripting won’t solve the underlying problem of digital illiteracy. So even if your goal is to teach all students to code, schools will first need to introduce computer-science concepts that help students learn how to stack the building blocks themselves.
They don’t need to learn how to build the next Dropbox, but they should understand how the cloud works.
“If you want to be able to use the machine to do anything, whether it’s use an existing application or actually write your own code, you have to understand what the machines can do for you, and what they can’t, even if you’re never going to write code,” Ari Gesher, engineering ambassador at Palantir Technologies, said at the event.
Really interesting point from Joanna Goode. “CS for All” should not mean “One Kind of CS that All have to take.” Her notion of “CS for Each” goes further than the multiple CS1’s that we have at Georgia Tech. Seymour Papert talked about the value of a personal relationship with a discipline, and I think that’s the direction that Joanna is steering us.
But, as all the students gain access to computer science learning, teachers are charged with the task of teaching each student based on the lived experiences, prior knowledge, and the wonders of the world that the child brings to the classroom. Developing a computer science classroom that welcomes each child requires a culturally responsive pedagogy that views diversity as a strength that should be integrated within the curriculum. Additional instructional supports for English language learners and students with disabilities should be developed and shared to support teachers in a CS for Each model.
Great interview with Sebastian Thrun. I particularly found fascinating his candid response to this important question.
That doesn’t sound like democratizing education, if only the affluent can afford the version that works.
I would be careful to say this is not democratizing it. Any alternative path is actually much more expensive. We managed to lower the cost by a factor of ten. Going to the extreme and saying it has to be absolutely free might be a bit premature. I care about making education work. Everything else being equal, I would love to do this at the lowest possible price point. Where we’ve converged is right. You don’t need a college degree anymore. I would be careful with the conclusion that this is the end of democratization. We still have the free model for students. It just doesn’t work as well — it’s just a fact.
The article posted below is a carefully-considered (not a “Rah! Rah! Let’s Code!”) and intriguing consideration of the role of coding in modern notion of literacy. I particularly liked the idea below. Is Annettee Vee right? Does knowing about coding inform your ability to think about things to code? I suspect that’s true, but it’s an empirical question. It’s much nearer transfer, and is not as much of a stretch as looking for evidence of general problem-solving skills from programming (which is very rare) or applying a computational framework for understanding the world (i.e., computational thinking).
The happy truth is, if you get the fundamentals about how computers think, and how humans can talk to them in a language the machines understand, you can imagine a project that a computer could do, and discuss it in a way that will make sense to an actual programmer. Because as programmers will tell you, the building part is often not the hardest part: It’s figuring out what to build. “Unless you can think about the ways computers can solve problems, you can’t even know how to ask the questions that need to be answered,” says Annette Vee, a University of Pittsburgh professor who studies the spread of computer science literacy.
I was at the NSF CS10K Evaluators meeting earlier this summer, and we got to talk about important research questions. Someone suggested the issue of learning progressions. How do students move from Scratch or Alice or Blockly to Java or C++? One of the evaluators, whose background is entirely in education and evaluation, asked, “Professional programmers don’t use Scratch and Alice?” We explained what professional programmers really do. “Then why are we teaching Scratch and Alice, especially if we don’t know how the transfer works?!?”
The tension between what languages are “useful” (read: “we use them today in industry”) and what languages are helpful for learning has always existed in CS Ed. I’ve recommended the blog below to several people this summer, including reading the comments from the developers who push back — “Yeah, stop with Alice and teach real languages!” I agree with the post’s author, but I see that, even in the CS10K project, the notion that we should teach what’s vocationally useful is strong.
At the NSF CS10K Evaluators meeting, I got to wondering about a different question. Most of our evaluators come from science and math education projects, where you teach the way the world is. If you have trouble teaching students that F=ma, you better just find a new way to teach it. I told the evaluators that I hope their results inform the design of future programming languages. Computer science is a science of the artificial, I explained. If you find that mutable variables are hard to understand, we can provide programming languages without them. If the syntax of curly braces on blocks is too subtle for novices to parse (as I predict from past research findings), we can fix that, too. I got confused looks. The idea that the content and the medium could be changed is not something familiar to this audience. We have to figure out how to close that loop from the evaluators to the designers, because it’s too important an opportunity to base our language design for novices on empirical results.
It is a school’s job to churn out students who will be able to walk into a job in industry on day one and work in whatever language/paradigm is flavour du jour.
WRONG! We’re here to teach children the core concepts of Computer Science. Working on that basis to produce someone with employable skills is your job. Do you expect Chemistry students to walk out of school ready to begin work in a lab? Should we stop using Scratch as a teaching language because nobody programs with it in industry? Of course not, so please stop recommending that we should be teaching using Scala/JSON/whatever is currently flavour of the month.
There are lots of claims about the benefits of introducing computing early. This article in the NYTimes (even just the quote below) considers several of them:
- Important for individual students’ future career prospects. That seems unlikely, that elementary school CS would lead to better career prospects.
- Influence countries’ economic competitiveness. There might be a stronger argument here. Elementary school is about general literacy. There is likely an economic cost to computing illiteracy.
- Technology industry’s ability to find qualified workers. By putting computing into elementary school? Does industry want to hire kids who know Scratch and Alice? As Elliot suggested, it’s mostly a video game to young kids.
- “Exposing students to coding from an early age helps to demystify an area that can be intimidating.” I strongly agree with that one. We know that kids have weird ideas about CS, and seeing any real CS has a dramatic impact (especially on under-represented groups).
- “Breaks down stereotypes of computer scientists as boring geeks.” Maybe. Not all exposure to real computing leads to breaking down stereotypes. Sometimes they’re enhanced. I think this can happen, but we have to be careful to make it work.
- “Programming is highly creative.” True.
- “Studying it can help to develop problem-solving abilities.” False.
- “Equip students for a world transformed by technology.” Maybe. Does teaching kids about technology when they’re 8 prepare them for entering the workforce 10 years later? If computing literacy matters, that’s true. But I don’t believe that playing with Blockly in 3rd grade “equips” you with much. Most technology doesn’t look like Blockly.
We do have to make our message clear, and it should be a message that’s supported by research. If the computing education policy-and-PR machine ignores the research, we’re showing more disrespect for the field of computing education research and makes it even harder to establish reforms.
Around the world, students from elementary school to the Ph.D. level are increasingly getting acquainted with the basics of coding, as computer programming is also known. From Singapore to Tallinn, governments, educators and advocates from the tech industry argue that it has become crucial to hold at least a basic understanding of how the devices that play such a large role in modern life actually work.
Such knowledge, the advocates say, is important not only to individual students’ future career prospects, but also for their countries’ economic competitiveness and the technology industry’s ability to find qualified workers.
Exposing students to coding from an early age helps to demystify an area that can be intimidating. It also breaks down stereotypes of computer scientists as boring geeks, supporters argue. Plus, they say, programming is highly creative: Studying it can help to develop problem-solving abilities, as well as equip students for a world transformed by technology.