Tracking @stemxcomet: Teaching Programming to Blind Students via 3D Printing, Crisis Management, and Twitter
Shaun K. Kane, Jeffrey P. Bigham · 2014 · ACM Technical Symposium on Computer Science Education · doi:10.1145/2538862.2538975
Summary
This paper describes the design and execution of a four-day programming workshop for blind and visually impaired high school students, conducted as part of the National Federation of the Blind's STEM-X summer science camp. Nine students (grades 8-12) learned Ruby programming through an engaging narrative: tracking a fictional comet (ISON) approaching Earth by analyzing geotagged Twitter data and creating 3D-printed tactile visualizations of the data. The authors chose Ruby for its screen reader compatibility — its syntax uses identifiable English keywords like "if", "then", and "end" rather than the whitespace-based indentation of Python, which is difficult for screen readers to convey. Students used MacBook Pros with VoiceOver, writing code in TextEdit and running it in the Terminal via Ruby's interactive interpreter (irb). The instructors created custom library functions in four categories: Twitter API wrappers, geocoding functions, data visualization (interactive accessible maps on iPad), and 3D printing (generating OpenSCAD models from tweet data). Students progressed from basic Ruby syntax to querying the Twitter API, geocoding tweet locations, generating interactive map visualizations explorable via VoiceOver, and finally producing 3D-printed tactile maps (credit-card-sized, approximately 1 hour each to print on a MakerBot Replicator).
Key findings
Students were generally successful at writing Ruby programs using the terminal and irb interpreter, though several screen reader interaction challenges emerged. Keeping track of code scope was difficult without visual cues — students added comments like "# end of function" to mark block endings. VoiceOver keyboard shortcuts conflicted with terminal navigation, causing confusion. Ruby's irb interpreter was pronounced "urb" by VoiceOver, leading to frequent misspellings. The "-" character was always read as "minus" regardless of context (arithmetic, command flag, or negation), creating confusion. Students were notably more excited about the 3D-printed tactile graphics than the iPad-based interactive visualizations, even students who did not read Braille were eager to explore the 3D-printed Braille. An unplanned but significant outcome was students creatively using VoiceOver as musical instruments — adjusting speech rate, voice, and sounds to create performances — demonstrating engagement with assistive technology beyond its intended use. The high instructor-to-student ratio (6 instructors for 9 students) was beneficial but students could also make independent progress when instructors were unavailable.
Relevance
This paper offers practical insights for anyone designing programming education for blind students. The choice of programming language matters significantly — Ruby's English-like keywords and explicit block delimiters are more screen reader-friendly than Python's whitespace indentation. The approach of connecting programming to tangible, tactile output via 3D printing provides blind students with a compelling alternative to the visual feedback (GUIs, graphics) that dominates mainstream introductory programming. For accessibility practitioners and educators, the key takeaways include: test all instructional materials with a screen reader before use; provide library functions that let novices quickly build interesting applications; use real-world data and narrative contexts to motivate programming concepts; and consider 3D printing as both a programming output medium and a tool for Braille literacy. The paper also highlights that current screen readers still handle programming poorly — character pronunciation, scope tracking, and keyboard conflicts remain barriers that the accessibility community should address.
Tags: accessible programming · computer science education · blindness · visual impairment · 3D printing · tactile graphics · screen readers · data visualization