Archive for June, 2009
Just got back from the five hour drive to drop off my daughters at their youth choral group summer camp. I listened to a podcast of a Long Now Foundation debate between Drew Endy and Jim Thomas on synthetic biology. If you’re not familiar with the Long Now Foundation seminar series, I highly recommend that you check it out. Think of the TED talks, but now let the same speakers (in some cases) talk for two hours, instead of 20 minutes. The discussion is deep and meaningful. I particularly recommend the debates, and this one was just as thought-provoking as the others I’ve heard.
The particular Computing Education insight that I got from listening to Drew Endy was in thinking about DNA as a programming language. Drew talks about DNA as “a replicating machine” that can be “programmed” “in garages, like the early homebrew computer hackers.” Take a look at this comic book treatment of how to build logic components out of DNA. Those simple logic elements look like the same level as Yale Patt’s hardware-first take on CS1. There is even a “programming language” for designing DNA components.
Could you teach an introduction to computing using DNA as the context, medium, and “programming language”? I don’t see why not. It’s clearly relevant. It would avoid a lot of the issues that are important to majors but aren’t really important to a basic understanding of computing. There aren’t any issues about commenting in one’s DNA, though there are wonderful issues about re-use. (Endy has a great quote in the debate, “Real intelligent design would include documentation!”)
Here’s the real advantage to talking about DNA as a CS1 language: no computing teacher would just do DNA. You’d want to leave students with a “real” programming language that they could use in everyday tasks, maybe Python or Java. Then, the class would no longer be about programming or even computers, and would instead be about systems and computation. You’d want to spend as little time on syntax as possible, because there’s not much syntax in DNA and it’s not at all important for what the class would really be about. What does it mean for DNA components vs. Python objects to interact? How does a branch or selection get encoded in DNA or in a programming language? What are all the ways in which a computational system might make choices? How is computation similar or dissimilar in biology and in silicon?
I don’t know if synthetic biology has really reached the point where it could be used as a context for introductory computing — let alone whether it could be safely and ethically taught to first year undergraduate students. But the thought of using a non-silicon context for teaching computing is a useful tool for thinking about what we really want to be teaching about computing.
I’ve spent the last two days in Washington DC at the Future of Computing Education Summit. Organized by the ACM Education Board with funding from the National Science Foundation, the goal was to get computing organizations (from Computer Science to IS to IT to Computer Engineering) to work collaboratively to solve challenges facing computing education. Each organization wrote a two page position paper (drafts available here) describing how they saw the challenges. The process of the workshop was aimed at developing a consensus view of the challenges, identifying common strategies, then creating action items for next steps using those strategies, and finally, to make a commitment to execute those action items.
I was one of the organizers, with high hopes, but I was still amazed to see it work. On Friday morning, we had organizations commit to taking charge of some really significant action items that could have far-reaching impacts on computing education! There’s going to be a formal report (likely before the end of the summer). I’m going to exercise the blog-writer’s prerogative to just talk about the action items that really spoke to me personally.
Clearly the biggest action item was “to create the [ ] for Computing Education” where “[ ]” is to be filled in with words like “National Center” or “Coalition” or “Consortium.” Amy Sharma of AAAS/NSF spoke for the group who proposed this action item which she described as “The Entity to Speak with a United Front. This is the ‘go-to’ clearinghouse/repository of ideas, policy recommendations, curricula etc. When the ‘Computing Education Act of 2012′ gets written, which it will, this will be the organization that writes it.” Andy van Dam of CRA-E and Brown explained the need for this new organization in these terms: other education groups (like math, chemistry, physics) have advocacy groups that speak for the concerns of that field. They may squabble internally, but when they speak about standards or tests or whatever, they speak with one voice. Computing Ed organizations tend to squabble in public without a united voice. “Other groups circle the wagons and shoot outward. We circle the wagons and shoot inward.” Heikki Topi of ACM Ed Board and Bentley University and Lucy Sanders, CEO of NCWIT, also spoke forcefully for this proposal.
What blew me away was the backing behind this effort. Heikki, Jane Prey, and Boots Cassel of ACM Ed Board were completely convinced that ACM had to agree to “own” this, to commit to making it happen. So we did — after IEEE Computer Society committed first (which indicated how much they were bought in to this), and just before NCWIT committed too! Those are three powerful organizations agreeing to make this idea happen. Organizations could also sign on as “participants,” saying “We want to be part of making this happen.” ACM SIGCSE, CSTA, and SIGITE, and CRA and ASEE all signed on as participants. Wow! Tom Hilburn of IEEE signed on as the “convener” — he’ll make sure that we come to the table and take action.
While that was the biggest one, there were all the other action items which could have a dramatic impact. ACM Ed Board also committed to work with the iCaucus (coalition of Information Schools) to write a white paper, with representatives from other organizations, to identify the top five research questions whose answers would have the greatest impact on computing education. John Unsworth of U. Illinois Urbana-Champaign agreed to convene that one, where the audience would be NSF, the US Department of Education, and other funding agencies, to tell them what we really need to have happen. SIGCSE took charge of producing a survey of what’s going on in non-majors and gen-ed computer science classes, to make it easier for more of these to be built. I’m excited about that one — this is SIGCSE extending out from their traditional focus of CS-for-CS-majors.
Not all the action items won “owners.” One that I really liked was matching up university faculty with CSTA Cohort Leaders. Most curricular change has to occur at the level of states, since that’s where standards and curriculum requirements exist in the US education system. CSTA has “Cohort Leaders” in most states who are trying to get computing into the curriculum. It can be hard for a K-12 teacher (which CSTA cohort leaders typically are) to convince state departments of education to change. A university and K-12 coalition has much more oomph, which has had a real impact in Georgia. The action item was to find university faculty matches for existing CSTA cohort leaders. While that action item got no “owners,” there was discussion about how we might still make this happen.
This is less than half of the action item list, each of which, if executed and if successful, could have a powerful impact on computing education. I’m really pumped-up over the level of commitment to action with a goal of improving computing education which I witnessed over the last two days.
There’s an article circulating a lot on the Internet yesterday and today suggesting that IT careers aren’t cool enough for Canadian students. Mike Hewner thought it was weird that the article was comparing apples-and-oranges.
Nearly 77 per cent of students believe ICT jobs offer average or above average pay; 74 per cent believe ICT jobs offers average or above average job security; and 37 per cent believe ICT jobs are above-average in terms of creativity. However, 34 per cent believe ICT jobs are difficult and complex; 31 per cent believe ICT jobs are not fun; and 25 per cent believe ICT jobs are not cool.
Why tell us the positives on creativity and the negatives on coolness? Why not give us the positives and negatives on each? So Mike looked up the original report data, and sent me this summary:
Here’s what students said…both “above average” (4s and 5s on their scale) and “below average” (1s and 2s on their scale):
creative 37 cool 23 interesting 30 fun 22 very easy 16 big impact on the world 39 high paying 44 very secure 35 not creative 20 not cool 25 not interesting 27 not fun 31 very difficult 34 no impact on the world 14 low paying 9 not secure 11
So yes, 25% of students thought that computing was “not cool,” but 23% said that it was “cool.” Is 2% a meaningful difference? The article seems a little one-sided.
What is still striking to me about these data is that these students generally see computing as paying well, creative, and difficult — and still not interesting as a career choice. My bet is that US students would rank the results similarly. Does this mean that they think that there are easier jobs that are creative and pay well? Or that there are other jobs that pay even better with similar characteristics? Or is that job prospects really don’t play much role in what 9th and 10th graders are thinking about when considering their future majors?
Georgia Tech’s College of Computing offers a course “Computing for Good.” Students in this class take on social activist projects, like creating kiosks to support Liberians in capturing video testimony after their civil war and creating web sites to help monitor blood supply quality. These are terrific projects, and the context of social activism inspires student learning. This class is part a global movement to include more activism in computing classes, like the Humanitarian Free and Open Source Software effort.
The title of this effort “Technology + Activism = Computing for Good” sends the wrong message. Activism is taking direct (Wordnet says “militant”) action to cause social and political change. That’s not the only kind of good that there is in a University, or even in a computer science department.
The point of a University is to be a common good. The University serves to advance the interests of people. Education is inherently about bettering people, which is good. Sometimes the service provided is longterm. Knowing how to make systems more reliable or more easily maintained does people good, even if it is not about social or political change. A long term good is still “good.”
I am working with a student, Brian Landry, who is finishing up his dissertation this Summer. Brian has been developing a tool to help people tell stories (not just chronological slide-shows) with their digital pictures. I’m loving reading the quotes from the people creating and viewing these stories. Authors talk about their reflections about their lives, and how the process of creating these stories changes how they think about their experiences. Viewers talk about getting new insights into the authors. I am no philosopher, so my view may be naive or ill-informed. I think getting people to come to new understandings of themselves and others is inherently “good,” but is probably not considered “activism.”
I worry about the message this “Computing for Good” sends to students. I hear bits and pieces of talk from students getting involved in these projects and those who are considering other projects. Work in “education” is not typically considered part of the “for Good” effort. It’s not activism, it doesn’t result in immediate and dramatic impacts, and it rarely gets picked up on CNN or in the New York Times. Universities (and its students) should not give up on long-term value in favor of short term press coverage.
One of my colleagues has taken on the Twitter monicker “computing4evil.” If we’re not “good,” then are we “evil”? We’re thinking about making up t-shirts, “The League of Evil Computationalists.” Of course, this is all tongue-in-cheek. The project “Computing for Good” is doing great good for people who can use the help. Putting labels on projects that some are “good,” however, is dangerous. Everything at a University should wear that label, or something is wrong with our notion of the University.
I’m spending Father’s Day reading. Just finished Terry Pratchett’s Equal Rites (the first appearance of Granny Weatherwax, which I had never read before), and have now just started Nudge: Improving Decisions about Health, Wealth, and Happiness by Thaler and Sunstein. I’d heard of behavioral economics before, especially in the context of how these ideas are influencing the Obama administration. I’m recognizing implications for computing education as well.
The basic premise of behavioral economics is that people are bad decision makers, and those decisions are easily biased by factors like the ordering of choices. Consider the choice between a cupcake and a piece of fruit. The worse choice there only has consequences much later and the direct feedback (“You gained weight because you chose the cupcake!”) is weak. Thaler and Sunstein promote libertarian paternalism. The idea is that we want to offer choices to people, but most people will make bad choices. Libertarian paternalism suggests that we make the default or easiest choice the one which we (paternalistically) define as the best one — that’s a nudge. It’s not always easy to decide which is the best choice, and we want to emphasize making choices that people would make for themselves (as best as we can) if they had more time and information.
An obvious implication for computing education is our choice of first programming language. Alan Kay has pointed out many times that people are sometimes like Lorenz’s ducks, who were convinced that the Lorenz was their parent: people “imprint” on the first choice they see. Thaler and Sunstein would probably agree that the first language someone learns will be their default choice when facing a new problem. We want to make sure that that’s a good default choice.
How do we choose the first, “best choice” language? If our students are going to become software engineers, then choosing a language which is the default (most common, most popular) in software engineering would make sense: C++ or Java. But what if our students are not going to become software engineers? Then we’ve made their first language harder to learn (because it’s always harder as a novice to learn the tool used by experts), and the students don’t have the vocational aspirations to make the extra effort worthwhile. That choice might then lead to higher failure/withdrawal rates and students regretting trying computer science. Hmm, that seems familiar…
Another choice might be to show students a language in which the best thinking about computer science is easiest. For example, Scheme is a great language for pointing out powerful ideas in computer science. I believe that Structure and Interpretation of Computer Programming by Abelson and Sussman is the best computer science textbook ever written. It’s power stems, in part, from its use of Scheme for exemplifying its ideas.
The challenge of using Scheme is that it is not naturally the language of choice for whatever problem comes the student’s way. Sure, you can write anything in Scheme, but few people do, even people who know Scheme. Libraries of reusable tools that make it easy to solve common problems tend to appear in the languages that more people are using. If students were well-informed (or are/become informed), would they choose Scheme? If the answer to that question is “No,” the teacher appears coercive and constraining, and the course is perceived as being irrelevant. That’s another familiar story.
The ideas of Nudge have implications for teachers, too. I am on the Commission to design the new Advanced Placement (AP) Computer Science exam in “Computer Science: Principles.” (This exam is in contrast to the existing Level A CS AP exam in computer science programming in Java.) We just met for the first time this last week. There will be programming in the new APCS exam, and there’s interest in providing teachers with choices of what language they teach. Providing infinite choice makes it really hard to write a standardized, national exam. Teachers will likely be offered a menu of choices. How will those choices be ordered? How will teachers make these choices? While there are some wonderful high school teachers, there are too few high school CS teachers. The new APCS exam will only be successful if most of the teachers offering it are brand new to computer science. These teachers need help in making these choices, with reasonable default values, because they simply won’t have the experience yet to make well-informed choices.
I gave a talk last week where I was attacked for asking students to program in my Media Computation classes. “Women don’t want to program. That will drive them away!” Is it the activity of programming that leads to our lack of diversity, or something else?
I don’t want to steal any of Brian’s thunder and report his results early. I’m not going to get into where Brian got his interviewees and if it was really a valid sample. I want to raise the possibility: What if that result generalizes?
We know that there are too few women and minorities amongst professional software developers or undergraduates studying computing. Almost nobody knows much about professionals from other fields who develop software for their own purposes. The estimates that have been attempted suggest that there are many, many more end-user programmers than professional software developers. What if that community reflects the demographics of our overall population? What if it’s half female and appropriately diverse?
That would suggest that we’re lacking women in our computer science classes and in the field because of perceptions of the classes and the field (whether or not they’re true), not because of the activity. That’s a radical idea which suggests some very different strategies for those of us working to broaden participation in computing. It could be that programming really is seen as fun and beautiful, but it’s how we do our classes and the conditions of software development jobs that are at fault for the lack of diversity. That would be important to know, because it might be easier to change our classes than it is to change the activity within the field.
I had a really interesting discussion (perhaps “disagreement”) at the NCWIT meeting a few weeks ago. My discussion partner claimed that “the APCS (Advanced Placement Exam in Computer Science) has to go” and “the APCS does nothing good for undergraduate computer science” and most pointedly, “the APCS exam is a factor in declining enrollments in computer science.” I disagree strongly with that last point. I do think that the APCS is in need of improvement for broadening participation in computing, and I even agree that it doesn’t do much good for undergraduate computer science today. However, I don’t believe that it does any harm. The reality is that there is just so little computer science in high schools today, that the APCS (and just about any other CS curriculum) has almost no impact on potential computer science students in high school.
One of our major accomplishments (read “Barbara Ericson’s major accomplishments”) in “Georgia Computes!” is that the number of APCS high school teachers in the state has more than doubled in the last four years, and most of those new teachers took workshops from Barbara. The way we get the teacher count is by measuring the number of high schools in the state who send anyone to the APCS exam. Since there is only one high school in the state that has more than one APCS teacher, the number of high schools is essentially 1:1 with the number of teachers. It’s also the case that the percentage of high schools offering APCS out of all high schools is higher in Georgia than any other school in the Southeast. Georgia’s percentage of APCS-offering schools is higher than Florida, South Carolina, Alabama, etc.
That sounds impressive — until you realize that that percentage is 22%. 22% of Georgia high schools offer APCS. The inverse implication is that 78% of high schools in Georgia offer no APCS, and if a high school doesn’t offer APCS, they most likely offer no computing at all. Thus, with more than 75% of high schools offering no computer science, Georgia is a leader.
The CSTA has been recently crunching the numbers on APCS. The APCS has been around for 25 years now. In 26 states, the grand total of all students who have taken the APCS in all that time is less than 200. That’s 8 students per year on average (over 25 years), in more than half of the United States. 8 students could be the output of a single teacher in a single high school. In 26 states, then, there could be essentially no high school computer science at all.
APCS does over-emphasize programming, and it does emphasize Java which is not the best introductory programming language. However, I can’t believe that APCS is swaying high school students’ opinions of computer science if the vast majority of those students never see AP classes or students taking them! The argument was made to me that, by offering credit for APCS, universities are holding the APCS in some respect and thus drawing attention to it, which may be hurting us because of the APCS failings. Yes, the APCS may be overly emphasized by college CS departments. That doesn’t change the fact that even if a high school student in the US wanted to take APCS, almost none of them have any opportunity to even see the course. We may be saying implicitly, “the APCS is great!” But if a student can’t take APCS, that statement has no real impact.
The problem with high school computer science is not that APCS is such a bad model. It’s that far too few students see any model of CS at all. That’s another reason why Jan Cuny’s efforts at NSF to create “10,000 CS teachers for 10,000 high schools by 2015″ is so important. We need more CS teachers. Yes, we need more and better curricular models. But without teachers, even the best models will get no further into high schools than APCS is today.
The Georgia DCCE has a couple of twists. First, we combine high school and undergraduate teachers, to encourage discussion about the boundary and making them easier to cross for students. Second, we engaged teachers in action research: Coming up with small assessments to use in their own classrooms, and then compare across classrooms. A key point of a disciplinary commons is to get teachers to reflect on their practice. Sally and Josh used portfolios and journals to get this reflection. We decided to try action research.
In our DCCE, we went through two cycles of coming up with questions, create instruments, evaluating data, and reflecting on the results. The first round was based on assessment questions and instruments developed by others. The second round was invented entirely by the teachers. Saturday was the our “data party” to combine results, and then a “gallery walk,” where teachers posted on a wall their results and claims, and what they took as the implications for their teaching. I was really struck by some of the claims and implications that teachers drew from their stories.
One mini-study involved two teachers of a year-long Advanced Placement CS (APCS) course and one teacher of a single semester introductory programming course. (In Georgia, high schools have a three course CS sequence that they teach: Computing in the Modern World, Introductory Programming, and APCS.) The two APCS classes did much better than the introductory students. The teacher of the intro course took as his implication that the new book he started using wasn’t as effective as the old book he used to use. He may very well be right, but there are lots of other possible suspect variables there, like the difference in level, length of time of the course, and the socio-economic situation of the students. The intro course is in one the poorest sections of Atlanta, while the two APCS classes are in affluent sections of the suburbs.
A second mini-study involved asking two college classes to tackle the calculator problem from the McCracken ITiCSE Working Group. The classes did no better than did the students in the original Working Group study. When asked why, the one teacher explained, “Most of these students don’t really belong in CS.” He may very well be right, but I still found it an unusual argument — but mostly because of my own cultural and epistemological biases. I tend to believe that all kids can learn to read, write, do basic mathematics, and learn basic programming. I think of computing as a form of literacy, so it doesn’t enter into my world-view that, “these kids just can’t do it.” I would look at these same data and try to understand what was hard for the students, what were the barriers, and how might they be reduced.
I thought about these implications and rationalizations when reading a recent NPR report on the book Nudge: Improving Decisions About Health, Wealth, and Happiness which is supposedly influencing the Obama administration’s thinking on influencing citizen’s decisions. The bottomline is that we are all irrational decision makers. We see a low starting rate for a credit card or cellphone, and don’t think about the overall costs over the next two years.
Teachers tell themselves stories about what happens in their classrooms all the time. I know that I do. I explain to myself why students fail my classes, or why graduate students choose not to work with me, or why a paper or proposal gets rejected. We all do. I’m sure that I, like the irrational decision-makers in Nudge and the teachers in the DCCE, make assumptions and ignore possible explanations that are more likely than the ones I’ve chosen. A problem, though, is that the stories I tell myself about my classes influence more than just myself — my response to those stories changes how I teach the next time, and thus influences the next group of students.
I’ve been thinking that Nudge is a good argument for Teaching Circles and other community of teachers mechanisms. We need some way to check our rationalizations, to hear alternative explanations, and to make sure that we don’t make huge changes based on erroneous assumptions. We’re just individual irrational decision-makers, but maybe together, we can make better decisions.
A mismatch between the public’s view of faculty and the faculty’s view of themselves.
Amazon is de-emphasizing their author blogs. I’ve found that my posts are no longer being picked up by Google Reader nor on my Author page. Author blogs are no longer showing up on books written by that author. Amazon is encouraging authors to link to external blogs — I’m guessing that Amazon is trying to get out of the blog business.
So, I’ve set up shop at http://computinged.wordpress.com Please join me here!