Posts tagged ‘computing education’
My first thought when seeing this article was, “Well, I’m glad it’s not just CS.” (See my post about how recruiting teachers is our biggest challenge in CS10K.) And my second thought was, “WHERE are we going to get all the teachers we need, across subjects?!?” And how are we going to retain them?
Several big states have seen alarming drops in enrollment at teacher training programs. The numbers are grim among some of the nation’s largest producers of new teachers: In California, enrollment is down 53 percent over the past five years. It’s down sharply in New York and Texas as well.
In North Carolina, enrollment is down nearly 20 percent in three years.
“The erosion is steady. That’s a steady downward line on a graph. And there’s no sign that it’s being turned around,” says Bill McDiarmid, the dean of the University of North Carolina School of Education.
Why have the numbers fallen so far, so fast?
McDiarmid points to the strengthening U.S. economy and the erosion of teaching’s image as a stable career. There’s a growing sense, he says, that K-12 teachers simply have less control over their professional lives in an increasingly bitter, politicized environment.
Repeatability presumes evidence (which can be repeated). Computer scientists have not valued evidence and repeatability as much as we need to for rigor and scientific advancement — in education, too. One of my favorite papers by Michael Caspersen is his Mental models and programming aptitude ITICSE 2007 paper where he and his colleagues attempt to replicate the results of the famous and controversial Dehnadi and Bornat paper (see here). Michael and his colleagues are unable to replicate the result, and they propose a research method for understanding the differences. That’s good science — attempting to replicate another’s result, and then developing the next steps to understand the differences.
Science advances faster when we can build on existing results, and when new ideas can easily be measured against the state of the art. This is exceedingly difficult in an environment that does not reward the production of reusable software artifacts. Our goal is to get to the point where any published idea that has been evaluated, measured, or benchmarked is accompanied by the artifact that embodies it. Just as formal results are increasingly expected to come with mechanized proofs, empirical results should come with code.
If a paper makes, or implies, claims that require software, those claims must be backed up.
The comments from students in the article below from Duke are just like the ones I hear from my students when I ask them how our introductory class is going. “Way better than I expected” and “I thought it would be all geeky” and “I can see using this!” You’d think with all the press about computing education these days that we would wouldn’t still have to explain all of this, but yeah, we do.
“I thought I would be surrounded by tech geeks who sat alone at their computers all day,” Walker said. “But I came to realize that computer science lets you do things that are applicable to all sorts of fields.”
Now she’s using her new computational savvy to expand a nonprofit she founded in high school to raise money for an elephant sanctuary in Thailand.
“You wouldn’t think that running a nonprofit requires a lot of technical skills, but it does,” she said. “You get a problem and you think, ‘I could solve this on paper and it would take me 25 hours, or I can write one line of code and all of a sudden there’s my answer.’ The efficiency of it is super cool.”
The article linked below makes the argument that then-Governor Ronald Reagan changed perception higher education in the United States when he said on February 28, 1967 that the purpose of higher education was jobs, not “intellectual curiosity.” The author presents evidence that date marks a turning point in how Americans thought about higher education.
Most of CS education came after that date, and the focus in CS Education has always been jobs and meeting industry needs. Could CS Education been different if it had started before that date? Might we have had a CS education that was more like a liberal education? This is an issue for me since I teach mostly liberal arts students, and I believe that computing education is important for giving people powerful new tools for expression and thought. I wonder if the focus on tech jobs is why it’s been hard to establish computing requirements in universities (as I argued in this Blog@CACM post). If the purpose of computing education in post-Reagan higher education is about jobs, not about enhancing people’s lives, and most higher-education students aren’t going to become programmers, then it doesn’t make sense to teach everyone programming.
The Chronicle of Higher Education ran a similar piece on research (see post here). Research today is about “grand challenges,” not about Reagan’s “intellectual curiosity.” It’s structured, and it’s focused. The Chronicle piece argues that some of these structured and focused efforts at the Gates Foundation were more successful at basic research than they were at achieving the project goals.
“If a university is not a place where intellectual curiosity is to be encouraged, and subsidized,” the editors wrote, “then it is nothing.”
The Times was giving voice to the ideal of liberal education, in which college is a vehicle for intellectual development, for cultivating a flexible mind, and, no matter the focus of study, for fostering a broad set of knowledge and skills whose value is not always immediately apparent.
Reagan was staking out a competing vision. Learning for learning’s sake might be nice, but the rest of us shouldn’t have to pay for it. A higher education should prepare students for jobs.
I buy Chris Granger’s argument here, that coding is not nearly as important as modeling systems. The problem is that models need a representation — we need a language for our models. The point is modeling, but I don’t think we can have modeling without coding. As Michael Mateas said, there will always be friction (see post).
We build mental models of everything – from how to tie our shoes to the way macro-economic systems work. With these, we make decisions, predictions, and understand our experiences. If we want computers to be able to compute for us, then we have to accurately extract these models from our heads and record them. Writing Python isn’t the fundamental skill we need to teach people. Modeling systems is.
Back at the NCWIT meeting last May, we in ECEP (Expanding Computing Education Pathways Alliance) started promoting a four step process for starting to improve computing education in your state (see blog post here):
- Find a Leader(s)
- Figure out where you are and how you change
- Gather your allies
- Get initial funding.
Part of Step 2 includes writing a Landscape Report. Does your state count CS towards high school graduation? As what? Who decides? Who can teach CS? Is there a CS curriculum? Do you have a Pathway? Do you have a certificate or endorsement to teach CS in your state? There are several of these available at the CSTA website, such as one from South Carolina and another on Maryland.
ECEP now has a page with resources for gathering data for a landscape report — see below.
Where is your state now? The resources linked below can help you quickly find state-level data about the status of computer science education in your state. These are good starting points for putting together a landscape report that answers common questions on CS education in your state.
Sorting Is Boring: Computing Education Needs to Join the Real World, like MediaComp and worked examples
Agree that we get it backwards in computing education. We ought to do more with worked examples (a form of “word problems”) — see the argument here. The point of Media Computation has always been to focus on relevance — what the students think that a computer is good for, not what the CS teacher thinks is interesting (see that argument here).
There are people who love math for math’s sake and devote themselves to proving 1 + 1 = 2. There are more people, however, who enjoy using math to prescribe medication and build skyscrapers. In elementary school, we use word problems to show why it’s useful to add fractions (ever want to split that blueberry pie?) or find the perimeter of a square. We wait until college, when math majors choose to devote four years towards pure math, to finally set aside the word problems and focus on theory. We do so because math is a valuable skill that is used in so many different professions and contexts, and we don’t want kids to give up on math because they don’t think it’s useful.
So, why does computer science start with theory and end with word problems?