Archive for July, 2015
In my research, I’m most interested in the non-CS majors, the ones who learn computing because it makes them more productive (see where I make that argument) or because they want to make themselves more marketable (see Eric Robert’s post) or because they will live and work (as I predict) in the fat line between programmers and users (see post here). A recent article in the CACM suggests that all non-CS majors need to be learn (let’s not use the “be exposed” euphemism — there’s no sense in “exposing” someone to something unless you’d like them to learn from it) “functional programming languages [and] the declarative programming paradigm.” I’m willing to consider that, but why? The quote below says, “they allow programmers to do more with less and enable compilation to more efficient code across a wide range of runtime targets.” I’ve been studying non-CS majors who program for a lot of years, and I’ve never heard any of them say even once that they want to “enable compilation to more efficient code across a wide range of runtime targets.”
So let’s consider the “more with less.” Do we buy that what what non-CS majors is to be able to get more expressive power with fewer keystrokes? I don’t see the argument for that.
- Brian Dorn studied graphic designers who program, and found that assignment was fairly hard for them to learn (see his CHI 2010 paper). Surely, there’s not much that has fewer characters than that.
- Neil Brown has been mining the BlueJ Blackbox data for empirical data on what students get wrong most often (see his ICER paper). I was surprised to learn that confusing & for && and | for || is pretty common. Those are pretty easy to type, short, and seemingly error-prone expressions.
- We have Thomas Green’s fascinating result that that IF P THEN … END P; IF NOT P THEN … END NOT P. is not just better than IF P THEN…ELSE.… It’s ten times better — novices do better by a magnitude if they avoid ELSE.
My suspicion is that non-CS major programmers value understandability and fewer errors, over fewer keystrokes and more power.
I like functional programming and would be interested in a good argument for it for non-CS majors. I don’t see it here.
Second, would-be programmers (CS majors or non-majors) should be exposed as early as possible to functional programming languages to gain experience in the declarative programming paradigm. The value of functional/declarative language abstractions is clear: they allow programmers to do more with less and enable compilation to more efficient code across a wide range of runtime targets. We have seen such abstractions gain prominence in DSLs, as well as in imperative languages such as C#, Java, and Scala, not to mention modern functional languages such as F# and Haskell.
I was honored to serve on Michael Lee’s dissertation committee. Mike’s basic thesis is available at this link, or you can get the jumbo-expanded edition with an enormous appendix describing everything in his software plus his learning evaluation (described below) at this link. His thesis brings together several studies he’s done on Gidget, his game in which he teaches programming. I’ve written about his work before, like his terrific finding that including assessments improves engagement in his game (see blog post here) and about how Gidget offers us a new way to think about assessing learning (see blog post here).
Michael had several fascinating results with Gidget. One of my favorites that I have not blogged on yet was that personifying the programming tool improves retention (see his ICER 2011 paper here). When Gidget sees a syntax error, she (I’m assigning gender here) doesn’t say, “Missing semicolon” or “Malformed expression.” Instead, she says “I don’t what this is, so I’ll just go on to the next step” and looks sad that she was unable to do what the programmer asked her to do. The personification of the programming tool dramatically improved the number of game levels completed. They kept going. In course terms, they were retained.
The dissertation has yet another Big Wow result. Mike developed an assessment of computing knowledge based on Allison Elliott Tew’s work on FCS1 (see here). He did a nice job validating it using Amazon’s Mechanical Turk.
He then compares three different conditions for learning differences:
- Gidget, as a game for learning.
- CodeAcademy, as a tutorial for learning.
- The Gidget game level designer. The idea was to provide a constructionist learning environment without a curriculum. Mike wanted it be like using Scratch or Alice or any other open-ended creative programming environment. What would the students learn without guidance in Gidget?
Gidget and CodeAcademy are statistically equivalent for learning, and both blow away the constructionist option. A designed curriculum beats a discovery-based learning opportunity. That’s interesting but not too surprising. Here’s the wild part: The Gidget users spend 1/2 as much time. Same learning, half as much time. I would not have predicted this, that Mike’s game is actually more efficient for learning about CS than is a tutorial. I’ve argued that learning efficiency is super important especially for high school teachers (see post here).
Mike is now an assistant professor at the New Jersey Institute of Technology (see his web page here). I wish him luck and look forward to what he does next!
The world is about more than computing. It’s easy for those of us who live and work in CS to see it as CS-centric. I work in a section of Atlanta that is bursting with high-tech startups. I found this article compelling — not because it threw cold water on the vision of Atlanta as a “Silicon Valley East,” but because it painted a picture of how much more diverse the economy in Atlanta really is.
In reality, metro Atlanta’s relationship with the tech sector is, well, complicated.
Georgia boasts about 280,000 tech jobs, according to Technology Association of Georgia president and chief executive officer Tino Mantella — the great majority of them in metro Atlanta. But information technology jobs only make up about 3.5 percent of the area’s labor market, down from a peak of 4.7 percent in the 1990s, federal Bureau of Labor data shows.
And California, home to the real Silicon Valley, dominates venture capital investing — the lifeblood of tech startups — with 56 percent of spending compared to the 1 percent in Georgia, Mantella said.
I’m currently reading Nobel laureate Daniel Kahneman’s book, “Thinking Fast, Thinking Slow” (see here for the NYTimes book review). It’s certainly one of the best books I’ve ever read on behavioral economics, and maybe just the best book I’ve ever read about psychology in general.
One of the central ideas of the book is our tendency to believe “WYSIATI”—What You See Is All There Is. Kahneman’s research suggests that we have two mental systems: System 1 does immediate, intuitive responses to the world around us. System 2 does thoughtful, analytical responses. System 1 aims to generate confidence. It constructs a story about the world given what information that exists. And that confidence leads us astray. It keeps System 2 from asking, “What am I missing?” As Kahneman says in the interview linked below, “Well, the main point that I make is that confidence is a feeling, it is not a judgment.”
It’s easy to believe that University CS education in the United States is in terrific shape. Our students get jobs — multiple job offers each. Our graduates and their employers seem to be happy. What’s so wrong with what’s going on? I see computation as a literacy. I wonder, “Why is our illiteracy rate so high? Why do so few people learn about computing? Why do so many flunk out, drop out, or find it so traumatic that they never want to have anything to do with computing again? Why are the computing literate primarily white or Asian, male, and financially well-off compared to most?”
Many teachers (like the comment thread after this post) argue for the state of computing education based on what they see in their classes. We introduce tools or practices and determine whether they “work” or are “easy” based on little evidence, often just discussion with the top students (as Davide Fossati and I found). If we’re going to make computing education work for everyone, we have to ask, “What aren’t we seeing?” We’re going to feel confident about what we do see — that’s what System 1 does for us. How do we see the people who aren’t succeeding with our methods? How do we see the students who won’t even walk in the door because of how or what we teach? That’s why it’s important to use empirical evidence when making educational choices. What we see is not all there is.
But, System 1 can sometimes lead us astray when it’s unchecked by System 2. For example, you write about a concept called “WYSIATI”—What You See Is All There Is. What does that mean, and how does it relate to System 1 and System 2?
System 1 is a storyteller. It tells the best stories that it can from the information available, even when the information is sparse or unreliable. And that makes stories that are based on very different qualities of evidence equally compelling. Our measure of how “good” a story is—how confident we are in its accuracy—is not an evaluation of the reliability of the evidence and its quality, it’s a measure of the coherence of the story.
People are designed to tell the best story possible. So WYSIATI means that we use the information we have as if it is the only information. We don’t spend much time saying, “Well, there is much we don’t know.” We make do with what we do know. And that concept is very central to the functioning of our mind.
I believe the result described in the article below, that a critical limitation of teacher’s ability to use technology is too little understanding of technology. In a sense, this is another example of the productivity costs of a lack of ubiquitous computing literacy (see my call for a study of the productivity costs). We spend a lot on technology in schools. If teachers learned more about computing, they could use it more effectively.
In 2010, for example, researchers Peggy A. Ertmer of Purdue University, in West Lafayette, Ind., and Anne T. Ottenbreit-Leftwich of Indiana University, in Bloomington, took a comprehensive look at how teachers’ knowledge, confidence, and belief systems interact with school culture to shape the ways in which teachers integrate technology into their classrooms.
One big issue: Many teachers lack an understanding of how educational technology works.
But the greater challenge, the researchers wrote, is in expanding teachers’ knowledge of new instructional practices that will allow them to select and use the right technology, in the right way, with the right students, for the right purpose.
Australia may become the next country to teach computing in all schools, if a Labor Government gets elected. I hope that, if it happens, it’s done well. It’s expensive to get real CS education into every school. It’s cheap and easy to declare that any course that teaches how to use software is “CS.”
Bill Shorten’s recent announcement that, if elected, a Labor Government would “ensure that computer coding is taught in every primary and secondary school in Australia” has brought attention to an increasing world trend.
There is merit in school students learning coding. We live in a digital world where computer programs underlie everything from business, marketing, aviation, science and medicine, to name several disciplines. During a recent presentation at a radio station, one of our hosts said that IT would have been better background for his career in radio than journalism.
There is also a strong case to be made that Australia’s future prosperity will depend on delivering advanced services and digital technology, and that programming will be essential to this end. Computer programs and software are known to be a strong driver of productivity improvements in many fields.
Maria Klawe gets a lot of attention for promoting women in CS at Harvey Mudd College, but she’s the College President. Closer to the on-the-ground action is Ran Libeskind-Hadas who is the CS Department Chair there. In the post below, he lays out the argument for everyone taking CS in College.
I’m encouraged by an increasing number of innovative introductory courses that provide students with these rich experiences. And, I’m very excited to see students voting for these courses with their feet. At my institution, Harvey Mudd College, we developed a set of introductory courses that are not only required for all Harvey Mudd students but are now immensely popular among non-majors at our four sister institutions in the Claremont Colleges consortium. At a college of 800 students, we are teaching introductory computer science to all of our first-year students, regardless of their ultimate major. And, we are attracting hundreds of students each from our sister colleges in Claremont. They are literature, economics, and sociology majors – among many others. And Harvey Mudd does not have a monopoly on innovative introductory courses. A number of other institutions including the University of Washington, Harvard, and others have pioneered their own successful courses in a similar spirit.