Archive for October, 2019

Come to the NAS Workshop on the Role of Authentic STEM Learning Experiences in Developing Interest and Competencies for Technology and Computing

Register here. And view the agenda here.

November 4, 2019

1:00 p.m.–6:00 p.m. (reception hour following)

Role of Authentic STEM Learning Experiences in Developing Interest and Competencies for Technology and Computing

Keck Building, Room 100
500 5th St., NW
Washington, DC


The Board on Science Education of the National Academies of Sciences, Engineering, and Medicine will host a public workshop on November 4, 2019 to explore issues in STEM education. The workshop will illustrate the various ways in which stakeholders define and conceptualize authentic STEM learning opportunities for young people in grades K-12 in formal and informal settings, and what that means for the goals, design, and implementation of such experiences. Presenters will unpack the state of the evidence on the role of authentic STEM learning opportunities and promising approaches and strategies in the development of interest and competencies for technology and computing fields. A recurring theme throughout the workshop will be implications for increasing diversity and access to authentic STEM learning experiences among underserved young people.
Confirmed Speakers:

  • Lisa Brahms, Monshire Museum of Science (virtual)
  • Loretta Cheeks, Strong TIES
  • Tamara Clegg, University of Maryland
  • Jill Denner, ETR
  • Ron Eglash, University of Michigan
  • Sonia Koshy, Kapor Center
  • Keliann LaConte, Space Science Institute (virtual)
  • Amon Millner, Olin College
  • Kylie Peppler, University of California, Irvine
  • Jean Ryoo, University of California, Los Angeles
  • Emmanuel Schanzer, Bootstrap
  • Shirin Vossoughi, Northwestern University (virtual)
  • David Weintrop, University of Maryland

Questions? Email us at

October 28, 2019 at 7:00 am 2 comments

How to change undergraduate computing to engage and retain more women

My Blog@CACM post for this month talks about the Weston et al paper (from last week), and about a new report from the Reboot Representation coalition (see their site here). The report covers what the Tech industry is doing to close the gender gap in computing and “what works” (measured both empirically and from interviews with people running programs addressing gender issues).

I liked the emphasis in the report on redesigning the experience of college students (especially female) who are majoring in computing.  Some of their emphases:

  • Work with community colleges, too.  Community colleges tend to be better with more diverse students, and it’s where about half of undergraduates start today.  If you want to attract more diverse students, that’s where to start.
  • They encourage companies to offer “significant cash awards” to colleges that are successful with diverse students. That’s a great idea — computer science departments are struggling to manage undergraduate enrollment these days, and incentives to keep an eye on diversity will likely have a big impact.
  • Grow computer science teachers and professors. I appreciated that second emphasis.  There’s a lot of push to grow K-12 CS teachers, and I think it’s working.  But there’s not a similar push to grow higher education CS teachers. That’s going to be a chokepoint for growing more CS graduates.

The report is interesting — I recommend it.

October 21, 2019 at 7:00 am Leave a comment

Results from Longitudinal Study of Female Persistence in CS: AP CS matters, After-school programs and Internships do not

NCWIT has been tracking their Aspirations in Computing award applicants for several years. The Aspirations award is given to female students to recognize their success in computing. Tim Weston, Wendy DuBow, and Alexis Kaminsky have just published a paper in ACM TOCE (see link here) about their six year study with some 500 participants — and what they found led to persistence into CS in College.  The results are fascinating and somewhat surprising — read all the way to the end of the abstract copied here:

While demand for computer science and information technology skills grows, the proportion of women entering computer science (CS) fields has declined. One critical juncture is the transition from high school to college. In our study, we examined factors predicting college persistence in computer science and technology related majors from data collected from female high school students. We fielded a survey that asked about students’ interest and confidence in computing as well as their intentions to learn programming, game design, or invent new technology. The survey also asked about perceived social support from friends and family for pursuing computing as well as experiences with computing, including the CS Advanced Placement (AP) exam, out-of-school time activities such as clubs, and internships. Multinomial regression was used to predict persistence in computing and tech majors in college. Programming during high school, taking the CS Advanced Placement exam, and participation in the Aspirations awards program were the best predictors of persistence three years after the high school survey in both CS and other technology-related majors. Participation in tech-related work, internships, or after-school programs was negatively associated with persistence, and involvement with computing sub-domains of game design and inventing new applications were not associated with persistence. Our results suggest that efforts to broaden participation in computing should emphasize education in computer programming.

There’s also an article at Forbes on the study which includes recommendations on what works for helping female students to persist in computing, informed by the study (see link here). I blogged on this article for CACM here.

That AP CS is linked to persistence is something we’ve seen before, in earlier studies without the size or length of this study.  It’s nice to get that revisited here.  I’ve not seen before that high school work experience, internships, and after-school programs did not work.  The paper makes a particular emphasis on programming:

While we see some evidence for students’ involvement in computing diverging and stratifying after high school, it seems that involvement in general tech-related fields other than programming in high school does not transfer to entering and persisting in computer science in college for the girls in our sample. Understanding the centrality of programming is important to the field’s push to broaden participation in computing.  (Italics in original.)

This is an important study for informing what we do in high school CS. Programming is front-and-center if we want girls to persist in computing.  There are holes in the study.  I keep thinking of factors that I wish that they’d explored, but they didn’t — nothing about whether the students did programming activities that were personally or socially meaningful, nothing about role models, and nothing about mentoring or tutoring.  This paper makes a contribution in that we now know more than we did, but there’s still lots to figure out.




October 14, 2019 at 7:00 am 12 comments

An Analysis of Supports and Barriers to Offering Computer Science in Georgia Public High Schools: Miranda Parker’s Defense

Miranda Parker defends her dissertation this Thursday.  It’s a really fascinating story, trying to answer the question: Why does a high school in Georgia decide (or not) to offer computer science?  She did a big regression analysis, and then four detailed case studies.  Readers of this blog will know Miranda from her guest blog post on the Google-Gallup polls, her SCS1 replication of the multi-lingual and validated measure of CS1 knowledge, her study of teacher-student differences in using ebooks, and her work exploring the role of spatial reasoning to relate SES and CS performance (work that was part of her dissertation study). I’m looking forward to flying down to Atlanta and being there to cheer her on to the finish.

Title: An Analysis of Supports and Barriers to Offering Computer Science in Georgia Public High Schools

Miranda Parker
Human-Centered Computing Ph.D. Candidate
School of Interactive Computing
College of Computing
Georgia Institute of Technology

Date: Thursday, October 10, 2019

Time: 10AM to 12PM EST

Location: 85 5th Street NE, Technology Square Research Building (TSRB), 2nd floor, Room 223


Dr. Mark Guzdial (Advisor), School of Interactive Computing, Georgia Institute of Technology
Dr. Betsy DiSalvo, School of Interactive Computing, Georgia Institute of Technology
Dr. Rebecca E. Grinter, School of Interactive Computing, Georgia Institute of Technology
Dr. Willie Pearson, Jr., School of History and Sociology, Georgia Institute of Technology
Dr. Leigh Ann DeLyser, CSforAll Consortium


There is a growing international movement to provide every child access to high-quality computing education. Despite the widespread effort, most children in the US do not take any computing classes in primary or secondary schools. There are many factors that principals and districts must consider when determining whether to offer CS courses. The process through which school officials make these decisions, and the supports and barriers they face in the process, is not well understood. Once we understand these supports and barriers, we can better design and implement policy to provide CS for all.

In my thesis, I study public high schools in the state of Georgia and the supports and barriers that affect offerings of CS courses. I quantitatively model school- and county-level factors and the impact these factors have on CS enrollment and offerings. The best regression models include prior CS enrollment or offerings, implying that CS is likely sustainable once a class is offered. However, large unexplained variances persist in the regression models.

To help explain this variance, I selected four high schools and interviewed principals, counselors, and teachers about what helps, or hurts, their decisions to offer a CS course. I build case studies around each school to explore the structural and people-oriented themes the participants discussed. Difficulty in hiring and retaining qualified teachers in CS was one major theme. I frame the case studies using diffusion of innovations providing additional insights into what attributes support a school deciding to offer a CS course.

The qualitative themes gathered from the case studies and the quantitative factors used in the regression models inform a theory of supports and barriers to CS course offerings in high schools in Georgia. This understanding can influence future educational policy decisions around CS education and provide a foundation for future work on schools and CS access.

October 7, 2019 at 7:00 am 1 comment

Task-specific programming for and about computing education (Precalculus TSP Part 5 of 5)

I am exploring task-specific programming as a direct outgrowth of my work on GaComputes, ECEP, and ebooks. I’ve worked hard at helping computing education to grow in the US, but it’s not growing much (see my September Blog@CACM post for stats on that). There are too few people learning with the power of computing. It’s because we make programming so hard. We need to make programming more accessible, and one way to do that is to make it easier.

Why do we need to make it more accessible? My answer is: in order for people to use computer science for learning everything else. In 2009, when Matthias and Shriram wrote “Why computer science doesn’t matter” (see paper here), I hated it. Of course, computer science matters! Now I realize that they’re right. Nobody gets turned away from college admissions because they didn’t have high school CS. MANY students get turned away because they can’t pass Algebra 1. Other students don’t finish their degrees because they can’t get past Calculus. This other stuff really matters. I believe that we can use programming to help learn the stuff that really matters.

A key insight for me is that what students really use in Bootstrap:Algebra or even in Scratch is a small piece of programming. (I talked about this a good bit in my SIGCSE keynote.) We can reduce how much of programming we teach and still get huge benefits. Essentially, the students in Scratch and Bootstrap:Algebra are doing task-specific programming. I’m just going one step further to strip away even the trappings of a more general programming language. I’m making it as small as I can (but large enough to cover a learner’s task), so that we can increase usability, and thus increase the probability that we can apply programming to improve learning outcomes in other disciplines.

But it’s still programming, so the insights and theories of computing education research (CER) deeply influence this work on task-specific programming. In turn, task-specific programming offers the opportunity to ask some of our CER questions in new contexts. Here are two examples.

Notional Machines

At the Dagstuhl Seminar on Notional Machines (see post by Ben Shapiro), there was a key moment for me. Someone said something there about “Part of the notional machine for algebra.” I stopped and went all academic on them. “Wait a minute — if that’s a real rule used for evaluating algebra, then it’s not a notional machine. Notional machines are simplifications. That’s real algebra, not a notional machine.” There was a bit of a fight after that. It’s kind of a blur now.

In my two prototypes, I want the mathematics to be the notional machine. The notional machine for the image filter builder is matrix arithmetic and scalar multiplication. Underneath, it’s doing something more complicated, but I want students to completely understand what’s going on in terms of matrices.

The notional machine for the texture wave builder is a bit more complicated. My goal is for the notional machine to be just the wave function, but it’s a bit more than that. It’s also how the wave function maps to RGB values in a picture, and I’m actually not sure I have it right yet. If you have a wave where you just manipulate red here, and a wave that manipulates gray there (where red=green=blue at all pixels), then how do I combine the red component with the gray component in some reasonable way? I’ve tried a few ways already. I’ve thought about adding another task-specific language, just to let the students specify the mapping.

Of course, these are really simple programming models (no variables, no user-defined functions), so the notional machines are really simple, too. As much as possible, the notional machine is the context itself — math, or math+graphics. When does learning this notional machine help you learn other notional machines later?

And what have you learned if you learn those? Does task-specific programming help you learn more within the task domain? I hope that learning the matrix notional machine for image filters helps you with matrix manipulation later. Do students really learn precalculus from these prototypes?

If you learn the notional machine for task-specific programming, does that help you learn other notional machines later? There still is a computational notional machine embedded in there, e.g., about controlling the computational agent, about order of execution, and so on. Does that knowledge transfer to other computational contexts?

Structure-behavior-function models

My student Katie Cunningham is studying the use of structure-behavior-function (SBF) models for understanding how students come to understand programs. (I defined SBF models here). In short, this theoretical framing helps us understand the relationships between students learning to read code, to write code, to trace code, and to explain code in plain English.

Task-specific programming doesn’t fit the same way in that model. There is no writing of code. There is structure to the programs, but more of it is embedded in the environment than in the textual language. One of the insights from the participatory design sessions that we’ve had with teachers is that the environment is so much more powerful than the language. Consider the statement in my wave texture generator Set Gray to 4sin(5(x-3))+0. That does completely define the structure and transformation. However, the below picture is is so much more powerful and is what students really see — multiple, linked representations that explain that one line of code:

Behavior is complicated. As I said above, I want the behavior to be the notional machine of the mathematics. To trace the operation above, a student might plug in values for X to see what Y is generated, and check the plot and the wave to see if it makes sense. But it’s not like variable tracing.

But the explain in plain English task of figuring out the function is still there. Check out this image filter program:

Readers who know Media Computation or graphics will likely recognize that as the program to compute the negation of an image. How do we help students to do that? How do we help students to see the program and figure out what it does at a macroscopic level? I built tools into the wave texture builder to make it possible to see the role of each wave in the overall texture, but if you were to describe a texture as a “tightly-woven red and green plaid,” I’m not sure how you’d get that purpose/function from the definition of the waves The problem of figuring out the function is pretty much the same in task-specific programming.

Where to go from here

So this is the end of the series. I’ve described two prototypes for task-specific programming in precalculus (matrix transformations and wave functions), and explored the implications of task-specific programming for research about programming, in education, and in relation to computing education research (this post).

I did these as blog posts, in part, because I’m not yet sure where I might publish and fund this work.

  • Most learning sciences work focuses on students. I’m focusing on teachers first.
  • Most CS education work focuses on learning about CS, especially programming. I’m focusing on using CS programming for learning something else.
  • Most programming languages work focuses, well…on languages. I’m focusing on programming where languages are a second-class citizen.
  • Most work on CS in K-12 is focused on either computational thinking or teaching standalone CS classes. I’m focusing on integrating computing into classes with a goal of reducing computational thinking as much as possible.
  • Most NSF funding in CS Education is tied to work with schools and districts (RPP), and is about CS integration in elementary school and CS-specific classes in high school (STEM+C).  I’m doing design work with teachers for CS integration at the high school level.
  • There is funding (like NSF DRK12 and Cyberlearning) for developing interesting technology for learning, but I’m at the design stage. DRK12 has exploratory grants, but the funding level is too low to pay for my collaborators and my students. How do you get something like this started?

I’m seeing more clearly the point that Greg Nelson and Amy Ko talked about at ICER last year (see paper here). This is design-first work. It’s hard to find a home for that.

I’d appreciate your advice. Where is there a research community that’s concerned about these kinds of things? Where should I be publishing this work? Where should I be looking for funding?


October 4, 2019 at 7:00 am 2 comments

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

Join 10,184 other subscribers


Recent Posts

Blog Stats

  • 2,049,218 hits
October 2019

CS Teaching Tips