Posts tagged ‘computing for everyone’
The first part of what Berners-Lee says below makes sense to me. Students don’t really see computing until there’s breakdown. Interfaces carefully hide away the computing underneath. But it does not really make sense for children to check log files and re-write scripts when something breaks with Twitter or Facebook. I think he may be confounding two reasons for knowing about computing education: (a) to understand your world (“I think I have a clue why this broke, or even why it was working in the first place”) versus (b) to be able to construct in that world — to be a producer, as well as a consumer. Both are good reasons for learning about computing, but it’s not always the case that you can construct around every bug that comes up, especially with large social networks.
“A quarter of the planet uses the web,” he cautioned, “then within this quarter of people who may tweet and use social networks and so on, there’s a fairly small set of people who code. But when you look at those people, they have the ability to make a computer do whatever they can imagine.
“I think a lot of folks growing up today, when they open a computer, it’s like opening a refrigerator. It’s an appliance, it’s white goods, there’s some stuff in it, if it needs more in it you stock it, you put more music in it, you play it. And If it breaks it’s: ‘Mom, can I have a new one’.”
“It’s not actually ‘what went wrong there? Let me go in there, lets look at the log files, what crashed, why didn’t it have the right permissions, lets see if we can re-write that script so that it works in the new version of the operating system.’”
I mentioned a while back that the Vint Cerf had expressed support for CS becoming part of the English Baccalaureate degree. It’s been announced that CS does now count, but as a science. Pretty much the same decision we made here in Georgia.
The decision by Education Secretary Michael Gove will mean that computing will count as a science in the English Baccalaureate for secondary school league tables from January 2014 – alongside physics, chemistry, biology and pupils taking double science.
The Department for Education says the change is intended to reflect the “importance of computer science to both education and the economy”.
Code.org is aimed at making programming cool, and they’re going to do it with a documentary:
Code.org’s initial effort will be a short film, currently being edited, that will feature various luminaries from the technology industry talking about how exciting and accessible programming is. Two of the most famous programmers and entrepreneurs in history — Mark Zuckerberg, the chief executive of Facebook, and Bill Gates, the chairman and co-founder of Microsoft – were among the people interviewed for the film, according to a person with knowledge of the project who wasn’t authorized to discuss details about it.
Lesley Chilcott, a producer of the documentaries “Waiting for ‘Superman’” and “An Inconvenient Truth,” is making the film.
A recommended video from Mitch Resnick, who leads the Lifelong Kindergarten group at the MIT Media Lab, the home of Scratch.
Most people view computer coding as a narrow technical skill. Not Mitch Resnick. He argues that the ability to code, like the ability to read and write, is becoming essential for full participation in today’s society. And he demonstrates how Scratch programming software from the MIT Media Lab makes coding accessible and appealing to everyone — from elementary-school children to his 83-year-old mom.
As director of the Lifelong Kindergarten group at the MIT Media Lab, Mitch Resnick designs new technologies that, in the spirit of the blocks and finger paint of kindergarten, engage people of all ages in creative learning experiences.
A nice piece describing reasons to learn code. What makes this one particularly noteworthy is how it talks about art, architecture, and aesthetic — learning to code as a way of connecting to our world.
Both aesthetic and rooted in physics, sturdy yet beautiful, containing both purpose and artistic intent. Code is now a core part of the architecture of the world we live in.
It both powers and shapes finance, business, and entertainment; it is embedded in our homes and in our pockets. And so “architecture” feels like the appropriate metaphor for the skills needed to master it: for architecture both shapes its inhabitants and is shaped by them.
Computer programs can make people more efficient in day to day life
It can’t really exist without people inside it. And we can’t separate code from people; from the people who write it; from the people who are shaped by it.
It’s an interesting argument in favor of computational literacy, computing education for everyone. It’s a pretty accurate description of what happens at the first undergraduate classes.
Imagine, if you will, a world where Americans don’t teach their children math in elementary school. Imagine that children no longer learn addition in first grade, subtraction in second or multiplication and division in third and fourth. Imagine instead that children make it all the way through high school without having any formal presentation of mathematical concepts. Now imagine that a student is observant enough to realize that adults who have a firm grasp on mathematics have much better problem-solving life skills and financial opportunities than adults who don’t. If that student is curious enough to enroll in an undergraduate math class, imagine how frustrating it would be to have the whole of arithmetic, algebra and statistics thrown at you in your very first term. Wouldn’t it feel overwhelming? Wouldn’t you be discouraged… especially if you noticed that several people in the class already seemed to understand the stuff fluently? Wouldn’t it be difficult to perceive the subject as one where you have talent?
This hypothetical may seem ridiculous, but the truth is that a similar situation is being played out in America today with the subject of computer science. For many, computer science isn’t introduced at a k-12 level, so their first exposure comes in an undergraduate classroom, where they’re forced to absorb all of the basic building blocks of computational thinking at lightning speed before they can begin to fathom the concept of programming, design or engineering. To add further blows, a handful of students (often boys) will actually have skills in these areas, making the newcomers feel deficient, awkward and behind.
I mentioned in a previous blog post the nice summary article that Audrey Watters wrote (linked below) about Learning to Code trends in educational technology in 2012, when I critiqued Jeff Atwood’s position on not learning to code.
Audrey does an excellent job of describing the big trends in learning to code this last year, from CodeAcademy to Bret Victor and Khan Academy and MOOCs. But the part that I liked the best was where she identified the problem that cool technology and badges won’t solve: culture and pedagogy.
Two organizations — Black Girls Code and CodeNow — did hold successful Kickstarter campaigns this year to help “change the ratio” and give young kids of color and young girls opportunities to learn programming. And the Irish non-profit CoderDojo also ventured state-side in 2012, helping expand afterschool opportunities for kids interested in hacking. The Maker Movement another key ed-tech trend this year is also opening doors for folks to play and experiment with technologies.
And yet, despite all the hype and hullaballoo from online learning startups and their marketing campaigns that now “everyone can learn to code,” its clear there are still plenty of problems with the culture and the pedagogy surrounding computer science education.
We still do need new programming languages whose design is informed by how humans work and learn. We still do need new learning technologies that can help us provide the right learning opportunities for individual student’s needs and can provide access to those who might not otherwise get the opportunity. But those needs are swamped by culture and pedagogy.
What do I mean by culture and pedagogy?
Culture: Betsy diSalvo’s work on Glitch is a great example of considering culture in computing education. I’ve written about her work before — that she engaged a couple dozen African-American teen men in computing, by hiring them to be video game testers, and the majority of those students went on to post-secondary education in computing. I’ve talked with Betsy several times about how and why that worked. The number one reason why it worked: Betsy spent the time to understand the African-American teen men’s values, their culture, what they thought was important. She engaged in an iterative design process with groups of teen men to figure out what would most appeal to them, how she could reframe computing into something that they would engage with. Betsy taught coding — but in a different way, in a different context, with different values, where the way, context, and values were specifically tuned to her audience. Is it worth that effort? Yeah, because it’s about making a computing that appeals to these other audiences.
Pedagogy: A lot of my work these days is about pedagogy. I use peer instruction in my classrooms, and try out worked examples in various ways. In our research, we use subgoal labels to improve our instructional materials. These things really work.
Let me give you an example with graphs that weren’t in Lauren Margelieux’s paper, but are in the talk slides that she made for me. As you may recall, we had two sets of instructional materials: A set of nice videos and text descriptions that Barbara Ericson built, and a similar set with subgoal labels inserted. We found that the subgoal labelled instruction led to better performance (faster and more correct) immediately after instruction, more retention (better performance a week later), and better performance on a transfer task (got more done on a new app that the students had never seen before). But I hadn’t shown you before just how enormous was the gap between the subgoal labelled group and the conventional group on the transfer task.
Part of the transfer task involved defining a variable in App Inventor — don’t just grab a component, but define a variable to represent that component. The subgoal label group did that more often. ALOT more often.
Lauren also noticed that the conventional group tended to “thrash,” to pull out more blocks in App Inventor than they actually needed. The correlation between number of blocks drawn out and correctness was r = -.349 — you are less likely to be correct (by a large amount) if you pull out extra blocks. Here’s the graph of number of blocks pulled out by each group.
These aren’t small differences! These are huge differences from a surprisingly small difference between the instructional materials. Improving our pedagogy could have a huge impact.
I agree with Audrey: Culture and pedagogy are two of the bigger issues in learning to code.
Audrey Watters’ excellent post on Learning to Code in 2012 pointed me to Jeff Atwood’s piece (linked at the bottom). I want everyone to learn code, so I am in direct contradiction to his position, “Please don’t learn to Code.” Jeff and I disagree primarily on two points, both of which are issues of definition:
- Most people who write code are not trying to create code solutions. Most people who write code are trying to find solutions or create non-code solutions. By “most people,” I do mean quantitatively and I do mean all people, not just professional programmers. We know that there are many more people who write code to accomplish some task, as compared to professional programmers. When I visited the NASA Goddard Visualization Lab last month, I met the director Horace Mitchell, who told me that everyone there writes code, whether they are computer scientists or not. They write code in order to explore their data and create effects that they couldn’t given existing visualization systems. They are trying to create great visualizations, not great code. They simply throw the code away afterward. This is a critical difference between what Jeff is describing and what I hope to see. We agree that the goal is a solution. I want everyone to have the possibility of using code to create their solution, not to create code as the solution.
- Most people who program are not and don’t want to be software developers. Most of the people that I teach (non-CS majors, high school teachers) have zero interest in becoming programmers. They don’t want to be “addicted to code.” They don’t want a career that requires them to code. They want to use coding for their own ends. Brian Dorn’s graphic designers are a great case in point. Over 80% of those who answered his surveys said “No, I am not a programmer,” but everyone who answered his surveys wrote programs of 100 lines or more. Not everyone who “programs” wants to be known as a “programmer.”
The problem is that we in computer science often have blinders on when it comes to computing — we only see people who relate to code and programming as we do, as people in our peer group and community do. There are many people who code because of what it lets them do, not because they want the resulting code.
“You should be learning to write as little code as possible. Ideally none.” And people who want to do interesting, novel things with computers should just wait until a software developer gets around to understanding what they want and coding it for them? I could not disagree more. That’s like saying that the problem with translating the Bible is that it made all that knowledge accessible to lay people, when they should have just waited for the Church to explain it to them. ”Please don’t learn to code” can be interpreted as “Please leave the power of computing to us, and we’ll let you know when we’ll make some available to you.”
It assumes that more code in the world is an inherently desirable thing. In my thirty year career as a programmer, I have found this … not to be the case. Should you learn to write code? No, I can’t get behind that. You should be learning to write as little code as possible. Ideally none.
It assumes that coding is the goal. Software developers tend to be software addicts who think their job is to write code. But it’s not. Their job is to solve problems. Don’t celebrate the creation of code, celebrate the creation of solutions. We have way too many coders addicted to doing just one more line of code already.
Will.i.am of Black Eyed Peas makes an impassioned plea for kids to learn to write code.
STEM education has become one of his great passions, to such an extent that hes said that he wants to do a college course himself next year. He wants to learn how to write code. “We all rely on technology to communicate, to survive, to do our banking, to shop, to get informed, but none of us knows how to read and write the code.” Its like the middle ages, he says, when only the clergy could read and write.So, youre going to do a course? “Yeah! I want to learn to read and write code! I want to be one of the clergy. I want to be one of the folks who contribute. Everyone should want to be.” I did an introductory course on coding, I tell him. And it made my brain ache. “I want brain ache!”
The process that started with the Royal Society’s report on the state of computer science education in UK schools has now resulted in a new draft program of study, available for comment. It’s interesting to contrast with CS:Principles and Exploring Computer Science as two US curricula aiming to, similarly, give students the computing knowledge and skills that they need for modern society.
In his speech to BETT on 11 January, the Secretary of State for Education Michael Gove responded to the call from industry by starting a consultation on withdrawing the existing National Curriculum Programme of Study for Information and Communication Technology (ICT) from September this year. The intention was to allow the development of innovative, exciting and rigorous new ICT courses in advance of the launch of the new National Curriculum in 2014. Following consultation, the government confirmed on 11 June that it was their intention to proceed and that ICT would be a compulsory subject up to Key Stage 4 with its own Programme of Study.
In late August 2012 the DfE invited BCS and the Royal Academy of Engineering to coordinate the drafting of a new Programme of Study for ICT. In discussion with DfE, BCS and the Royal Academy of Engineering decided to follow the following process
- Form a small working party to write a first draft.
- Publish this first draft in late October, and seek broad comment and feedback.
- Revise the draft during November and December in the light of that feedback.
- The DfE will publish the revised draft, along with the Programmes of Study for other subjects, for full public consultation in the Spring of 2013.
The working party included several school teachers, together with representation from Naace, CAS, ITTE, Vital, and NextGen Skills. The group’s membership appears below. It met for the first time on 19 September, and completed the draft by 22 October as required by DfE.
We are now at Step 2 of this process. The current draft should be regarded as a first step, not as a finished product. It has not received widespread scrutiny, and it is not endorsed by DfE. It is simply a concrete starting point for wider public debate.
Cool! Glad to see the discussion! Mike Hewner’s dissertation really supports the argument for requiring computer science of everyone and making it enjoyable, as a strategy to get people to explore computer science (the ACM/WGBH study suggests that few students will explore academic CS unless it’s put in their path) which creates the opportunity for students deciding to pursue more computer science.
Why doesn’t UC Berkeley require — or at least strongly encourage — nonmajors to take computer science? For a few reasons, none of which are particularly compelling. The computer science department would need to accommodate many more students. And the department would likely need to create a suite of introductory courses, rather than simply dramatically expanding its existing course for nonmajors, according to Garcia. This would be a challenge, Garcia says, but it’d be a worthwhile one.
Some people will no doubt charge that requiring a computing course would undermine the ideal of a liberal arts education by making the Letters and Science curriculum too focused on vocational preparation rather than intellectual exploration. But the terrible job market has already put the concept of a pure liberal arts education under scrutiny. If the liberal arts are to retain their credibility, they must be adapted to reflect changing economic realities. Not to mention the fact that, as Garcia and others have argued, computational literacy is a fundamental skill in the 21st century — it has nearly as strong a claim to a place in the liberal arts curriculum as reading or writing.
Thanks to Mark Miller for sending this — what a great idea! I know that others have a BA in CS, but I particularly like the argument that they’re making, that this is about incorporating computing into other disciplines. And I saw on Leysia Palen’s Facebook posting that the new degree was approved.
The proposed program would offer a bachelor of arts in computer science to suit students who, for example, are majoring in geography but want the skill set to develop map databases or who are studying speech, language and hearing and could benefit from building voice-recognition software.
If approved, arts and sciences students would be able to double-major to combine a liberal arts degree program with the BA degree in computer science. The computer science curriculum would still be taught by engineering faculty members.
Bravo to Dr. Chuck Severance for sharing the maps he created of where his MOOC students are coming from! These are fascinating data, and the result is particularly useful since there’s so little data to be had on MOOCs. It’s hard to be sure from just eye-balling the data, but my sense is:
- This is mostly a developed-world phenomenon.
- A small percentage of attendees come from Africa.
I would really love to know gender and ethnicity/race demographics on who is taking and who is completing MOOCs. Here’s a prediction for the technology-heavy Udacity courses: 80% White or Asian, 90% male. Anybody know where we can get the data to test this hypothesis?
As part of my Internet History, Technology, and Security course on Coursera I did a demographics survey and received 4701 responses from my students.
I will publish all the data in a recorded lecture summarizing the class, but I wanted to give a sneak preview of some of the geographic data results because the Python code to retrieve the data was fun to build. Click on each image to play with a zoomable map of the visualized data in a new window. At the end of the post, I describe how the data was gathered, processed and visualized.
There’s so much in his essay that I strongly agree with. He’s absolutely right that we teach programming systems that have been designed for purposes other than learnability, and we need to build new ones that have a different emphasis. He uses HyperTalk as an example of a more readable, better designed programming language for learning, which I think is spot-on. His video examples are beautiful and brilliant. I love his list of characteristics that we must require in a good programming language for learners.
I see a border to Bret’s ideas. There are things that we want to teach about computing where his methods won’t help us. I recognize that this is just an essay, and maybe Bret’s vision does cover these additional learning objectives, too. The learning objectives I’m struggling with are not made easier with his visual approach.
Let me give two examples — one as a teacher, and the other as a researcher.
As a teacher: I’m currently teaching a graduate course on prototyping interactive systems. My students have all had at least one course in computer programming, but it might have been a long time ago. They’re mostly novices. I’m teaching them how to create high-fidelity prototypes — quite literally, programming artifacts to think with. The major project of the course is building a chat system.
- The first assignment involved implementing the GUI (in Jython with Swing). The tough part was not the visual part, laying out the GUI. The tough part was linking the widgets to the behaviors, i.e., the callbacks, the MVC part. It’s not visible, and it’s hard to imagine making visible the process of dealing with whatever-input-the-user-might-provide and connecting it to some part of your code which gets executed non-linearly. (“This handler here, then later, that handler over there.”) My students struggled with understanding and debugging the connections between user events (which occur sometime in the future) with code that they’re writing now.
- They’re working on the second assignment now: Connecting the GUI to the Server. You can’t see the network, and you certainly can’t see all the things that can go wrong in a network connection. But you have to program for it.
As a researcher: I’ve written before about the measures that we have that show how badly we do at computing education, and about how important it is to make progress on those measures: like the rainfall problem, and what an IP address is and whether it’s okay to have Wikipedia record yours. What makes the rainfall problem hard is not just the logic of it, but not knowing what the input might be. It’s the invisible future.
I disagree with a claim that Bret makes (quoted below), that the programmer doesn’t have to understand the machine. The programmer does have to understand the notional machine (maybe not the silicon one), and that’s critical to really understanding computing. A program is a specification of future behavior of some notional machine in response to indeterminate input. We can make it possible to see all the programs execution, only if we limit the scope of what it is to be a program. To really understand programming, you have to imagine the future.
It’s possible for people to learn things which are invisible. Quantum mechanics, theology, and the plains of Mordor (pre-Jackson) are all examples of people learning about the invisible. It’s hard to do. One way we teach that is with forms of cognitive apprenticeship: modeling, coaching, reflection, and eliciting articulation.
Bret is absolutely right that we need to think about designing programming languages to be learnable, and he points out a great set of characteristics that help us get there. I don’t think his set gets us all the way to where we need to be, but it would get us much further than we are now. I’d love to have his systems, then lay teaching approaches like cognitive apprenticeship on top of them.
Thus, the goals of a programming system should be:
to support and encourage powerful ways of thinking
to enable programmers to see and understand the execution of their programs
Alan Perlis wrote, “To understand a program, you must become both the machine and the program.” This view is a mistake, and it is this widespread and virulent mistake that keeps programming a difficult and obscure art. A person is not a machine, and should not be forced to think like one.
I’ve been enjoying the Community pages for the UK Computing at Schools effort — so much going on there! I just saw a link from Michael Kölling referencing the blog linked below — an aggregator of UK computing education blogs. Really interesting set!
This is a blog aggregator collecting together the latest content from various blogs relating to computing in schools in the UK. The aggregator is maintained by Neil Brown (@twistedsq), who decides which blogs to include. Roughly, the inclusion criteria are that the blog should:
be related to computing (not just ICT or the use of technology) at school, with a UK focus,
be at least semi-regularly updated (a new post at least every 90 days),
have several posts already,
feature original content (not just links or quotes).