Archive for September, 2009
Uh-Oh! Enforced Open Textbooks
I find this new bill pretty scary:Durbin Open Textbook Bill Finally Introduced!. I don’t have anything against Open Textbooks. The ones I’ve seen so-far haven’t been very innovative, and I do wonder if it’s a viable model. People deserve to be paid for their effort, and higher quality effort should result in greater pay. That’s the economic force that encourages better materials. Part of what this bill does is fund development of Open Textbooks, and I think it’s a great thing to develop that model.
The scary part of this bill is the enforcement that everything (“curricula and textbooks”) funded by the National Science Foundation must be open source:
In General- Notwithstanding any other provision of law, educational materials such as curricula and textbooks created through grants distributed by Federal agencies, including the National Science Foundation, for use in elementary, secondary, or postsecondary courses shall be licensed under an open license.
I suspect that most science education innovations in the United States get some part of their funding from NSF. I am quite confident that most of those innovations in computing education are. Alice, Media Computation, DrScheme — all of them had NSF funding. Under this bill, none of those could be published commercially.
By selling books through a publisher, we (authors, but also the teaching community) get a dissemination mechanism and a support mechanism. I’ve talked to teachers (including university faculty) who won’t use a book unless it’s offered by a publisher — they want to know that it won’t go out of print while they still need it, and that it will be updated as long as there are customers.
As an author, I’m glad that Pearson has a sales staff that goes out and tells people about my books. I want those people to get paid. I don’t know if Pearson can still make money if a percentage of their market decides to simply deal with the PDF and Pearson can only sell to those who don’t trust the author’s website or who want hardcopy.
Under this bill, a commercial publisher can’t put good, well-assessed curricula in a textbook and then disseminate it via a salesperson and bookstore distribution network. How does one get high-quality, sustainable change if you can’t ever pay authors, salespeople, bookstores, and publishers?
Operation Reboot: Georgia Tech Looks To Shift Unemployed IT Pros into Teaching Careers — THE Journal
The AP picked up a story about Barbara’s new Operation Reboot project, and it’s popping up in lots of places now: Georgia Tech Looks To Shift Unemployed IT Pros into Teaching Careers — THE Journal.
The particularly brilliant part of Barbara’s plan, which isn’t getting picked up in the stories very well, is that she’s putting the unemployed IT workers into the classroom as soon as possible to team-teach with a business teacher who wants to learn how to be a computing teacher. Both team teachers want to become computing teachers: One knows IT and wants to learn how to be a teacher, and the other is a teacher who wants to learn IT. The result isn’t just 30 new high school CS teachers. It’s 60 well-trained teachers. Very cool.
What if computer science was required?
I’m at the ACM Education Council meeting in Vancouver this weekend. One of the topics of conversation is whether the ACM should push to make computer science a required subject in US high schools. The argument is that computing education will only be taken seriously (e.g., receive funding, get teacher certifications and standard curricula, get treated well by No Child Left Behind) if it was a required subject, like other sciences and mathematics.
I finally did read Lockhart’s Lament that Ian Bogost talked about in his recent blog post. Lockhart’s essay starts out with a painter and a musician having horrible nightmare’s about their subjects becoming “required” and how that meant draining all life out of the subject until it was an easily taught and easily measured husk of a subject. Lockhart’s point is that this is exactly what has happened with mathematics. I found his essay interesting, but ultimately, defeatist and even narcissistic. Lockhart complains about how badly his beloved mathematics is treated. Yet he offers no way out, no solutions for balancing the demands of compulsory education at a national scale and the desire to keep the art and soul of mathematics. His despise for teachers and education schools makes it unlikely that his arguments will have any sway with them in making things better.
Still, I think he raises excellent points to consider for computing education. I work on the Commission to design the new AP exam in Computer Science, and it’s hard to define the test scope and range exactly enough to make a standardized test, and yet still encourages students to explore and be creative with computing. If computer science were made a mandatory subject, it would have to be dissected and classified and standardized even further. Would a computer science requirement be the death of the “Beauty, Joy, and Awe” (in terms of the popular SIGCSE presentations) of computer science? Is it a necessary process that defining a subject in NCLB terms means reducing it to a husk of its former self? How can we teach teachers to meet the standards and still ensure that what’s interesting about computing remains — even if we can’t come up with an observable standard that would demonstrate that “students find computing creative and fun”?
HyperCard for the Web
I am a long time HyperCard fan. My 1993 dissertation was on the design and evaluation of an environment I built in HyperCard to have students learn physics and programming by building simulations (in HyperTalk). I built a commercial media composition tool MediaText in SuperCard, a HyperCard clone.
If the Apple claims are true, HyperCard still is the most successful end-user programming environment ever. HyperCard was included with every Macintosh that Apple sold from 1987 to 2000. I’ve heard a claim that 1/3 of all Mac users actually tried programming in HyperCard — literally, tens of thousands of Hypertalk experimenters. If that’s true, then more people have programmed in HyperCard (at least a little bit) than probably any other programming language.
I still play with HyperCard-like programs when they come out (like PythonCard and Revolution), but haven’t really used any of them much. They seemed stuck in an old model of what applications are about. When I or my students try to use them for something new, they regularly break on us. They don’t have the flexibility of the original HyperCard.
I’m having fun playing with the new version of Revolution, revMedia from RunRev. The interesting thing about this version is that the editor is now free, and the stacks live inside the Web browser. They’ve built a plug-in for MacOS and Windows (and they promise Linux, too). It works pretty darn smooth — the stack just shows up inside the browser, period.
Technically, there’s nothing new here. The Squeak plugin put EToys in the browser years ago, and Scratch‘s website is enabled by a really nice Java applet to run Scratch projects. What’s fun for me is simply seeing HyperCard live inside the browser. HyperCard has a bunch of really interesting ideas in it that are still not matched by anything else today, so it’s exciting to be able to play with those ideas again in a modern setting.
The Phonics of Computing Education
In 2005, Merrick Furst (then, our associate dean for undergraduate education) said to me, “I think of your Media Computation and contextualized computing as a kind of ‘whole language‘ approach to computing education. What are the phonics? What’s the computer science equivalent of the scales and etudes that musicians practice with to get the basics down?” At the time, I replied that getting students to understand why they’re learning to program, the relevance of what we were teaching them, was the most important factor. I still think that. But I’ve been pondering the phonics question for the last four years.
I was reminded of that question when listening to the NPR report on the end of PBS’ ‘Reading Rainbow.’ The beginning of the report chalked the demise up to a lack of funds, but as it went on, the report really sounded like a change of heart at PBS–driven by research findings.
“Reading Rainbow taught kids why to read,” [John] Grant [of WNED Buffalo] says. “You know, the love of reading — [the show] encouraged kids to pick up a book and to read.”
Linda Simensky, vice president for children’s programming at PBS, says that when Reading Rainbow was developed in the early 1980s, it was an era when the question was: “How do we get kids to read books?”
Since then, she explains, research has shown that teaching the mechanics of reading should be the network’s priority.
“Teaching the mechanics” — that’s what the “phonics” of computing education is about. Context tells us why. The mechanics tell us how.
We do a lousy job of teaching the mechanics of programming in computing classes. Our traditional tools of teaching programming are lecture and student practice with the interpreter or compiler.
- Pair-programming is just a twist on the student practice that doesn’t make the mechanics easier.
- Think about the perennial problem in Java of learning where to put the semi-colons. How do we help with that? We lecture on where to put semi-colons — yeah, we know how effective that is. We show example code — better than just lecturing, but since our assignments are rarely modification of code, students are mostly dealing with semi-colons on a blank sheet. Then, we throw students to the Java compiler, whose error messages in response to a missing or misplaced semi-colon are awful.
- Visual languages like Scratch or Alice reduce the mechanics. For CS students, they just postpone the inevitable. I don’t know of any evidence that the mechanics are easier in the textual language after facing the visual languages.
If the research on reading applies to computer science, then we ought to be doing much more to convey to students the mechanics of programming. What kinds of mechanics are important to teach? I’ve thought of three, and I’d really appreciate hearing your suggestions on others:
- The syntax of the programming language. I understand (somewhat) while error messages in the full compiler can’t be made much better. But surely we can build tools/tutorials/drills/etudes where students could practice the nitty-gritty details of language syntax with better feedback than compiler error messages. I feel guilty every time my Python students get the indentation wrong in their programs, because the error message is about quotation or indentation errors “somewhere around line X.” Surely I could build something to help them learn indentation short of tossing them in front of a speeding interpreter?
- How to read code. Everyone who comes to lecture gets to see and hear how the lecturer reads code. All 30% of them. There is a skill to knowing what to attend to in a program. Everyone knows to simply skip “public static void” in the main method of a Java class — everyone except the novice who doesn’t know which words are important and which can be safely ignored.
- How to tinker with code. Given a piece of code that you’re trying to understand, you know where to put print statements and what constants are worth tweaking to see the impact. How does a novice know that? We know that changing “i” to “j” as the index to the loop isn’t all that useful. How did we learn that? How do we teach that?
These activities are in the class of things that we experts never think about. They’re the “obvious” things that we simply ignore. Exactly! That’s what the “phonics”/mechanics are. How do we teach them? As experts, we know to simply ignore those matters and do them without thinking. As novices, they are yet another distraction, and cognitive load theory suggests that those “distractions” add up. In the end, we only have 7+/-2 chunks — that’s a human limit, and all those distractions are chunks that quickly add up to an impediment to getting at the learning we care about.
These “phonics”/mechanics are important, not just for the novice, but for the expert who is trying to bring herself up to speed on the latest technology. The practicing programmer who wants to learn Ruby or Scala doesn’t need to know why to program in these languages — she already has that. She wants to know how. She wants the mechanics of the language. Research on how to teach “phonics”/mechanics of a new language would go a long way towards bringing her up to speed on the new technology. (I’m choosing “she” in these examples explicitly because I’ve been thinking for a year now about the implications of Caroline Simard’s report for the Anita Borg Institute on the needs of mid-level technical women in IT.)
Teaching the “phonics”/mechanics of computing education is on my mind a lot these days. I’m thinking that it may be our most significant point of leverage in improving computing education. New curricula may not get adopted. The phonics of computing education crosses all curricula. Getting the phonics right helps both the novice and the practicing programmer learn new skills. Done right, phonics can be taught self-paced, even via distance learning, to act as a supplement to existing instruction. I still think that the context is our most important change to improve computing education, but teaching the phonics/mechanics well may be the most universal improvement we can make, the one that can help everyone regardless of curriculum.
Accounting for the Two Humps
One of the features of CS1 outcomes that has had teachers perplexed for years is the “Two Humps” phenomenon: Some students really get it, and some don’t. Grade curves for CS1’s typically have two humps, one for each group of students. What causes that? The mythical “Geek Gene” is one explanation.
Anthony Robins has an alternative explanation. He thinks that it’s because everything we do in intro programming builds on the earlier stuff. If you ever get behind, you’re toast — you can’t do the later homework without getting the earlier homework right.
Michael Kölling has built on Anthony’s explanation to develop a new way of teaching his CS1, which he calls Quality-oriented teaching of programming. The idea is to think about succeeding in the class in terms of number of programs completed, rather than achieving a passing grade on all or most homework assignments.
I haven’t read Anthony’s paper yet, but am looking forward to it. I’ve tended to believe that the two humps are caused by a priori knowledge, but missing out on the early stuff would lead to a similar effect.
Turning Skills into Money
Kent Beck, in his blog Three Rivers Institute » Blog Archive » Turning Skills into Money, comes up an interesting contrast to the previous article on “Critical thinking.” Basically, economics favors ignorance and high turnover in the software services industry. “Just enough senior people need to remain to provide the leadership necessary to keep projects from failing. More than that is a burden.” How do we improve an industry that rewards a lack of knowledge?
Critical thinking? You need knowledge – The Boston Globe
Critical thinking? You need knowledge – The Boston Globe is a piece by Diane Ravitch, which speaks to some of our recent discussion about the drivers of innovation. “The intelligent person, the one who truly is a practitioner of critical thinking, has the capacity to understand the lessons of history, to grasp the inner logic of science and mathematics, and to realize the meaning of philosophical debates by studying them.”
Searching for a new driver for CS Education
The last couple of posts in this blog have generated some wonderful response posts.
- Alfred Thompson wrote a post about what leads to change in computing education. He makes some intriguing predictions about the future of computing education at the end of his post. (The tie to databases got me thinking.) He agrees with me that, historically, the innovations which have taken root have grown from well-known institutions. What I found most interesting was the back-and-forth Alfred sees (from his current post at Microsoft) between industry and academic influences on the tools of choice.
- Leigh Ann Sudol wrote a response to Alfred which reflected her frustration with the where the influences are coming from. I strongly agree with her greater goal: “We need to stop arguing about language, tools, etc. and decide what it means for the AVERAGE American to be literate in computing.” She concludes with the economic concerns she sees which limit computer science in secondary education.
- Ian Bogost’s post is in line with Leigh Ann’s, in that he decries the influences on computing education, but he goes further to see it as indicative of an illness within computer science overall. “[O]verall, computing simply doesn’t care about the development of its ideas. It fantasizes itself as a scientific or an engineering discipline, but throws the baby out with the bathwater (even the purest of sciences acknowledges that its ideas arise from the complex flows of history).” Ian wants computing educators to engage in learning methods that recognize computing as a liberal art (an argument I agree with, and have also made, though not nearly as eloquently).
All three of these posts are, in a sense, complaining about what is driving computing education. I wrote my original post as a reflection on what has driven change in the past — purely an historical analysis. The response we’re reading here is, “But that’s not what should drive change in how and what we teach.” Are these influences unique to computer science? Leigh Ann and Ian call on Biology and Mathematics, respectively, as offering alternative models. Computing may be more driven by industry than some other fields, but I suspect that these drivers are broader than just computer science.
How do we change what influences our practice? I’m a fan of Larry Cuban’s work, particularly, “How Scholars Trumped Teachers.” Cuban analyzes the last 100 years of American Universities and concludes that research wins over teaching. American universities are set-up so that research and all that goes with it (e.g., focus on funding, publication, and creation of intellectual property) will always dominate attention to education. Change is possible, but we may have to change our underlying assumptions about what the American University is and what it means, and then change the structure to match the new beliefs.
What changes CS Education?
In this blog, we’ve talked about Lijun Ni’s research results, that suggest that changes that teachers make in their classroom is most influenced by their personal excitement for the change. We’ve also talked about the fact that research results actually influence teachers very little. What I’ve been wondering about lately is, “What influences the teacher excitement?” I don’t have any answers, but I’ll lay out some ideas and let the commentators help us tease out importance.
- Languages. Computing teachers get excited (even passionate) about languages. You can tell the story of computing education’s development in terms of the languages that predominate, e.g., Pascal, C++, Java. The most common question raised over a beer at SIGCSE is probably “What’s the next big language?” Dijkstra famously believed that the language in the first choice was critical to avoid “mutilating” a student’s thinking about computing. Why do we believe that? Why should the first language matter so much? Here are two hypotheses: (1) Since computation is not obvious in the world around us, students have no idea what computing is when they walk into their first programming language, so whatever model of computation that’s embedded in that first language is the first model that students will meet. (2) As educators, we tend to “teach the language.” Thus, the features of the language become the curriculum of the first course, for better or worse (I tend to believe the latter). Not sure why we made programming language designers into our curricular designers, but any tour of a Java CS1 textbook (and it’s growing heft) suggests that we have.
- Authority. Pascal came from ETH and Niklaus Wirth. Structure and Interpretation of Computer Programs came from MIT. Java came from Sun Microsystems. Would Pascal have had as much influence if it had been developed by somebody at a small liberal arts college? It could have been developed elsewhere — Pascal is a small language, really. Would SICP have had as much influence if it had come from somewhere else? Authority does influence us, much as we like to pretend it doesn’t. Could we imagine an open source textbook or language becoming the dominant text or tool in introdocutory computing courses? I doubt it — we attend to the inventor and the institution.
- Textbooks. When I look over the list of awardees for the SIGCSE Outstanding Contributions to CS Education, I see lots of mention of textbooks. But when I think over influences on CS education, I don’t really see textbooks as a major influence of change. It’s necessary for change — Pascal would not have taken off in CS1’s if “Oh Pascal!” wasn’t out there and available. But Pascal’s influence extends beyond that textbook. I only know a few C++ textbooks, and none dominate my (scarce) knowledge of C++ using schools, but I do know that C++ is really popular. Probably the most influential CS textbook I know is SICP. (Surprising that neither Hal Abelson or Gerald Sussman are on the SIGCSE awardees list.) Is that the influence of the book, or of the curriculum? Hard to tease those apart.
- Tools. While there have been lots of IDE’s, visualization tools, animation tools, etc., few of them stand out for me as major change agents. Alice is one, and Karel the Robot is probably another. What makes a tool successful at creating change? Why did Alice succeed? I suggest that it met a need (a tool for a CS0-like course) when such a need arose, and it was supported by the right authority (Randy Pausch at CMU). It’s hard for a tool to change CS1’s because CS1’s already exist and those needs are being met (by something). Alice might not have become as popular 10 years earlier when CS was less likely seen as a topic for non-majors or for pre-undergraduate students.
Others? What am I missing? My first pass analysis suggests that, to make change in CS, invent a language or tool at a well-known institution. Textbooks or curricula rarely make change, and it’s really hard to get attention when you’re not at a “name” institution.
Engineering as a Context for Education
I admit up-front that I did not hold out much hope for the new report from the National Academies “Engineering in K12 Education: Understanding the Status and Improving the Prospects.” As a new, untenured assistant professor in educational technology at Georgia Tech, I did a lot of my early work in engineering education. Engineering is the 800 pound gorilla on campus, and that’s where the greatest learning needs and opportunities were.
I tired of banging my head against the infrastructural challenges of Engineering education. My collaborators in Engineering were warned against working in education. One was told by his chair that every publication in Journal of Engineering Education would count as a negative publication: “Not only was it a useless publication, but it was time wasted that could have been spent on a real publication.” Graduate students in Engineering wouldn’t work with us because they feared that it would hurt their progress. Senior faculty in education mocked reform efforts. One Civil Engineering professor I interviewed told me at length why undergraduates should never collaborate (“It prevents real learning”). When I pointed out that ABET accreditation guidelines required collaboration, he just smiled and said, “Yeah, that’s what they say. We know how to get around those rules.”
When I got tenure, I decided to focus just on computing education. We have many of the same attitudes among our faculty, but I care more about our problems. I’m willing to bang my head against the wall for longer.
Nowadays, I promote a strategy of using context to motivate and sustain engagement with computing education. I’m pleased to see a similar idea in the new National Academies report:
How might engineering education improve learning in science and mathematics? In theory, if students are taught science and mathematics concepts and skills while solving engineering or engineering-like problems, they will be able to grasp these concepts and learn these skills more easily and retain them better, because the engineering design approach can provide real-world context to what are otherwise very abstract concepts.
I don’t agree that it’s the “design approach” that provides the real-world context, but I completely agree with the rest. It’s like the approach that Owen Astrachan has been emphasizing — the power of the problem that students address. The engineers are saying that they own “real-world context” more than scientists and mathematicians, and I think they’re right. Now I’m actually looking forward to reading the rest of the report.
|
US Computing Education Research On The Sly
Last night was the submission deadline for the ACM SIGCSE 2010 conference, the biggest computing education conference in the world. I submitted 3 panels or special session proposals, and with graduate students, was part of 4 research papers. There were more research papers submitted to SIGCSE from Georgia Tech that I wasn’t part of. I’m proud that Georgia Tech has so much work going on in computing education research. What’s perhaps surprising is that none of these graduate students and none of the associated projects are funded to work in computing education research.
To the best of my knowledge, there are no funded computing education research projects in the United States. All computing education research projects, if funded, are funded to do something else. All computing education research in the US, then, is done on-the-side, even, on-the-sly. The UK, Germany, and Scandinavian countries do fund computing education research. Why not in the US?
We have computing education research at Georgia Tech funded by several US National Science Foundation (NSF) programs.
- The Broadening Participation in Computing (BPC) funds Georgia Computes! which is about creating programs and classes and teaching teachers to make computing more accessible and inviting for everyone. That program allows for some research, and we can do evaluation which can inform research efforts, but the program isn’t about doing research.
- We have funding from Course, Curriculum, and Laboratory Improvement (CCLI) to disseminate work about Media Computation, keep improving JES, and evaluating results. Brian Dorn is funded on that program to work on JES, but his research is on end-user programming.
- We also have funding from CISE Pathways to Revitalized Undergraduate Computing Education (CPATH) to improve computing education by create communities of computing teachers. Lijun Ni is using that program to do research on computing teacher’s sense of identity, but she’s funded to keep that program going. Allison Tew also works on that program, but her research is on assessment.
In some sense, all of these efforts are about interventions and outreach. None of them is about doing fundamental research to inform how people learn about computing and how to improve that understanding.
There are NSF programs focused on education research (like REESE). To the best of my knowledge, there is no computing education research going on there. That makes sense to me. These programs fund all education research, competitively, across disciplines. Computing education research has few assessment methods (none reliable and valid), is just starting to develop broadly accepted theories and models, and has few people working in the community. Projects in computing education research are challenged to compete against well-established physics, mathematics, chemistry education (for example) where they have well-established assessment methods, models and theories with lots of support, and research communities that can provide support and fair evaluation of each others’ work.
How do we bootstrap a new education research community, like computing education research? How do we get funding so that people can focus on it, and not just do it on the side? How do we convince US policy makers that computing education is important and deserves funding so that we develop the methods, theories, and models that can improve computing education? Why is this harder to do in the US than in other countries?
Next great CS1 Context: Statistics
An article in today’s New York Times says, “For Today’s Graduate, Just One Word: Statistics.” Hal Varian is quoted saying, “I keep saying that the sexy job in the next 10 years will be statisticians. And I’m not kidding.” I’ve heard that the Statistics Advanced Placement exam is among the fastest growing.
I really want to get back to my Computational Freakonomics class one day. Statistics would make a great context for learning computing.
- There are such great languages for playing with data, like R and SciPy.
- It’s useful and offers the opportunity to work on data that students care about.
- It can easily be applied to a student’s future degree and career.
- It’s the use of computing that makes statistics relevant. Most statistics classes I’ve taken are boring because you work with toy datasets with maybe a dozen points. That’s about the limit of student attention when you’re working with paper-and-pencil or calculator computations. But when you bring in real computation, you can work with authentic datasets (real NASDAQ data on stocks, real United Nations data on nations) of relatively large size. Now a student can ask questions that she is interested in knowing the answer to.
Can Video Game Testing Spark Interest in Computing Among Black Youth?
Betsy diSalvo’s Glitch project is featured on the Georgia Tech home page today. The follow-on link is really nice and starts to describe some of her findings from the first summer of the effort — really interesting stuff: GT | Digital Lounge – Gaming – Can Video Game Testing Spark Interest in Computing Among Black Youth?.
Matthias Felleisen in Response to Blog Post
Matthias Felleisen tried to respond to the blog post where I commented on his and Shriram Krishnamurthi’s recent CACM article, but WordPress kept discarding his text! I offered to post it here as a new entry.
Dear Mark: thanks for the thorough response to our CACM article.
You are correct in that we have not published any quantitative or
qualitative studies concerning the outcomes of TeachScheme! or
Bootstrap courses—even though we have the data, collected by external and independent evaluators. There are several reasons for our decision,
though two are particularly important. First, publications about such studies
tend to leave me disappointed. Some confirm the obvious, others use
highly questionable methods, and few (if any) results live up to
reproducibility, the most important criteria of experimentation. Second, my own experience as a CS researcher with a highly unusual outreach project (15 years running now) suggests that such studies convince few people (if any). Instead, when people find out about our studies (and their positive results), they come up with reasons for why such positive results could not possibly be obtained at their institution. As for the specific concerns about Bootstrap—the school level curriculum for synthesizing mathematics and programming/computing—the evaluation is out of my hands, and I expect that you will actually see highly detailed (and positive) results in a couple of years from now.
You are also correct that the “whole package has to look and feel like mathematics.” We completely support this goal, and my very first NSF proposal in 1995 outlined a strategy for getting just there, including an especially developed programming language (dubbed Jam), the IDE (more than Boxer and more than DrScheme), an alignment of the curriculum with the NCTS standards, and more. While the response was highly positive in general, the reviews didn’t accept the idea that purely functional programming is mathematics and that a lot of (school) mathematics is functional programming; the program officer re-directed us into computer science and Teach Scheme Not (aka !) was born.
So, if you really agree with our goals, and if you really think it is a good route to go, come work with us. We need help.
Matthias Felleisen
Recent Comments