Posts tagged ‘CACM’
What does it mean for Computer Science to be harder to learn than other STEM subjects?
I made an argument in my Blog@CACM Post for this month that “Learning Computer Science is Different than Learning Other STEM Disciplines,” and on Twitter, I explicitly added “It’s harder.”
In my Blog@CACM post, I thought it was a no-brainer that CS is harder:
-
Our infrastructure for teaching CS is younger, smaller, and weaker (CS is so new, and we don’t have the decades of experience to figure out how to do it well yet.)
-
We don’t realize how hard learning to program is (The fact that the Rainfall problem seems easy, but it’s clearly not easy, means that CS teachers don’t know how to estimate yet what’s hard for students, so our classes are probably harder than we mean them to be.)
-
CS is so valuable that it changes the affective components of learning (Classes that are stuffed full of both CS majors and non-majors means that issues of self-efficacy, motivation, and belonging are much bigger in CS than in other STEM disciplines.)
The push back was really interesting. People pointed out that they took CS classes and math classes, or CS and physics, and CS seemed easy in comparison. They may be right, but that’s self-report on introspection by people who succeeded at both classes. My point is that we are probably flunking out (or students are giving up, or opting out) of CS at much higher rates than any other STEM subject, because of the reasons I give. We’re really using two different measures of “harder” — harder to succeed, or harder in retrospect once succeeded.
I only have a qualitative argument for “It’s harder.” I’m not sure how one would even evaluate the point empirically. Any suggestions? How could we measure when one subject is harder than another?
It’s not an important question to answer which is harder, CS vs math, or CS vs physics. A much more important and supportable claim is that CS “is harder” than it needs to be. We have a lot of extraneous complexity and cognitive load in learning CS.
Growing Computer Science Education Into a STEM Education Discipline: November CACM
I manage the education column in CACM’s Viewpoints section, and this quarter, Briana Morrison and I wrote the piece. While CS is now officially “in STEM,” it’s not like mathematics and science classes. In the November issue, we look at what has to happen to make CS as available as mathematics or science education. ( BTW, Briana defends her dissertation today!)
Computing education is changing. At this year’s CRA Snowbird Conference, there was a plenary talk and three breakout sessions dedicated to CS education and enrollments. In one of the breakout sessions, Tracy Camp showed that much of the growth in CS classes is coming from non-CS majors, who have different goals and needs for computing education than CS majors.a U.S. President Obama in January 2016 announced the CS for All initiative with a goal of making computing education available to all students.
Last year, the U.S. Congress passed the STEM Education Act of 2015, which officially made computer science part of STEM (science, technology, engineering, and mathematics). The federal government offers incentives to grow participation in STEM, such as scholarships to STEM students and to prepare STEM teachers. Declaring CS part of STEM is an important step toward making computing education as available as mathematics or science education.
The declaration is just a first step. Mathematics and science classes are common in schools today. Growing computing education so it is just as common requires recognition that education in computer science is different in important ways from education in STEM. We have to learn to manage those differences.
Human-Centered Computing: A New Degree for Licklider’s World – CACM
I am on the editorial board for the Viewpoints section of Communications of the ACM, and I take care of the education column. Occasionally, I write the piece. For the most recent CACM, I wrote a piece that is explicitly about our Human-Centered Computing PhD and implicitly about computing education research.
I wanted to write about how our HCC PhD is different than a CS PhD, and I realized that I could tell the story best in terms of the HCC PhD students who informed my understanding of computing education: Mike Hewner, Betsy DiSalvo, and Erika Poole. I struggled with the overall story, until I learned that Licklider’s degrees were mostly in psychology. I realized that if Licklider were studying today, he probably would get an HCC PhD, and that became my story.
In the 1960s, J.C.R. Licklider described his vision for the future of computing, which is remarkably like today’s world. He saw computing as augmenting human intelligence, and for communications among communities. He foresaw cloud computing and the Semantic Web. Licklider’s background was different than many of the early computer scientists. He was not an electrical engineer or primarily a mathematician—his degrees were mostly in psychology.
To predict today’s world took a combination of computing and psychology. It is not surprising that understanding today’s world of ubiquitous computing requires a blend of computing and social science. The phenomena of social computing are not primarily about technology. What is interesting about our modern computing milieu is the blend of technology, humans, and community. Human-centered computing is a new subdiscipline of computer science that prepares students for studying our socio-technical world.
via Human-Centered Computing: A New Degree for Licklider’s World | May 2013 | Communications of the ACM.
Bjarne Stroustrup on what new software developers should learn and what CS is
The January 2010 issue of Communications of the ACM has an interesting piece by Bjarne Stroustrup, What should we teach new software developers? Why?. He suggests that “the first degree qualifying to practice as a computer scientist should be a master’s,” and that “professors who teach students who want to become software professionals will have to make time and their institutions must find ways to reward them for programming.”
|
I’m pleased that he talks about “software developers” in his title, as opposed to making more global statements about “computer scientists.” He does make the general claim that “The ultimate goal of CS is to help produce better systems.” Is that really the goal? If a scientist writes a 50 line script that enables her to create a visualization or analyze some data in order to gain some new insight, and then throws that script away, isn’t that also a goal of CS? Maybe Stroustrup would also see that 50 line script as a “system,” or maybe he would disagree that there is any “CS” involved in the scientist’s 50 line script. Hamming famously said, “The purpose of computing is insight, not numbers.” I wonder if “systems” are more about “insights,” “numbers,” or something else entirely.
Nice CACM piece on K-12 Education Policy
Cameron Wilson and Peter Harsha have written a nice piece in the September CACM highlighting the challenges in changing K-12 education policy as it relates to computing. They hit on all the big points, from the challenges of getting computing education to “count” for anything in high schools, to teacher certification, to “No Child Left Behind.” Of course, I’m also pleased that “Georgia Computes!” gets highlighted. Recommended for understanding why it’s so hard to get more and better computing education into schools!
Point/Counterpoint: CS Education headed in wrong direction?
The July 2009 CACM also has a great point/counterpoint piece by Robert Dewar and Owen Astrachan asking “Is CS Education in the US headed in the wrong direction?” I’m not going to give my personal opinion on the pieces, because I solicited both articles for CACM. I am really pleased with both position papers, and how the overall piece came out. It’s really about what do we want from our education system — what does an undergraduate degree in computing mean?
(For testing purposes: xky7qhc4r2)Aligning Computer Science with Mathematics by Felleisen and Krishnamurthi
The July 2009 Communications of the ACM has an interesting article by Matthias Felleisen and Shriram Krishnamurthi Why Computer Science Doesn’t Matter with the great subtitle “Aligning computer science with high school mathematics can help turn it into an essential subject for all students.” The argument that Matthias and Shriram are making is that we can use programming to teach mathematics better, and help students learn both. In so doing, we prevent marginalization of computer science and support an important goal of the American education system, the teaching of “‘rithmetic.”
It’s a good argument and one that I support. I am dubious about some of the education claims made in the argument, like “we have already seen our curricular approach…help students raise their alebra scores” and “Formal evaluation shows the extremely positive impact this curriculum has…” (I’ve been searching through the sites given in the article, but can’t find peer-reviewed, published papers that support these claims.) But these are really minor quibbles. Having written one of these pieces, I know that the tyrany of 1800 words is severe, and the authors can be excused for not providing background citations to the studies supporting their claims. Instead, I’d like to provide some of the background literature that supports their claim.
Can we use programming to help students learn mathematics? Absolutely! Probably the most famous study supporting this argument is Idit Harel’s dissertation work on Instructional Software Development Project (ISDP). Idit had fourth graders write software in Logo to teach fractions to third graders. She found that a real synergy occurred between the concepts of programming and the concepts of mathematics, and her students ended up learning more about both compared to another class. Yasmin Kafai (who just moved to Penn from UCLA this last year) continued this project, exploring novel collaboration models (e.g., the fourth graders become fifth grade “consultants” as another cohort of fourth graders helps another cohort of third graders) and expanding from mathematics into science. My own dissertation explored the synergy between physics and programming. My results weren’t as strong — I had good physics learning, but not good computer science learning. I suspect the problems were the challenge of making real learning in only a three week summer workshop, and not having the kinds of IDE’s that Matthias and Shriram are calling for.
“Our community must realize that minor tweaks of currently dominant approaches to programming won’t suffice.” Completely agreed, and the best argument for this point came from Bruce Sherin’s powerful dissertation (with Andy diSessa at Berkeley). Bruce taught two groups of students lessons in physics, one using programming and one using algebra. (Andy would probably argue with Matthias and Shriram, “The ideal language and the IDE for imaginative programming are still to be designed.” Over 20 years ago, Boxer implemented much of what they’re calling for.) Bruce found some really interesting differences between what was learned via each form of notation. For example, programming was better for figuring out causality and sequencing. An algebraic formula like x = x0 + vt leaves invisible to the novice that the t is what will typically vary in that equation. On the other hand, algebra was better for understanding balance and equilibria. A formula like F=ma works in both directions: increase the mass or acceleration and the force increases, or if the force declines, then either the mass or the acceleration must have declined. Most programming languages do not make evident how constraints work in the world. The media extensions that Matthias and Shriram describe help address some of the challenges Bruce found when students had a single physics concept (e.g., an object moving because it’s location changed) being represented by multiple lines of code.
“As computer science educators, we must also demand a smooth, continuous path from imaginative programming to the engineering of large programs.” Alan Kay has been making this argument for years. He refers to the concept of Omniuser who can move from scripting in E-Toys, to changing how the levels close to the metal of the machine work, all with a single system and (hopefully) a single notation. His STEPS effort is seeking to build such systems. In particular, Alan and his team are exploring “systems math” which is a kind of powerful mathematics that can only really exist in the powerful medium of programming. Thus, STEPS gives us a way to go beyond just support “‘rithmetic” to support powerful new kinds of mathematics learning.
I’m a big fan of Scheme and consider DrScheme to be one of the finest pedagogical IDE’s ever created. TeachScheme is a brilliant curriculum. My guess is that careful studies of the effort would support many of the claims being made by Matthias and Shriram. More importantly, though, I believe that they’re right that programming could actually improve mathematics learning. Doing it in such a way that students’ mathaphobia doesn’t drive even more students from computer science is a real challenge. An even bigger challenge is doing it in such a way that can gain the support of organizations like NCTM and that meets the mathematics standards in our schools. As they say, “Any attempt to align programming with mathematics will fail unless the programming language is as close to school mathematics as possible.” It’s more than just the programming language — the whole package (curriculum, IDE, language) has to look and feel like mathematics to make it successful with the mathematics education community.
Recent Comments