Archive for October, 2017

Lamport and how Education works: The Coming Software Apocalypse

Several people sent this article to me. It’s so one-sided and contrary to empirical evidence that I found it hard to finish. The belief that we can fix all of software through the use of software proofs and verification is contrary to software social processes, as shown by DeMillo, Lipton, and Perlis in 1979. Belief that Toyota sudden acceleration was due to a software bug ignores the empirical evidence about other causes for the phenomenon (as Gladwell described in his podcast last year).

It’s the paragraph quoted below that led to people sending me the article. Leslie Lamport suggests that if we just taught people TLA+, that would lead to better software.

Education of novices never works as a mechanism to change professional practice.  (Or at least, I’ve been trying to find an example of successfully changing a community through education of the young, and I haven’t found one yet.) Students who want to become software developers want to do what software developers do — that’s Lave and Wenger’s model of situated learning, where students join a Community of Practice through Legitimate Peripheral Participation (which I describe in this blog post). If you tell students to learn TLA+, you would most likely get a response like, “Why are we learning THIS? We want to real thing, not some academic toy!”

If you want to change a community of practice, you have to get the leaders in the community of practice to change. Students follow them. It doesn’t work the other way around.

But TLA+ occupies just a small, far corner of the mainstream, if it can be said to take up any space there at all. Even to a seasoned engineer like Newcombe, the language read at first as bizarre and esoteric—a zoo of symbols. For Lamport, this is a failure of education. Though programming was born in mathematics, it has since largely been divorced from it. Most programmers aren’t very fluent in the kind of math—logic and set theory, mostly—that you need to work with TLA+. “Very few programmers—and including very few teachers of programming—understand the very basic concepts and how they’re applied in practice. And they seem to think that all they need is code,” Lamport says. “The idea that there’s some higher level than the code in which you need to be able to think precisely, and that mathematics actually allows you to think precisely about it, is just completely foreign. Because they never learned it.”

Source: The Coming Software Apocalypse – The Atlantic

October 30, 2017 at 7:00 am 19 comments

Is (Scaled) Online Learning an Engine for Diversity? Not according to the data

There are lots of women and minority students in online CS. Numbers are high. Proportions are low.  Reach (what percentage of women and minority get access to online CS) is low.  Diversity in terms of economic success is low (as discussed in this blog post and in this one too), so scaled online learning is unlikely to be an engine to bridge economic divides.  There are a large number of (rich) female and minority students in the OMS CS populations (higher numbers but lower proportion than in our face-to-face MS CS program), but if they remain a small proportion of the whole and the reach is low, then not much is changing. The graduate pool and the Tech industry over all does not become more diverse.

If Georgia Tech is indeed able leverage scaled online learning to graduate underrepresented minorities at much higher rates than comparable residential programs, then it seems that all of us in higher ed should be taking notice. I remain skeptical that an online degree program that is not built around intensive interaction, mentoring, and coaching between faculty and students can be successful.  Going to scale in order to drive down the costs seems to require a transactional, rather than relational, approach to teaching and learning.

Source: Is (Scaled) Online Learning an Engine for Diversity? | Technology and Learning

October 27, 2017 at 7:00 am Leave a comment

Why Tech Leadership May Have a Bigger Race Than Gender Problem

The Wired article linked below suggests that race is an even bigger issue than gender in Tech industry leadership.  While Asians are over-represented in the Tech labor force, they are under-represented in Tech leadership, even more than women.  I was somewhat surprised that this article considers “Asians” so generally.  The most-often visited blog post I’ve written is the one that shows the differential success rates of different Asian populations in US educational attainment (see post here).

Gee says this study came about because an earlier report in 2015 that used EEOC data from companies like Google and LinkedIn ended up on the desk of Jenny Yang, the outgoing commissioner of the EEOC. Yang asked if the lower proportion of Asian executives was the result of discrimination and might be applicable for lawsuits, Gee says. He told her no. “We have never seen any overt discrimination or policies that create these disparities,” Gee explains. Rather, after conversations with 60 or 70 Asian executives, the authors say they noticed a pattern of cultural traits among some Asians that did not align with leadership expectations in Western corporate culture, such as risk-taking and being confrontational.

Gee gave the example of an executive who started the first Asian affinity group at Intel decades ago. He noticed that Chinese engineers were unhappy and not succeeding in Intel’s culture of “constructive conflict,” which involved heated debates during meetings.

“Some people call it unconscious bias. For Asians, it’s actually a very conscious bias,” says Gee. Studies show that assumptions that Asians are good at math, science, and technology make it easier for them to get in the door, but the same bias is reversed when it comes to leadership roles, he says.

Source: Why Tech Leadership May Have a Bigger Race Than Gender Problem | WIRED

October 23, 2017 at 7:00 am 1 comment

What we should be teaching kids about CS and changing our tools to get there: Ben Shapiro

Ben Shapiro gave the opening keynote at VL/HCC a couple weeks ago. (See Andy Ko’s great summary of VL/HCC this year.) He shared the slides with me, and he just made a video of himself re-giving the talk.

Ben has been exploring what we need to teach kids to prepare them to create authentic applications for the world that they live in — multiple, heterogenous platforms with rich networking.  He wants kids to think about networks, failures, and communication between programs running on devices with different capabilities. Today, we talk about teaching kids variables and loops. Tomorrow (like, literally tomorrow), we should be teaching them about the realities of the digital world in which they live.

But we’re not going to do this with Scratch, Python, or Java. He’s suggesting new kinds of tools, including having young kids work with machine learning.

I recommend letting Ben change your thinking about the next things to teach in CS.

October 21, 2017 at 7:00 am 3 comments

Georgia Tech Receives CMD-IT University Award for Retention of Minorities and Students With Disabilities in Computer Science

I have not been directly involved in the computer science undergraduate major at Georgia Tech since “Georgia Computes!” started (and ECEP continued). Today, I teach graduate courses in the Human-Centered Computing PhD program and the undergraduate non-CS majors course Introduction to Media Computation, and only rarely teach CS undergraduates.

So, I am pleased that this award to the undergraduate program in the College of Computing mentioned things that Barb and I were part of.  The College of Computing won the award in part for Threads (I co-chaired the implementation committee), “Georgia Computes!” (which was mostly Barb and me), Project Rise Up 4 CS (which is Barb’s invention which she developed for ECEP), and our three mandatory CS classes, one of which is the Media Computation class I created. I feel like Barbara and I had a role in this.

The CMD-IT University Award decision was based on both Georgia Tech’s impressive quantitative reported results, which reflected high retention and graduation rates and qualitative reporting on their various retention program.  In particular, Georgia Tech highlighted the following four programs highlighted as directly impacting retention and graduation:

  • Threads Undergraduate Curriculum:  Students are given the opportunity to take control over their curriculum by choosing two of eight Threads to create their degree plan which gives them more than 28 different degree plans to follow. This resulted in students feeling they have more control and a better understanding of their degree plan.

  • Georgia Computes and Project Rise Up:  The two programs are spearheaded by Georgia Tech to help increase engagement in computing by broadening participation in computer science at all educational levels by underrepresented groups.  These programs increase interest in Computer Science.

  • Mandatory Introductions to Computer Science classes:  All students enrolled in Bachelor’s degree programs at Georgia Tech must take one of three computer science classes. The three programs enable students to take courses that fit their level of experience in Computer Science.

  • Travel Scholarships to Conference:  Georgia Tech provides between 40 and 120 travel scholarships to leading tech conferences with a diversity focus.  Students build networks of support and return with a feeling of renewed commitment to their degree program.

Source: Georgia Tech Receives CMD-IT University Award for Retention of Minorities and Students With Disabilities in Computer Science | Markets Insider

October 20, 2017 at 7:00 am Leave a comment

Why should we teach programming (Hint: It’s not to learn problem-solving)

This is a revision of the original post. Several readers pointed out on Twitter that my original post was insensitive. It read like an attack on Brenda, a woman of color, from a senior white guy (me). That was not my intent, and I apologize for that. I am grateful to Joseph P. Wilson who helped me understand how to avoid that impression. I can’t change the post that went out yesterday, but I will be more careful in future blog posts.


At the CS for All Consortium Celebration Tuesday, Brenda Wilkerson gave the closing keynote. The full livestream of the CS for All Summit is available here, and it includes Brenda’s talk. I’m a huge fan of Brenda, and she’s done fabulous work in Chicago. She is a leader in bringing CS to All.

I have not seen Brenda’s talk or any of the livestream. My experience of the Consortium Celebration was through reading the Twitter stream as I found time during the day. Brenda had one slide (which you can see in the tweet linked here) that I disagreed with, and because it’s an important point, I’m going to respond to it here.

It says, “Computer science builds the mental discipline for breaking down problems, and solving them.” There are few studies that test this claim as “computer science,” but there have been lots of studies looking for transfer from teaching programming to general problem-solving skills. Probably the first study investigating this claim is Roy Pea and Midian Kurland’s paper On the cognitive effects of learning computer programming. You can find this claim in a paper by Henry Walker to which I responded in this blog. You can see it in posts all over the Internet, from this blog post to this article from a teacher in England. There is a strong belief out there that learning computer science, and programming called out specifically, leads to new problem-solving and “a new way to think.”

There is simply not evidence in support of these claims. I talk about these in my book, I reference the Palumbo meta-review in this blog post, and NYTimes wrote about it this last spring. Like “learning styles” and “Latin teaches thinking,” this is a persistent myth that learning computing leads to problem-solving skills, and we have no support the claim.

I tweeted in response to Brenda’s slide, and several CS teachers asked me, “So why teach programming or computing at all?”  That’s a great question!  Here are some of my top reasons:

  1. To understand our world. The argument that Simon Peyton Jones made in England for their computer science curriculum is that Computer Science is a science like all the others. We teach Chemistry to students because they live in a world with chemical interactions. We teach Biology because they live in a world full of living things. We teach Physics because they live in a physical world. We should teach Computer Science because they live in a digital world.
  2. To study and understand processes. Alan Perlis (first ACM Turing Award laureate) argued in 1961 that everyone on every campus should learn to program. He said that computer science is the study of process, and many disciplines need people to know about process, from managers who work on logistics, to scientists who try to understand molecular or biological processes. Programming automates process, which creates opportunities to simulate, model, and test theories about processes at scale. Perlis was prescient in predicting computational science and engineering.
  3. To be able to ask questions about the influences on their lives. C.P. Snow also argued for everyone to learn computing in 1961, but with more foreboding. He correctly predicted that computers and computing algorithms were going to control important aspects of our lives. If we don’t know anything about computing, we don’t even know how to ask about those algorithms. It shouldn’t be magic.  Even if you’re not building these algorithms, simply knowing about them gives you power. C.P. Snow argues that you need that power.
  4. To use an important new form of literacy. Alan Kay made the argument in the 1970’s that computing is a whole new medium. In fact, it’s human’s first meta-medium — it can be all other media, and it includes interactivity so that the medium can respond to the reader/user/viewer. Computing gives us a new way to express ideas, to communicate to others, and to explore ideas.  Everyone should have access to this new medium.
  5. To have a new way to learn science and mathematics. Mathematics places a critical role in understanding our world, mostly in science. Our notation for mathematics has mostly been static equations. But code is different and gives us new insights. This is what Andy diSessa has been saying for many years. Bruce Sherin, Idit Harel, Yasmin Kafai, Uri Wilensky, and others have shown us how code gives us a powerful new way to learn science and mathematics. Bootstrap explicitly teaches mathematics with computing.  Everyone who learns mathematics should also learn computing, explicitly with programming.
  6. As a job skill. The most common argument for teaching computer science in the United States is as a job skill.  The original Code.org video argued that everyone should learn programming because we have a shortage of programmers. That’s just a terrible reason to make every school child learn to program. That’s what Larry Cuban was arguing this last summer. Tax payers should not be funding a Silicon Valley jobs program. Not everyone is going to become a software developer, and it doesn’t make any sense to train everyone for a job that only some will do. But, there’s some great evidence from Chris Scaffidi (that I learned about from Andy Ko’s terrific VL/HCC summary) showing that workers (not software developers) who program make higher wages than those comparable workers who do not. Learning to program gives students new skills that have value in the economy. It’s a social justice issue if we do not make this economic opportunity available to everyone.
  7. To use computers better. This one is a possibility, but we need research to support it. Everyone uses computers all the time these days. Does knowing how the computer works lead to more effective use of the computer?  Are you less likely to make mistakes? Are you more resilient in bouncing back from errors? Can you solve computing problems (those that happen in applications or with hardware, even without programming) more easily?  I bet the answer is yes, but I don’t know the research results that support that argument.
  8. As a medium in which to learn problem-solving. Finally, computer programming is an effective medium in which we can teach problem-solving. Just learning to program doesn’t teach problem-solving skills, but you can use programming if you want to teach problem-solving. Sharon Carver showed this many years ago. She wanted students to learn debugging skills, like being able to take a map and a set of instructions, then figure out where the instructions are wrong. She taught those debugging skills by having students debug Logo programs. Students successfully transferred those debugging skills to the map task. That’s super cool from a cognitive and learning sciences perspective. But her students didn’t learn much programming — she didn’t need much programming to teach that problem solving skill.But here’s the big caveat: They did not learn enough programming for any of the other reasons on this list!  The evidence we have says that you can teach problem-solving with programming, but students won’t gain more than that particular skill. That is a disservice to students.

Certainly there are more reasons than these, and I’ve seen several in the response to this blog post, and some in the comments below.

This was just one slide in Brenda’s talk. Her overall point was much more broader and more significant. I strongly agree with Brenda’s key point: CS for All is a social justice issue. Learning computing is so important that it is unjust to keep it from some students. Currently, CS is disproportionately unavailable to poorer students, to females, and to minority ethnic groups. We need CS for All.

October 18, 2017 at 12:30 pm 10 comments

More Teachers, Fewer 3D Printers: How to Improve K–12 Computer Science Education 

A nice summary of where we’re at with CS Ed in the United States, where additional funding and effort should go, and where it shouldn’t.

Addressing the teacher shortage should be the number one use for the new funds allocated by the Trump administration, says Mark Stehlik, a computer science professor at Carnegie Mellon University. A lack of qualified teachers is the biggest barrier to CS education in the U.S., he says, and he thinks the problem is going to get worse. An earlier generation of CS educators has started to retire, and he says younger CS graduates “aren’t going into education because they can make twice or more working in the software industry.”

One solution could be to expand the reach of each CS educator through online classes. But “online curricula aren’t going to save the day, especially for elementary and high school,” Stehlik says. “A motivated teacher who can inspire students and provide tailored feedback to them is the coin of the realm here.”

Where the money should not be spent? On hardware and equipment. Laptops, robots, and 3D printers are important, says Code.org’s Yongpradit, “but they don’t make a CS class. A trained teacher makes a CS class. So money should be focused on training teachers and offering robust curriculum.”

Source: More Teachers, Fewer 3D Printers: How to Improve K–12 Computer Science Education – IEEE Spectrum

October 18, 2017 at 7:00 am 8 comments

Older Posts


Recent Posts

October 2017
M T W T F S S
« Sep   Nov »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Feeds

Blog Stats

  • 1,452,053 hits

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 5,177 other followers

CS Teaching Tips