Posts tagged ‘computing education’
Nick Falkner has been using his blog in a series of posts to address a question that I’ve wondered about here: Why does research influence so little practice (see post here) and policy (see post here)? Nick is taking a novel approach — he’s using the three values of Ancient Greece, brought together as a trinity through Socrates and Plato: beauty, goodness and truth. He’s exploring how we can use these to define high-quality teaching. It’s an interesting series and approach which I recommend.
I used to say that it was stunning how contemporary education seems to be slow in moving in directions first suggested by Dewey a hundred years ago, then I discovered that Rousseau had said it 150 years before that. Now I find that Quntilian wrote things such as this nearly 2,000 years ago. And Marcus Aurelius, among other stoics, made much of approaches to thinking that, somehow, were put to one side as we industrialised education much as we had industrialised everything else.
This year I have accepted that we have had 2,000 years of thinking (and as much evidence when we are bold enough to experiment) and yet we just have not seen enough change. Dewey’s critique of the University is still valid. Rousseau’s lament on attaining true mastery of knowledge stands. Quintilian’s distrust of mere imitation would not be quieted when looking at much of repetitive modern examination practice.
What stops us from changing? We have more than enough evidence of discussion and thought, from some of the greatest philosophers we have seen. When we start looking at education, in varying forms, we wander across Plato, Hypatia, Hegel, Kant, Nietzsche, in addition to all of those I have already mentioned. But evidence, as it stands, does not appear to be enough, especially in the face of personal perception of achievement, contribution and outcomes, whether supported by facts or not.
Source: A Year of Beauty | Nick Falkner
In June 2014, a workshop was held to initiate the process of exploring novel solutions in order to discuss how the community can move forward in creating a larger, a more diverse and a more able pool of computing specialists.
The report is available here. I was there, and the report does a good job of reporting on the discussion. It’s less about computing for everyone and more about making the computer scientists we have in undergraduate better — a particular challenge given the tsunami of enrollments these days.
I find the history of both computer science and education fascinating, so this keynote by Audrey Watters is particularly interesting for me because it’s on both. The most often highlighted line in the article is this one:
Education technology is, despite many of our hopes for something else, for something truly transformational, often a tool designed to meet administrative goals.
Audrey shows how educational technology has been used to mechanize our theoretical understanding of what’s the best kind of education.
Now some of these strengths of tutors may be supposition or stereotype. Nonetheless, the case for tutoring was greatly reinforced by education psychologist Benjamin Bloom who, in 1984, published his article “The Two Sigma Problem” that found that “the average student under tutoring was about 2 standard deviations above the average of the control class,” a conventional classroom with one teacher and 30 students. Tutoring is, Bloom argued, “the best learning conditions we can devise.”But here’s the challenge that Bloom identified: one-to-one tutoring is “too costly for most societies to bear on a large scale.” It might work for the elite, but one tutor for every student simply won’t work for public education. Enter the computer — and a rekindling of interesting in building “robot tutors.”
But as she points out, what we end up losing when we mechanize education is the part that is most important. The best part of a good educational experience is the most human part, which is the part which we cannot put into the computer. I recommend the whole article.
My most recent Blog@CACM post is on the K-12 CS Education Framework stakeholder’s meeting I attended last month in Chicago — see link here. The parts of the meeting where I learned the most were the first three talks, from Michael Lach, Heidi Schweingruber, and Michael Gilligan on mathematics and science education standards and what those efforts have to teach us in computer science. That’s what I wrote the Blog@CACM post on.
At the break, I congratulated Mike Lach on an excellent talk. I told him that I appreciated his message that we have to go slow. The CS education effort is the first attempt in decades to change the American Education Canon — what we teach everyone in US public schools. He agreed, and pointed out that the last time we changed the canon was in response to the Civil Rights Movement. I was confused. He explained that the Civil Rights Movement led to the creation of the African-American History Month. That’s the last time that something got added to all US elementary schools. He said that we should be glad that there’s not that kind of anger and violence fueling the push for CS education — but on the other hand, there’s also not that same kind of consensus about the importance of CS education.
Consider the two recent Google-Gallup poll reports. From one, we learn that parents think that computer science is about applications and Web search (see report here). In the second, we learn that parents (once they are told what computer science really is) want it for their kids, but administrators and principals are less enthusiastic (see report here). Commentators on the latter report have interpreted the result as suggesting that school leaders “underestimate demand” (see article here) and may be out of touch with what parents want.
There’s another way to read these two reports together. Parents don’t really know what CS is, and they don’t understand what they’re trading off when they say that want CS education. They want their kids to know CS, but at what cost? School leaders have to deal with implementation issues, and they don’t see enough demand for computing education to give it a slice of their meager budgets.
Computing education is being discussed today because of the technology industry. We would not be talking about CS in K-12 without technology industry needs. It’s the NYC tech industry who pushed for the initiative there (see their open letter). It’s the tech industry funding Code.org (see funders here). That’s not necessarily a bad thing to have the tech industry funding the effort to put computer science in schools, but it is a different thing than having a national consensus about changing public school education to include computer science. What I hear Mike Lach and others in mathematics and science education saying is that we need to build consensus if we want the implementation of CS education in schools to succeed.
Valerie Barr wrote a recent blog post about the state of the labor pool for STEM workers, especially in computing. I particularly liked her point about the need to provide learning opportunities to bring women back who have left the tech industry. Caroline Simard’s report on the needs of female mid-level tech managers (see blog post here) is what got me thinking about ebooks originally. Caroline’s female mid-level tech managers needed to learn about new technologies, while still balancing a demanding job and more family responsibilities than their male counterparts. That’s where I saw a need for something like our ebooks, to provide computing learning opportunities that fit into busy lives (see ebook post). I see Valerie calling for something similar — we need more pathways to learn about computing for adults (see blog post here), and those pathways might help us to broaden participation in computing.
It is true that the industry changes quickly in some ways, with new tools, new approaches, and new languages. But there is a rich pool of potential employees who are being completely overlooked. The many women who have left tech positions could be brought back in and given training to bring them up to speed on the newest languages and development practices. But this is a reasonable approach only if, at the same time, the tech industry makes a commitment to improving climate. There is no point in bringing back people who left tech if they are simply going to want to leave again in another 5 years. In fact, I imagine that bringing back a group of tech veterans who have greater maturity and experience could do wonders to improve climate in some of the tech companies. But the companies have to commit. And they have to recognize that you can still be a cutting edge agile company even if the average age of your employees ticks up a bit.
The argument made in Wired is an interesting one, and I partially buy it. Are high school and elementary schools the right places to teach programming to everyone? Does everyone at that level need to learn to program? What are we giving up by teaching coding? Here’s one possible scenario, a negative one but a likely one: We push CS into K-12 schools, but we can’t get everywhere. The rich schools are getting it first, so we run out of money so that we get to all rich schools and no poor schools. Computing education is now making larger the difference between the rich and the poor.
So is it wrong to teach a person to code? No. I don’t deny that coding is a useful skill to have in a modern ubiquitous computing society. It can help people personalize and understand the devices and services they use on a daily basis. It’s also good news that methods for teaching kids how to code are improving and becoming more effective, or that kids can ostensibly learn on their own when left to their own devices. The problem is elevating coding to the level of a required or necessary ability. I believe that is a recipe for further technologically induced stratification. Before jumping on the everybody-must-code bandwagon, we have to look at the larger, societal effects — or else risk running headlong into an even wider inequality gap. For instance, the burden of adding coding to curricula ignores the fact that the English literacy rate in America is still abysmal: 45 million U.S. adults are “functionally illiterate” and “read below a 5th grade level,” according to data gathered by the Literacy Project Foundation. Almost half of all Americans read “so poorly that they are unable to perform simple tasks such as reading prescription drug labels.” The reading proficiency of Americans is much lower than most other developed countries, and it’s declining.
Computational literacy is important, and school age is where to develop it. Programming can be a useful medium for learning the rest of STEM, so learning programming early can support later learning.
Eventually. That is the desired end-state.
We should focus on universal computing education in higher-ed before putting CS into K-12 classrooms: The problem is that we’re nowhere near that goal now. Less than 10% of NYC schools offer any kind of computer science, and less than 10% of US high schools offer AP CS. I argue that we should require computer science in colleges and universities in the US first, and then in K-12 classrooms, so that the teacher come out of undergraduate already knowing how to program and use it in their classes. I worry that if we can’t make required computer science happen in higher ed, the costs for getting it into all of K-12 are too large — so only the rich will get it. I worry also about the kinds of arguments we make. If we can’t make universal computational literacy happen in higher ed, what right do we have to force it on all the high schools and elementary schools? “This isn’t good for us, but it’s good for you”?
The biggest challenge in growing computing education in K-12 is finding enough teachers. Programs like TEALS are stop-gap measures. We need to recruit teachers to meet the needs in NYC. Most professional development programs are under-subscribed — there are lots of empty seats. How do we convince teachers to go take extra classes in computing, especially if they’re already an established teacher in some other discipline? If we taught everyone computing in undergraduate, we’d teach all the pre-service teachers. We wouldn’t have to do extra in-service professional development. (Pre-service education is much less expensive to implement than in-service. In-service teachers get paid to attend workshops. Pre-service is funded by tuition.)
We absolutely should be doing research on how to put computing into K-12 schools. I am concerned about the costs of large scale implementation before we know what we’re doing — both in terms of making it work, and in what happens when it doesn’t.
Literacy starts with community: Situated learning is a theory which explains why people learn. Students learn to join a community of practice. They want to be like people that they admire, to adopt their values and practices. Think about computing education from a situated learning perspective. Let’s imagine that reading has just been invented. It’s a powerful literacy, and it would be great to teach it to young kids so that they can use it for their whole lives and all their years of schooling. But if we try to teach it to them before many adults are reading and writing, it comes off as inauthentic. You can imagine a child thinking, “Why should I learn to read? The only people who read are monks and professors. I don’t want to be like that.” If few people read, then few people write. There’s not even much for the children to read.
I suspect that textual literacy was first learned by adults before it became a school subject. Adults learned to read and write. They wrote books and newspapers, and used reading in their daily lives. Eventually, it became obvious that children should be taught to read.
Today, children don’t see a world of computational literacy. Children don’t see many adults writing bits of code to do something useful or something beautiful or something enlightening. You can imagine a child thinking, “Why should I learn to program? The only people who program are geeky software developers and professors. I don’t want to be like that. And even if I did want to be like them, the geeky software developers don’t use Scratch or Blockly or App Inventor.” Students today are not immersed in a world of code to explore and learn from. Most programs that are available to study are applications. Studying existing programs today is like learning to read only with legal documents or the Gutenberg Bible. Where are the McGuffy Readers of code, or the Dr Seuss of imaginative programs? Those would be expected produces from a computationally literate society. A generation of college-educated programming professionals would help to create that society.
If you want students to gain literacy, place them in a community that is literate. That’s what Seymour Papert was talking about when he described Logo as a Mathland. We need a community of adults who program if we want children to grow up seeing programming as something natural, useful, and desirable.
The importance of getting it right: I was recently at a meeting for establishing a Framework for K-12 Computer Science Education, and Michael Lach spoke (see a description of him here). He warned curriculum writers and state/district leaders to go slow, to get it right. He pointed out that if we get it wrong, administrators and principals will decide that “Computing can’t be taught to everyone. It really is just for the geeky white boys.” And we’ll lose decades towards making computing education available to everyone. (Lach’s talk was deep and insightful — I’ll say more about it in a future blog post.) We have to get it right, and it’s better to go slow than to create computing education just for the rich.
It’s an interesting and open question. Nathan Ensmenger suggests that we have no evidence that computer scientists need a lot of mathematics (math background has been correlated with success in CS classes, not in success in a CS career), but the emphasis on mathematics helped computing a male field (see discussion here). Mathematics has both been found to correlate with success in CS classes, and not correlate with success in object-oriented programming (excellent discussion of these pre-requisite skill studies in Michael Caspersen’s dissertation). It may be true that you don’t have to be good at mathematics to learn to code, but you may have to be good at mathematics to succeed in CS classes and to get along with others in a CS culture who assume a strong math background.
People who program video games probably need more math than the average web designer. But if you just want to code some stuff that appears on the Internet, you got all the math you’ll need when you completed the final level of Math Blaster. (Here’s a good overview of the math skills required for entry-level coding. The hardest thing appears to be the Pythagorean theorem.)