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.
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:
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.
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:
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.
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, 513522; http://doi.acrn.org/10.1145/1753326.1753402
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, 2330; http://doi.acm.org/10.1145/1839594.1839600
The Digital Library is published by the Association for Computing Machinery. Copyright © 2011 ACM, Inc.
No entries found