Accessible Coding in Education
What Is Computer Coding?
Coding is the art and science of making a computer do what we want it to do. Programmers “code” when they use special computer languages to create a set of instructions that can be carried out by a machine in order to perform some specific task.
Programming a computer is like baking a cake. The baker is the programmer, the recipe is the software (as with cooking the baker/programmer can change the recipe and add “ingredients” to improve/change the end result). The Integrated Development Environment (IDE), which enables the programmer to create new computer programs, functions as the mixer and cooking utensils. The oven is the compiler that creates the final program to be “consumed” when finished. The compiler translates the program from the “code” that is understandable to the programmer to a form that is understandable to the computer. The result is a delicious cake, which is the feature-rich program that makes the computer perform useful tasks.
There are a number of computer languages that the programmer can choose from, each of which are optimized for a desired purpose. The job of the programmer is to select the best language to accomplish the task and write a set of instructions that the computer will follow to complete the task. Most languages are text-based – for example, Ruby, Java, and Python – while a few are graphical in nature, such as Blockly.
Accessible coding instruction in the classroom teaches students how to code by leveraging accessible methods, tools, and programming languages. This chapter will focus on teaching coding in an accessible manner rather than how to produce accessible software. Throughout this chapter, the termscode/coding and program/programming are used interchangeably – both refer to the process of writing computer software. In addition, computer science (CS) will be used as a general discipline in education where coding is primarily used.
Why is Coding Important?
An increasing number of businesses rely on computer programming. Software engineers could just as easily find themselves working in a bank or at an automotive manufacturer as they could at a big engineering company like Google or Apple. A new report from Burning Glass, a job market analytics company, found that there were as many as seven million job openings in 2015 in occupations that required coding skills. They also found that programming jobs overall are growing 12% faster than the market average (Burning Glass, 2016). In his 2016 State of the Union Address, then President Barack Obama stated that “in the coming years, we should build on that progress, by offering every student the hands-on computer science and math classes that make them job-ready on day one.”
In both government and industry, a workforce with computer skills is increasingly becoming a necessity. As a result, programming instruction is beginning to start earlier, with students being exposed to computers from the moment they enter preschool and continuing throughout their education. No longer are schools teaching only the three Rs (reading, writing, and arithmetic); there is a fourth: programming / algorithms.
As schools’ scramble to add computer classes into their curriculum, accessibility is often an afterthought not only for computer workstations, but also in the case of how programming is taught to students with various disabilities. We will delve into these areas to uncover some of the accessibility potholes that can be avoided so that all students can gain this important skill that is essential in today’s extremely competitive job market. Students who are unable to use a computer are at risk of falling behind and missing out on employment opportunities. “Kids are waking up,” said Ed Lazowska, the Bill & Melinda Gates Chair in Computer Science & Engineering at the University of Washington. “Every field is becoming an information field, and if you can program at a level beyond an intro course, it’s a huge value to you.” (Soper, 2014)
Who Is Working on This?
According to recently released analysis from the Georgia Institute of Technology, 54,379 high school students took the Advanced Placement (AP) Computer Science exam in the United States in 2016, which sets a new record. That number reflects a 17.3% increase over 2015 and has been averaging a 20% increase year after year for the past five years (Georgia Tech, 2016).
There are a number of organizations, clubs, businesses, teachers, and individuals working on bringing coding to the classroom, some of whom are going one step further to ensure the curriculum is accessible. The National Science Foundation has invested millions of dollars to promote computer science programs in K-12 education. Computer programming instruction may start in preschool and continue through elementary, high school, and post-secondary schools, but learning how to program is not restricted to the classroom. There are a number of “boot camps” and summer programs that teach learners of all ages how to program. Some examples are:
- CSforAll Consortium – A hub for the national Computer Science for All movement, which strives to enable all students in grades K-12 to achieve CS literacy as an integral part of their educational experience.
- Hour of Code – Global effort to bring one hour of computer programming into the classroom to stimulate this field of study. Hour of Code has engaged 10% of all students in the world and provides the leading curriculum for K-12 computer science in the largest school districts in the United States.
- Girls Who Code – National nonprofit organization dedicated to closing the gender gap in technology. There are more than 150 Girls Who Code clubs across America with the goal of teaching one million girls to code by 2020.
- Made with Code – A Google initiative to encourage women to pursue a career in computer science. This program uses a block-level language with an interactive online coding environment.
- Khan Academy – An educational resource for students containing free instructional YouTube videos that teach a variety of math and science topics, which offers multiple online supplemental educational materials including examples, interactives, and techniques for students.
- Udacity – An educational resource containing both free and paid instructional YouTube videos that teach a variety of topics. Udacity offers multiple online supplemental educational materials useful for both students and professionals.
Challenges and Opportunities for Students with Disabilities
Teaching accessible computer programming has some unique challenges as well as tremendous opportunities for students with disabilities. With technology changing so fast, accessibility has always been playing catch up which makes using the latest technology challenging for inclusive teaching. In a 2017 StackOverflow survey, 2.7% of professional computer software developers identified as having a disability(StackOverflow, 2017), and non-profits like Teach Kids Unlimited have found that a growing number of students with disabilities like autism have a proclivity towards engineering.
While technology companies are working to make easy-to-use graphical user interfaces for programming, students with visual impairments may face challenges in using those interfaces. Additionally, some of the more complicated developer environments can be daunting for younger students or students with cognitive disabilities. Teachers also need to be considerate of how they display information in teaching kids with disabilities. For example, an instructor presenting a pictorial representation of an algorithm may also need to provide a textual and/or auditory description of that material for students with visual impairments. The good news is multimodal representation of an algorithm that includes images, text, and sound can benefit all students regardless of disability.
This technology requires the user to drag and drop components that may present challenges for students with visual impairments and fine motor issues. Additionally, this technology can be time consuming, thus creating strain on students with cognitive disabilities.
Computer programming can be done by individuals or as part of a team. When collaborating with others on a software project, multiple tools are used to coordinate work, from a code repository such as GitHub to a real-time collaboration messaging system such as Slack. These tools must also be evaluated to ensure they will meet students’ individual needs, or else they in of themselves can become barriers to students being able to complete their work alongside peers.
“Coding is the most important language in the world right now” (Nakatsu, 2015). The ability to code can level the playing field and allow all students equal access to post-secondary and future career opportunities. For students with disabilities like attention deficit disorder, autism, and learning disabilities, the ability to code can provide opportunities to build self-esteem, higher-order thinking, organizational skills, and socialization (Vidcode, 2016).
There are numerous resources that can help with accessibility in teaching and learning computer programming. Some examples include:
- Myna Project lets students with physical disabilities use voice command and controls to program.
- Deaf Kids Code provides tools that encourage deaf/ hard of hearing students to pursue careers in STEM and computer science.
- AccessCSforAll from the University of Washington creates accessible tools and curriculum for teachers to integrate into their classrooms.
- AccessComputing, also from the University of Washington, is an alliance that supports students with disabilities who are pursuing computing degrees and provides support for educational institutions and industry to help them be more accessible and welcoming for students with disabilities.
- The DIAGRAM Center webinar, “Computer Science for All Through Inclusive Design,” discusses how computer programming can be done in an inclusive way.
Teachers looking for an accessible computer language with a fully accessible Integrated Developer Environment (IDE) can refer to Quorum. For example, see Figure 2 for a simple Quorum program written in the accessible SODBeans (Sonified Debugger) IDE.
Figure 2. SODBeans accessibility module for Netbeans IDE
In this example, “Hello World” is displayed on the console three times. Quorum allows the programmer to specify that the output should be spoken aloud in addition to being displayed in text. This can be extremely helpful to a visually impaired programmer who is trying to track down bugs in code or just include speech output in a program. Other programming languages would require extra code and text-to-speech libraries in order to voice the output automatically.
With a little work up front to ensure that the tools and software are accessible for all students, the benefits for students with disabilities will be immense. They will have a level playing field with their peers and have the ability to be creative and make something incredible on their own. Once they master the mechanics of how to interact with the computer’s development environment – whether through voice input, keyboard, mouse, or puff switch – they will only be limited by their imaginations.
Examples of Teaching Accessible Programming
It is exciting to see teachers who have created their own materials to teach their students how to program in a way that meets their accessibility needs. Here are a few noteworthy examples:
- Richard Ladner, now retired, taught accessible computer science at the University of Washington and is still an active voice in this community. He is an advocate for accessible programming in education with programs like AccessCSforAll, which is now developing a fully accessible AP Computer Science Principles course and training teachers at schools for blind, deaf, and learning disabled to teach the course.
- Andreas Stefik, from the University of Nevada, Las Vegas, is the creator of the Quorum Language and a leader of AccessCSforAll.
- Sarah Ciras teaches accessible computer science at the Landmark School in Massachusetts that serves students with dyslexia and other language-based learning disabilities in grades 2-12.
- Maya Israel is a professor of Special Education at the University of Illinois who has worked on including students with disabilities in computing courses.
- Sarah Wille is a researcher at Outlier Research and Evaluation at the University of Chicago who also works on including students with disabilities in computing courses.
- Sina Bahram, a 2012 Whitehouse Champions of Change recipient and co-chair of the DIAGRAM Developers working group is founder of Prime Access Consulting, Inc., which uses principles of universal design to help people make digital products and services equally available to everyone.
- Mario Konecki is an Assistant Professor at the University of Zagreb in Croatia who created GUIDL (Graphical User Interface Description Language). GUIDL enables the visually impaired to create graphical user interfaces and learn programming.
- At the Center for Game Science at the University of Washington students create educational games that automatically adjust to the player’s abilities.
Story from the Field
For one high school Junior with reading fluency issues, text- based tutorials presented challenges in learning how to code. He struggled with attention so it was difficult for him to focus for the necessary amount of time. His teacher used a variety of techniques to support his learning. She modified the classroom to provide a standing desk and a variety of hands on-activities within the classroom. This provided better freedom of movement and a better kinesthetic experience that helped him focus.
Although this student was highly motivated to learn new skills, the modifications made by his teacher and the accommodations in the programs opened doors for him that were previously closed. Coding gave him confidence and a sense of pride in his work as well as valuable job training skills.
Computer science teachers need to incorporate accessible workflows into their classrooms, from teaching the initial concept and design in a multimodal way to providing an accessible development environment that allows all students the opportunity to participate and excel.
With federal government support and increased demand for a workforce with coding skills, computer science is one of the most important growth areas in education. Now with the Section 508 Refresh aligning with Level AA Conformance to Web Content Accessibility Guidelines (WCAG) 2.0, computer software will need to be accessible, as will the development environments to build accessible programs.
A critical takeaway behind the motivation to ensure that computer science and programming are accessible is that persons with disabilities must be part of the creation of assistive technologies and solutions designed for them. By making programming accessible, we guarantee that an audience that may benefit enormously from having access to technology is able to use this access to help devise solutions most appropriate for their own needs.
- Ensure that pictures, diagrams, flowcharts, and the like are accessible by having alternative representations available for students who may need them.
- It may be worth familiarizing yourself with Quorum and the accessible IDE SODBeans to determine if these tools are applicable to your students.
- Ensure all tools and collaborative environments surrounding the coding experience are accessible.
- If the desired coding tool/environment is not accessible, consider writing the author to see if anything can be done to make it more accessible.
- Find out what accommodations the teachers have available that can meet your child’s needs regarding an accessible computer environment.
- Identify various accessible tools that your child could use and discuss them with teachers and/or administrators.
- Find out if the accessible development environment can be installed on a home computer and if your child can access the accessible workstation at school if extra time is needed to complete programming projects.
- If the school uses any software that is not fully accessible, consider working with your child and school to approach the developer to request the accessibility features needed.
- Learn everything you can about your assistive technology, including how to modify it and build simple scripts to interact with inaccessible components.
- Inquire ahead of time what tools will be used in the classroom so you can become familiar with them at home.
- Research any workarounds others have done to make the development environment more accessible. It may be worth finding out what tools coders use as you may find some accessibility plugins (such as the Bootstrap accessibility plugin) that could save you time and effort.
- Write to the author of your development environment, and ask them to improve its accessibility if needed
- Burning Glass. (2016, June). Coding Skills. Retrieved August 17, 2017, from http://burning-glass.com/research/coding-skills/
- Georgia Tech. (2016, December 07). Georgia Institute of Technology School of Computer Science. Retrieved August 25, 2017, from https://www.scs.gatech.edu/news/584765/analysis-2016-ap-computer-science-testing-reveals-ongoing-need-qualified-high-school
- Nakatsu, T. (2015, January 27). Getting Smart on Coding for College & Career Readiness. Retrieved August 15, 2017, from http://www.gettingsmart.com/publication/getting-smart-coding-college-career-readiness/
- Soper, T. (2015, February 21). Analysis: The exploding demand for computer science education, and why America needs to keep up. Retrieved August 17, 2017, from https://www.geekwire.com/2014/analysis-examining-computer-science-education-explosion/
- Stack Overflow Developer Survey 2017. (n.d.). Retrieved August 17, 2017, from https://insights.stackoverflow.com/survey/2017 – developer-profile-disability-status
- The State of the Union Address. (2016). Retrieved July 24, 2017, from https://obamawhitehouse.archives.gov/blog/2016/01/30/computer-science-all.
- (2016, April 1). Coding Allows Learning Disabled Students to Shine [Web log post]. Retrieved July 27, 2017, from http://www.huffingtonpost.com/vidcode/coding-allows-learning-di_b_9586838.html
- Getting Smart on Coding for College & Career Readiness
- 10 Ways to Teach Computing Using a Deck of Cards
Scholarly Publications on Accessible Computing in Education
- Ladner, R. E., & Israel, M. (2016). For all in computer science for all. Communications of the ACM, 59(9), 26-28. DOI: https://doi.org/10.1145/2971329
- Stefik, A. M., Hundhausen, C., & Smith, D. (2011). On the design of an educational infrastructure for the blind and visually impaired in computer science. In Proceedings of the 42nd ACM technical symposium on Computer science education (pp. 571-576). ACM. DOI: http://dx.doi.org/10.1145/1953163.1953323
- Kheir, R., & Way, T. (2007). Inclusion of deaf students in computer science classes using real-time speech transcription. ACM Sigcse Bulletin, 39(3), 261-265. DOI: http://dx.doi.org/10.1145/1269900.1268860
- Balik, S. P., Mealin, S. P., Stallmann, M. F., Rodman, R. D., Glatz, M. L., & Sigler, V. J. (2014). Including blind people in computing through access to graphs. In Proceedings of the 16th international ACM SIGACCESS conference on Computers & accessibility (pp. 91-98). ACM. DOI: http://dx.doi.org/10.1145/2661334.2661364
- Konecki, M., Lovrenčić, S., & Jervis, K. (2016). The use of Assistive Technology in Education of Programming. In The 2016 ICBTS International Social Sciences and Education Research Conference in Boston. http://www.ijbts-journal.com/images/column_1468910554/Binder1(Tract1)%20Boston%202016.pdf
- Konecki, M. (2014). GUIDL as an aiding technology in programming education of visually impaired. Journal of Computers, 9(12), 2816-2821. http://www.jcomputers.us/vol9/jcp0912-08.pdf
- Konecki, M. (2012). A new approach towards visual programming for the blinds. In MIPRO, 2012 Proceedings of the 35th International Convention (pp. 935-940). IEEE. http://mipro-proceedings.com/sites/mipro-proceedings.com/files/upload/cts/cts_027.pdf
- Stefik, A., Alexander, R., Patterson, R., & Brown, J. (2007). WAD: A feasibility study using the wicked audio debugger. In Program Comprehension, 2007. ICPC’07. 15th IEEE International Conference on (pp. 69-80). IEEE. http://ieeexplore.ieee.org/document/4268242/
- Coding Allows Learning Disabled Students to Shine http://www.huffingtonpost.com/vidcode/coding-allows-learning-di_b_9586838.html
A number of factors go into selecting a computer language to use. Some languages like Java can run on different platforms, but others are specific to a particular device or operating system. Certain languages are best suited for web or mobile, whereas others are optimized for database manipulation or enterprise deployment. Below are some of the more popular textual, graphical, and accessible computer languages.
- Scratch is a program where you can create your own interactive applications consisting of animations, stories, and games and share it online
- Can be made accessible with Myna
- Scratch Blocks Jr (for 5-7 year olds)
- Block-based type of graphical programming environment that can create Arduino programs.
- A graphical programming environment based on Scratch 2.0 open source code that makes it easy to program Arduino projects and create interactive applications.
- Learn programming and robotics in a very simple way.
Quorum Version 5.0 (Released June 2017)
- Easiest to understand computer language.
- Universally designed for all users including screen reader users. It has an accompanying integrated development environment (IDE) that is also accessible.
- Designed for those with visual impairments and opens the world of computer programming and computer science to this group. Quorum is evidence oriented and has an easy to understand syntax.
- Created by Emanuel Shanzer
- Block level language made accessible
- Works on a Chromebook without a screen reader
- Vocal user interface to Scratch
- Created by MIT
- Speech Command and Control with Scratch
- YouTube demo using Myna from Amber Wagner at University of Alabama
GUIDL (Graphical User Interface Description Language)
- Created by Mario Konecki (University of Zagreb, Croatia)
- Assists visually impaired students in creating graphical user interfaces and in their programming education.
Accessible Coding Tools
There are a multitude of scripts, plugins, and tools that make different coding-related tasks accessible. What typically happens is if something is not accessible, someone creates an accessible workaround or hires someone to create something. There are a number of JAWS (Job Access With Speech) screen reader scripts to make different editors, IDEs, and tools accessible, but the challenge is to find them. There are also a number of tools for the NVDA screen reader that make coding easier in various editors, including the notepad++ addon, and options built in to report and sonify indent. There are also a number of tools, independent of screen readers, many programmers use, which strive to make an accessible coding experience, such as Visual Studio code.
- JavaSpeak – a set of accessibility plugins for Eclipse IDE that features keyboard shortcuts, audio cues, automatic focus to debugging console, contextual messages, and more.
- WAD (Wicked Audio Debugger) – an audio debugger for Visual Studio
- Reference page for using the R programming language with a screen reader, Courtesy of Jonathan Godfrey.
Developers use code repositories to store code and track changes. These useful tools allow you to roll back your malfunctioning code a point where it was working and troubleshoot the change that caused the errors. They also allow you to have multiple branching codepaths, so you can work on separate features at the same time.
- GitHub (free unlimited users for Open Source Projects)
- SourceForge (free unlimited users Open Source Projects)
- BitBucket (free for 1-5 users)
- Git (Version control system)
- SVN (local repository)
- Pip (python package manager)
- Gem (For ruby)
- Apt-get, yum, packman, for installing on linux
- Cran (For r)
- Cargo (For rust)
- Make (For building code)
- CMake (For building code)
- Scons (for building code)
The actual coding of a program is only one small part of a larger network of pieces that all need to work together to facilitate a satisfactory result. This network includes the actual coding environment, a code repository, collaboration channels for product design, develop, debug, and test, and ultimate deployment. Addressing accessibility needs at each of these points will be crucial for every student to have a similar experience regardless of disability.
Granted, in a school setting some of these tools may not be needed initially, but as the software projects become more challenging, equal access to these tools will be crucial so that all students can complete projects within the same timeframe.
- Accessibility issues with Slack
- Blog post about why you should use Slack
- Trello: used for boards and organization
- ChatZilla –Firefox plugin
- Miranda (IRC, and other chat protocol client)
- Pidgin (although it is not accessible on Windows at the time of this report)
- Gitter – Chat client to get information; NVAccess, for example, uses Gitter
- Google Docs
- DropBox – file sharing
- Stack Overflow – Great resource for accessible programming help
- Twitter – #developer is an online community to answer questions
Bug / Feature Tracking Software
As students progress to more sophisticated projects, bugs will eventually find their way into the code. Bug / feature-tracking software is a useful tool for project managers and developers to track items under development.
- JIRA – accessibility issues may be resolved using Unstoppable
- Github (Accessibility issues may be mitigated with axSGrease from NV Access)
Graphical User Interface IDEs can be a challenge for students with visual impairments. Most computer languages, however, can be written in a simple text editor, and by using the command line, the program can be compiled manually and executed directly. This approach does slow down development, especially when dealing with dozens of files in multiple directories. New IDEs such as Eclipse allow programmers to modify functions and variables, refactor the code with one command, and automatically update all references throughout the program. In contrast, completing those tasks in a simple text editor can be error prone and time consuming.
- Eclipse -accessible but very complex due to its size)
- SODbeans – accessible module for NetBeans with support for Quorum
- Visual Studio – Microsoft Windows development environment primarily for C++ and Visual Basic programming with a number of built-in accessibility features
- 50 best resources for learning to code
- Lego Robotics – Great way to learn to program and make a robot move and do certain tasks
There are many different aiding technology solutions available that can help students with different impairments to use computers, such as:
- ZoomText – screen magnifier/reader
- JAWS for Windows – screen reader/magnifier
- NVDA (NonVisual Desktop Access) – free screen reader
- Balabolka – free screen reader
- Thunder – free screen reader
- Kurzweil 3000 – document scanner and reader
- PowerTalk – free Power Point presentation reader
- WebAnywhere – free Web page reader
- Read & Write Gold – text reader
- WebbIE – free screen to text translator, works with any screen reader
- Duxbury Braille Translator – text translator to Braille
- Dragon Naturally Speaking – speech recognition
- Livescribe Pen – free audio recorder, handwritten text recorder
Standards for Accessibility
Standards are incredibly important for accessibility. The World Wide Web Consortium (W3C) produces most of the standards for the Web, but some of these standards and guidelines are also being applied to digital publishing in EPUB files and computer applications. The U.S. government also produces accessibility standards that government agencies and those receiving federal funding must follow.
W3C WCAG 2.0 – Web Content Accessibility Guidelines (WCAG) 2.0 cover a wide range of recommendations for making Web content more accessible.
Section 508 – an amendment to the U.S. Workforce Rehabilitation Act of 1973 is a federal law mandating that all electronic and information technology developed, procured, maintained, or used by the federal government be accessible to people with disabilities.
Section 508 Refresh – adoption of WCAG 2.0 AA for Web, Software and Electronic Documents (“content”) – New or altered software (native apps, applications, LMS, etc.), web (websites, webpages, web apps), and digital content (documents, official agency communications, media and data) as well as digital content on mobile devices has to comply with WCAG 2.0 AA.