
Teaching Accessible Computing
For computing to work for everyone, it must be accessible to everyone. Alas, it is not: people with disabilities in mobility, vision, hearing, learning, attention, and more regularly face software that is hard or impossible for them to use. One reason for this is that when we educate future software engineers, we rarely teach them anything about accessibility. This limits their ability to find and fix accessibility defects and advocate to their organization to prioritize those fixes. More importantly, it limits the capacity of software organizations to design software that is accessible from day one.
This book addresses this problem by offering concrete pedagogical ideas for educators about how to integrate accessibility into their computer science classes. It teaches basic foundations of accessibility that are relevant to major areas of computer science teaching, and then presents teaching methods for integrating those topics into course designs. Our hope is that computer science teachers will be able to read the first few introductory chapters, and the chapters relevant to their teaching, and use their learning to teach accessible computing in their classes.
This book is a living document! If you’d like to be notified of future updates, or if you’re interested in contributing a chapter in your area of expertise, please let us know through the Teaching Accessible Computing book Interest Form. If you have suggestions for improvement, send them to our lead editor, Alannah Oleson.
Many people contributed time, effort, and expertise to this book beyond just the authors and editors, including those listed in the Acknowledgments chapter.
Chapters
IntroductionFoundations | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Foundations: Disability & AccessibilityFoundations | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Foundations: Teaching InclusivelyFoundations | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Introduction to CS (CS0) + AccessibilityCourses | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Introductory Programming (CS1) + AccessibilityCourses | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Data Structures + AccessibilityCourses | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Web Development + AccessibilityCourses | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Operating Systems + AccessibilityCourses | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Mobile Development + AccessibilityCourses | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Software Engineering + AccessibilityCourses | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Accessible Human-Computer Interaction + Inclusive DesignCourses | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Computing and Society + Design JusticeCourses | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Sustainable Computing + AccessibilityCourses | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Data Science + AccessibilityCourses | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Graphics + AccessibilityCourses | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Security and Privacy + AccessibilityCourses | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Robotics + AccessibilityCourses | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Artificial Intelligence and Machine Learning + AccessibilityCourses | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Computer Vision + AccessibilityCourses | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Final-Year Projects + AccessibilityCourses | function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
Acknowledgments
| function($$renderer5) { $$renderer5.push(`<span class="etc svelte-1tcvxk9">`); Muted($$renderer5, { children: ($$renderer6) => { if (editable) { $$renderer6.push("<!--[0-->"); Toggle($$renderer6, { on: chapter.isForthcoming(), save: (on) => setChapter(edition, chapter, chapter.asForthcoming(on)), children: ($$renderer7) => { $$renderer7.push(`<!---->${escape_html(etc)}`); } }); } else { $$renderer6.push(`<!--[-1-->${escape_html(etc)}`); } $$renderer6.push(`<!--]-->`); } }); $$renderer5.push(`<!----></span>`); } | |
ReferencesEverything cited | ||
GlossaryDefinitions | ||
IndexCommon words and where they are | ||
SearchFind where words occur | ||
MediaImages and video in the book |
Acknowledgements
This book is a labor of love created through the hard work of many people who are passionate about teaching accessible computing. Many (though not all) of them are listed on our Acknowledgements page, and we thank all our community members who contributed their expertise to shaping this resource. This book is freely available due to the support of the National Science Foundation Grant CNS-2137312, which funds the AccessComputing project.
License
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International [Learn more]Want to print this book or generate a PDF? See all chapters on a single page and then print or export. Long books can take some time to render.
E-book
Reading on an e-reader? Build an EPUB of this book. Images are shrunk to fit the size you choose, so pick the one closest to your device. Long books with many images can take a minute.
Citation
Alannah Oleson, Amy J. Ko, Richard E. Ladner (2026). Teaching Accessible Computing. …, retrieved 9/13/2026.
Editions
2nd 4/27/2026 read
The second edition of the book adds three new chapters on how to integrate accessibility into Operating Systems, Sustainable Computing, and Final-Year Projects like theses and capstones.
1st 1/17/2026 read
Launch of the first edition of the Teaching Accessible Computing book, with 16 chapters on how to integrate accessibility topics into CS courses.