Posts tagged ‘computing for everyone’
I appreciate “Gas station without pumps” recent blog post on how to design service courses. I strongly agree with the emphasis on giving students skills to do useful things now. The greatest need for computing education is in the courses for non-CS majors.
It is never enough, even in a course for majors, to design the course around “they’ll need this later”. It is far better to make them want to know it now, for things that they can do now. For the Applied Circuits course, I concentrated ton the students doing design and construction in the labs, with just enough theory to do the design. This is a big contrast to the traditional circuits course, which is all theory and math which EE students will use “later”—totally useless if the students then never take another EE course.
What a wonderful name for a school! It will be interesting to see what is created at this new school.
The school’s motto? “More poems less demos.”
A start-up venture in its own right, the school has 15 students enrolled for fall, selected from a pool of 50 applications, who will not receive any formal credit, but will pay about $5,000 to spend 10 weeks tinkering, building and tweaking projects of their own design.
“People are coming from a programming background, and thinking, how do I make art with these skills? Things that are whimsical? Dreams?” said Zach Lieberman, one of the school’s four founders and instructors, who has taught at the Parsons School of Design and like his collaborators, has one foot in the technology world and another in the art world.
I answered the criticism leveled below previously — it really is the case that many people who aren’t professional programmers are going to need to learn to program as part of their other-than-software jobs. Why are programmers pushing back against people learning to code? (And there seems to be a lot of pushback going on, as this mashup suggests.) Is it a sense of “What I do is important, and if everyone can do it, it lessens the importance”? I don’t really think that they’re afraid for their jobs — it does take a lot of hours and effort to learn to code well.
The argument that it won’t “stick” (as suggested below) doesn’t work for me. Just because we don’t know now how to teach computer science to everyone doesn’t mean that we can’t learn how to teach computer science to everyone who needs it. Our lack of ability is not the same as the lack of need. We don’t teach everyone to read well and understand mathematics yet — does that mean we shouldn’t try?
But if you aren’t dreaming of becoming a programmer—and therefore planning to embark on a lengthy course of study, whether self-directed or formal—I can’t endorse learning to code. Yes, it is a creative endeavor. At its base, it’s problem-solving, and the rewards for exposing holes in your thinking and discovering elegant solutions are awesome. I really think that some programs are beautiful. But I don’t think that most who “learn to code” will end up learning anything that sticks. One common argument for promoting programming to novices is that technology’s unprecedented pervasiveness in our lives demands that we understand the nitty-gritty details. But the fact is that no matter how pervasive a technology is, we don’t need to understand how it works—our society divides its labor so that everyone can use things without going to the trouble of making them. To justify everyone learning about programming, you would need to show that most jobs will actually require this. But instead all I see are vague predictions that the growth in “IT jobs” means that we must either “program or be programmed” and that a few rich companies want more programmers—which is not terribly persuasive.
I saw the below exchange on Twitter, and thought it captured the argument well:
Computer science is mostly white or Asian and male. We have lots of data to support that. What I didn’t realize was how sub-groups within Asian-American differ markedly in their educational attainment. A new report from NYU and ETS disaggregates the data, and below is the startling graphic that Rick Adrion pointed me to.
A nice piece arguing motivating computing across the curriculum and computing for everyone. Next step: thinking about how to teach computing across the curriculum.
As British technologist, Conrad Wolfram said in a TED talk on teaching math with computers: “In the real world math isn’t necessarily done by mathematicians. It’s done by geologists, engineers, biologists, all sorts of different people.”
The same applies for computer science. Just ask Alex Tran, fellowship program manager at Code for America, a nonprofit “civic startup accelerator” that sees coding as a new form of public service. Each year, he works with more than 20 startups and fellows who build a variety of apps and online programs to improve how citizens engage and interact with their communities. So far, they’ve built tools for services like community disaster management, food stamps, virtual townhalls, student data interoperability, and even snazzy icons.
My colleagues at CAITE sent me a PDF of the whole article, since you can only get the lead paragraph at the Boston Globe site. It’s good news!
Executives from Google Inc., Microsoft Corp., and other leading firms want to require all Massachusetts public schools to teach computer science, so local tech companies don’t have to rely on foreign workers to fill future programming and engineering jobs.
Roger Schank’s comments are always insightful, often witty, and usually biting. His take on “computer education” (linked below) is typical.
This is computer education in the New York City Schools? We could teach kids to program you know. Or we could teach them to build apps. Or to create art. Or to build robots. Or to create a web site. Or to create music. The list could go on and on.
But, you know what Milo learned yesterday? How to create a hashtag.
Twitter is now part of the curriculum.
Nice piece in Smithsonian Magazine about the efforts to move computing into primary and secondary schools. And hey! That’s me they quoted! (It’s not exactly what I said, but I’ll take it.)
Schools that offer computer science often restrict enrollment to students with a penchant for math and center the coursework around an exacting computer language called Java. And students frequently follow the Advanced Placement Computer Science curriculum developed by the College Board—a useful course but not for everyone. “What the computer science community has been slow to grasp is that there are a lot of different people who are going to need to learn computer science, and they are going to learn it in a lot of different ways,” says Mark Guzdial, a professor of interactive computing at the Georgia Institute of Technology and author of the well-respected Computer Education blog, “and there are a lot of different ways people are going to use it, too. ”
This article at ComputerWorld covers more than just the C# coding workshop — it also talks about ScratchJr and Code.org. It’s a nice collection of news pieces, but I’m missing the underlying argument.
- Why C#? That’s an awfully hard language — will that dissuade some of the young kids, maybe convince them that programming is tedious?
- The argument quote below makes no sense. ”Programming early can pay off in improved thinking and decision-making skills.” Uh, no. ”Programming skills are so integral to what’s happening in our world. Name a field that doesn’t have some technology integration.” Well, sure, lots of technology everywhere, but that’s not an argument for programming.
I just don’t get the argument that they’re trying to make.
Wendy Drexler, director of online development at Brown University, said teaching programming early can pay off in improved thinking and decision-making skills. “Programming is an excellent skill to have and not just for the marketability it offers,” she said in an interview.
“Programming skills are so integral to what’s happening in our world. Name a field that doesn’t have some technology integration,” she said. As much as teaching students a specific computer program, Drexler said educators need to “teach a mindset for programming, to lay a foundation for it.”
I’m excited about this and find myself thinking, “So what should I do with this first?” LiveCode isn’t as HyperCard-like as it could be (e.g., you edit in one place, then compile into an application), and it has all of HyperCard’s limitations (e.g., object-based not object-oriented, lines are syntax). But it’s free, including all engines. I can program iOS and Android from the same HyperCard stack! I can build new kinds of programming languages and environments on top of Livecode (but who in the world would want to do something like that?!?) that could compile into apps and applications! It’s a compellingly different model for introductory computing, that sits between visual block programming and professional textual programming. Wow…
LiveCode Community is an Open Source application. This means that you can look at and edit all of the code used to run it, including the engine code. Of course, you do not have to do this, if you just want to write your app in LiveCode there is no need for you to get involved with the engine at all. You write your app using LiveCode, the English-like scripting language, and our drag and drop interface. Fast, easy, productive and powerful.
• Recommendation 1. All students should benefit from education in digital literacy, starting from an early age and mastering the basic concepts by age 12. Digital literacy education should emphasize not only skills but also the principles and practices of using them effectively and ethically.
• Recommendation 2. All students should benefit from education in informatics as an independent scientific subject, studied both for its intrinsic intellectual and educational value and for its applications to other disciplines.
• Recommendation 3. A large-scale teacher training program should urgently be started. To bootstrap the process in the short term, creative solutions should be developed involving school teachers paired with experts from academia and industry.
• Recommendation 4. The definition of informatics curricula should rely on the considerable body of existing work on the topic and the specific recommendations of the present report (section 4).
This is a nice post considering the interaction between language complexity, readability, and learnability. It could have been made stronger by including some of the empirical data. Thomas Green in his empirical research on language features didn’t just find that explicit BEGIN IF…END IF blocks were easier to read by novices, he found that they were TEN TIMES easier for novices to read. Being less succinct is not just easier for novices, it may be so much easier that it’s the difference between success and giving up.
My point is, the larger the vocabulary you have, the more succinctly ideas can be expressed, thus making them more readable, BUT only to those who have a mastery of that vocabulary and grammar.
If we made the English language smaller, and reduced the complex rules of grammar to a more much simple structure, we’d make it much easier to learn, but we’d make it harder to convey information.
My thinking on computing education has been significantly influenced by a podcast about hand-washing and financial illiteracy. I suspect that education is an ineffective strategy for achieving the goal of Computing Literacy for Everyone. I have a greater appreciation for work like Alan Kay’s on STEPS, Andy Ko’s work on tools for end-user programming, and the work on Racket.
On Hand-Washing and Financial Illiteracy
I have been listening to Freakonomics podcasts on long drives. Last month, I listened to “What do hand-washing and financial illiteracy have in common?” I listened to it again over the next few days, and started digging into the literature they cited.
At hospitals, hand-washing is far less common than our knowledge of germ theory says it ought to be. What’s most surprising is that doctors, the ones with the most education in the hospital, are the least likely to wash their hands often enough. The podcast describes how one hospital was able to improve their hand-washing rates through other behavioral methods, like shaming those who didn’t wash their hands and providing evidence that their hands were likely to be filled with bacteria. More education doesn’t necessarily lead to behavioral change.
Much more important was the segment on financial illiteracy. First, they present the work of Annamuria Lusardia who has directly measured the amazing financial illiteracy in our country. There is evidence that much of the Great Recession was caused by poor financial decisions by individuals. Less than a third of the over-50-year-old Americans that Lusardia studied could correctly answer the question, “If you put $100 in a savings account with 2% annual interest, at the end of five years you will have (a) less than $102, (b) exactly $102, or (c) more than $102?” More mathematics background did lead to more success on her questions, but she calls for a much more concerted effort in financial education. Her arguments are supported by some pretty influential officials, like Fed Reserve Chair Ben Bernanke and former Secretary of the Treasury Paul O’Neill. It makes sense: If people lack knowledge, we should teach them.
Lauren Willis strongly disagrees, and she’s got the data to back up her argument. She has a 2008 paper with the shocking title, Against Financial Literacy Education that I highly recommend. She presents evidence that financial literacy education has not worked — not that it couldn’t work, but it isn’t working. She cited several studies that showed negative effects of financial education. For example, high school students who participated in the Jump$start program become much more confident about their ability to make financial decisions, and yet made worse decisions than those students who did not participate in the program.
The problem is that financial decisions are just too complicated, and education (especially universal education) is expensive to do well (though Willis doesn’t offer an estimated cost). Educational curricula (even if tested successful) is not always implemented well. The gap between education in teen years and making decisions in your 40′s and 50′s is huge. Instead of education, we should try to prevent damage from ignorance. Willis suggests that we should create a cadre professional of financial advisors and make them available to everyone (for some “pro bono”), and that we should increase regulation of financial markets so that there are fewer riskier investments for the general public. It costs the entire society enormously when large numbers of people make poor financial decisions, and it’s even more expensive to provide enough education to prevent the cost of all that ignorance.
This was a radical idea for me. Education is not free, and sometimes it’s cheaper to prevent the damage of ignorance than correcting the ignorance.
Implications for Computing Literacy Education
I share the vision of Andy DiSessa and others of computing as a kind of literacy, and a goal of “Computing for All” where everyone has the knowledge and facility to build programs (for modeling, simulations, data analyses, etc.) for their needs. Let’s call that a goal of “Universal Computing Literacy,” and we can consider the costs of using education to reach that goal, e.g., “Universal Computing Education to achieve Universal Computing Literacy.”
The challenge of computing literacy may be even greater than the challenge of financial literacy. People know even less about computing than they do about finance. We don’t know the costs of that ignorance, but we do know that it has been difficult and expensive to provide enough education to correct that ignorance.
Computing may be even more complicated than finance. Willis talks about the myriad terms that people need to know to make good financial decisions (like “adjustable rate mortgages”), but they are at least compounds of English words! I attended a student talk this week, where terms like “D3” and “GreaseMonkey” were bandied about like they were common knowledge. We invent so much language all the time.
The problem is that education is often inefficient and ineffective. Jeremy Roschelle pointed out that education improvements rarely impact economic outputs. Greg Wilson shared a great paper with me in response to some tweets I sent about these ideas. Americans have always turned to education to solve a wide variety of ills, but surprisingly, without much evidence of efficacy. We can teach kids all about healthy eating, but we still have a lot of obesity. Smokers often know lots of details about how bad smoking is for them. Education does not guarantee a change of behavior. This doesn’t mean that education could not be made more effective and more efficient. But it might be even more expensive to fix education than to deal with ignorance.
Universal education is always going to be expensive, and some things are worth it. Text illiteracy and innumeracy are very expensive for our society. We need to address those, and we’re not doing a great job at that yet. Computing education to achieve real literacy is just not as important.
I am no longer convinced that providing computing education to everyone is going to be effective to reach the goal of making everyone computing literate, and I am quite convinced that it will be very expensive. Requiring computing education for STEM professionals at undergraduate level may still be cost-effective, because those are the professionals most likely to see the value of computing in their careers, which reduces the costs and makes the education more likely to be effective.
Barb sees a benefit in Universal Computing Education, but not to achieve Universal Computing Literacy. We need to make computing education available everywhere for broadening participation in computing. To get computing into every school, Barb argues that we have to make it required for everyone. Without the requirement, schools won’t go to the effort of including it. Without a requirement, female and URM students who might not see themselves in computing, would never even give it a chance. In response to my argument about cost, she argues that the computing education for everyone doesn’t have to be effective. We don’t have to achieve lifelong literacy for everyone. Merely, it has to give everyone exposure, to give everyone the opportunity to discover a love for computing. Those that find that love will educate themselves and/or will pursue more educational opportunities later. I heard Mike Eisenberg give a talk once many years ago, where he said something that still sticks with me: that the point of school is to give everyone the opportunity to find out what they’re passionate about. For that reason, we have to give everyone the chance to discover computing, and requiring it may be the only way to reach that goal.
It’s always possible that we’ll figure out to educate more effectively at lower cost. For example, integrating computing literacy education into mathematics and science classes may be cheaper — students will be using it in context, teachers in STEM are better prepared to learn and teach computing, and we may improve mathematics and science teaching along the way. My argument about being too expensive is based on what we know now how to do. Economic arguments are often changed by improved science (see Malthus).
As Willis suggests for financial literacy, we in computing literacy are probably going to be more successful for less cost by focusing on the demand side of the equation. We need to make computing easier, and make tools and languages that are more accessible, as Alan Kay, Andy Ko, and the Racket folks are doing. We have to figure out how to change computing so that it’s possible to learn and use it over an entire career, without a PhD in Computer Science. We have to figure out how to get these tools into use so that students see use of such tools as authentic and not a “toy.”
“Computing for All” is an important goal. “Access to Computing Education for All” is critical. “Universal Computing Education to achieve Universal Computing Literacy” is likely to be ineffective and will be very expensive. On the other hand, requiring computing education may be the only way to broaden participation in computing.
Interesting interview with the director of the Code.org video. The comments are intriguing and reflect the diverse and contrary perspectives on these issues: “There are nowhere near 1 Million unfilled software engineer jobs in the United States. Becoming a software engineer is a choice that is not a sideline choice, it becomes your whole life. While learning some coding may be a help for students, the premise of Code Stars is deeply flawed.” (Thanks to Mark Miller for the tip!)
Michelle Fields talks to filmmaker Lesley Chilcott about her film Code Stars. There is a dearth of computer engineers in America, and Chilcott is trying to reverse this trend through documentary film. Hear how many computer engineers started their lucrative careers at a young age with very simple programs, and how you can too.
It sounds like you can only use Lua for encyclopedia-like functions (e.g., handling citations), but what a wonderful step toward having a tool for building simulations and data processing & visualizations into the encyclopedia. It’s a nice new motivation for “Computing for Everyone.”
It began as the encyclopedia anyone can edit. And now it’s also the encyclopedia anyone can program.
As of this weekend, anyone on Earth can use Lua — a 20-year-old programming language already championed by the likes of Angry Birds and World of Warcraft — to build material on Wikipedia and its many sister sites, such as Wikiquote and Wiktionary. Wikipedia has long offered simple tools that let tens of thousands of volunteer editors reuse little bits of text across its encyclopedia pages, but this is something different.
“We wanted to provide editors with a real programming language,” says Rob Lanphier, the director of platform engineering at the Wikimedia Foundation, the not-for-profit that oversees the online encyclopedia. “This will make things easier for editors, but it will also be significantly faster.”