Opinion
Computing Applications Education

Reaching Learners Beyond Our Hallowed Halls

Rethinking the design of computer science courses and broadening the definition of computing education both on and off campus.
Posted
  1. Introduction
  2. An Example in Graphic and Web Design
  3. Roles for Educators
  4. References
  5. Author
  6. Footnotes
Reaching Learners Beyond our Hallowed Halls illustration

The vast majority of our efforts in computing education revolve around formal learning environments. By virtue of where computing courses and programs are offered, much of our work is centered on the undergraduate curriculum in colleges and universities. Recently, increased attention has been given to computing education throughout elementary and secondary education in efforts to broaden participation in the field and address concerns about the student pipeline. However, by focusing exclusively on these formal settings, we may be missing an opportunity to reach the millions of people who find computing outside of academia’s hallowed halls and are left to teach themselves through informal educational activities.

In this column, I focus on adults actively working in a traditionally noncomputing discipline who, nonetheless, develop scripts or programs as part of their activities. These end-user programmers provide a canonical example of people engaged in informal computing education. Examples include accountants who write spreadsheet formulas and macros, biologists who create programs to simulate models or facilitate data analysis, and graphic designers who produce scripts to automate repetitive and tedious tasks. Disciplinary differences aside, a common characteristic of people in these examples is that their formal academic training is in something other than computing. Their knowledge of the computing fundamentals, and more specifically programming, is built largely from self-taught experiences and advice from peers.


These end-user programmers provide a canonical example of people engaged in informal computing education.


Why should we be interested in these domains? At the very least, these informally trained individuals account for a substantial portion of the "computing pie." Estimates for the U.S. suggest there will soon be more than 13 million self-described programmers in the workplace, compared to fewer than three million professionally trained programmers.5 The difficulties of learning to program are well documented, and informal learners are left to grapple with these challenges in an environment very different from what best practices in education recommend. We have the same concerns for these programmers as we have for those who are professional software developers. For example, do they create correct, robust, and reusable programs? Put simply, software written by informally trained programmers has a user base, and coding mistakes can cost valuable resources. The educational and training needs of this significant group of learners appear largely underserved by academic institutions today.

Back to Top

An Example in Graphic and Web Design

Over the course of the last five years, my colleagues and I have conducted a series of studies to better understand how to support the educational needs of a group of informally trained programmers. We have focused our attention on professional graphic and Web designers who actively write code in some aspect of their job.3 With educational backgrounds rooted in art and visual communication (and notably, very little STEM), the participants in our studies represent a unique outer bound of those who have a need for computing/programming later in life. It seems quite natural to require programming instruction for engineering majors, but rarely are similar requirements considered for art students.

One of the most striking observations about our study participants was the variety of their educational backgrounds. Even though those we interviewed shared similar job descriptions, they were trained in a wide variety of academic disciplines ranging from graphic design (as one might expect) to the humanities and the social sciences. Further, very few of these designers had ever taken a course on programming or scripting as part of their secondary, post-secondary, or even professional development activities. An intriguing (but admittedly anecdotal) observation was that our participants appeared considerably more gender balanced and ethnically diverse than most demographic data reported for computer science.

Obviously this diversity poses a number of challenges for efforts to address the educational needs of these designers in the future. That aside, we took away two important lessons about current informal learning practices:

  • Example-Driven Learning. The main driver for our participants to learn something new about programming derives directly from the needs of the designer’s current project. Within that context, the designer actively seeks out examples related to the end goal in a somewhat piecemeal fashion. Ideally, the designer learns as he or she sees examples that make use of new programming features. Unfortunately, this doesn’t always happen due to the unavailability of relevant examples, differences between the current goal and that of the example, and the lack of explanation accompanying examples. The explanations found rarely draw out the computer science ideas used, instead favoring specific practical details. Despite the inherent problems and inefficiencies in learning this way, the designers we interviewed consistently preferred learning from code examples to more general resources like books. Of utmost importance, then, is the instructive quality of the examples being used (that is, with good explanations) and how obviously relevant the examples are.
  • The Web as the Primary Resource. Closely related to the role of examples is a heavy reliance on the Internet as the first line of support. Our participants perceived the Internet as a complete resource—anything they might want must be in there somewhere. Given the low cost associated with searching, the Web is an attractive first option when looking for information. However, search results related to programming questions can be difficult to interpret. When asked to read and modify a piece of program code, participants often spent significant amounts of time studying search results that pointed them to irrelevant code written in other programming languages. Sometimes a search might lead a user to a conceptually correct algorithm for their problem but implemented in an unfamiliar language. This dissimilarity may cause the example to be discarded altogether, or cause the learner difficultly in making the necessary adaptations to the current context. The primary issues in using the Web as a resource for informal learning about programming can be tied to difficulties in devising appropriate search terms and judging the relevance of the resulting examples.4

The educational and training needs of this significant group of learners appear largely underserved by academic institutions today.


One underlying cause for these difficulties could be tied to our participants’ lack of sufficient general, abstract knowledge of the computing and/or programming structures at play. When a search based on purely syntactic constructs fails, an expert would fall back to a more general conceptual term (such as "exception handling"). The ability to see similarities between algorithms implemented in different languages often requires an ability to abstract away from the concrete syntax. A recognized problem of highly context-oriented learning, like what informal learners do, is that the resulting knowledge can become context-bound and make it difficult to transfer to or from other similar settings.2 Thus, there is a great opportunity for computing educators to explore how to foster conceptual knowledge growth in such communities while at the same time recognizing existing practices favoring example-driven learning.

In our work, we sought to balance these two issues by creating collections of annotated scripting examples. Each example project presents a solution to a realistic programming task for graphic designers (that is, using the same tools and language). For example, one project creates a script that manipulates image layers in a Photoshop document. The project outlines multiple versions of the script, moving from an iterative solution to a recursive one as a natural response to unexpected results discovered when the script is used on various images.

A key component of our projects distinguishing them from other materials a user might find on the Web is that each project includes a narrative description of the code’s development, explaining relevant programming concepts (for example, recursion) as they are used in context. This narrative interleaves explanations with progressively more complete example code, and failure drives the narrative forward.

Essentially, each project serves as a case study that learners can review to access example code as well as instruction. Our evaluation of this resource has shown that these explicit connections to conceptual content can in fact lead to measurable learning gains for end-user programmers.3 We were able to promote learning by briefly articulating details about concepts as they were used in the code while not negatively impacting the overall usability of the examples for those that did not need the explanations.

Back to Top

Roles for Educators

Our work over the past several years has further convinced us of the importance of educators and others involved in formal educational or training institutions to actively consider the role informal learning is playing in the computing landscape. We see several ways to increase involvement in efforts to support the vast population of adults engaging in informal computing education.


We see several ways to increase involvement in efforts to support the vast population of adults engaging in informal computing education.


First, educators can provide access to the curricular resources already being generated for our classes. Informal learners are often concerned with the reliability and credibility of examples, so our respected, well-known institutions have the opportunity to disseminate high-quality information about computing. MIT’s OpenCourseWare initiative (http://ocw.mit.edu/courses/) is an excellent example. However, given the diversity of the professional domains engaged in end-user programming and their respective differences and contextual needs, it is unlikely that providing online materials alone will be adequate.

We should also actively lead the development of non-traditional educational opportunities offering context-specific courses or seminars that include conceptual instruction in computing. Rather than developing these in isolation, we must reach out and collaborate with groups of informal learners. Many end-user programming activities make use of scripting or programming affordances within commercial software packages, and most cities have active user groups for such software tools. Building collaborative partnerships with these groups to develop, distribute, and disseminate contextualized computing education has the potential to impact many of these previously underserved adult learners.

There remain many open opportunities in this space for computing education and human-computer interaction researchers alike. Among them:

  • We need a better understanding of the information ecologies upon which various end-user programmers rely, so that we can provide useful information in ways that merge with their existing informal learning strategies.
  • New programming environments should be designed that recognize the role of Web search and example code (like Blueprint1). Furthermore, they should be evaluated not only for whether they enable users to complete a script, but also for the degree to which they can promote learning of computing concepts.
  • We can build on the roles that Web-based forums, online communities, and other forms of social media (for example, Twitter, Facebook) play in knowledge exchange among informal learners.

A final charge for educators pertains to the future generation of young professionals. We must rethink the design of our computer science courses to invite students from other disciplines across campus to gain a solid foundation in computing as it pertains to their fields of study. A fundamental aspect of this should be increased interdisciplinary and collaborative educational offerings with other STEM and non-STEM departments. By broadening our own definitions of computing education both on and off campus we might ensure that the next generation has the computational skills and general knowledge needed to succeed in their professions, whatever those professions might be.

Back to Top

Back to Top

Back to Top

    1. Brandt, J. et al. Example-centric programming: Integrating Web search into the development environment. In Proceedings of the 28th International Conference on Human Factors in Computing Systems (CHI '10). ACM, New York, 2010, 513–522; http://doi.acrn.org/10.1145/1753326.1753402

    2. Bransford, J. et al. How People Learn: Brain, Mind, Experience, and School. National Academy Press, Washington, D.C., 2000.

    3. Dorn, B. A case-based approach for supporting the informal computing education of end-user programmers. Doctoral dissertation, Georgia Institute of Technology, 2010.

    4. Dorn, B. and Guzdial, M. Discovering computing: Perspectives of Web designers. In Proceedings of the Sixth International Workshop on Computing Education Research (ICER '10). ACM, New York, NY, 2010, 23–30; http://doi.acm.org/10.1145/1839594.1839600

    5. Scaffidi, C. et al. Estimating the numbers of end users and end user programmers. IEEE Symposium on Visual Languages and Human-Centric Computing, 2005, 207–214.

Join the Discussion (0)

Become a Member or Sign In to Post a Comment

The Latest from CACM

Shape the Future of Computing

ACM encourages its members to take a direct hand in shaping the future of the association. There are more ways than ever to get involved.

Get Involved

Communications of the ACM (CACM) is now a fully Open Access publication.

By opening CACM to the world, we hope to increase engagement among the broader computer science community and encourage non-members to discover the rich resources ACM has to offer.

Learn More