You are previewing Learner-Centered Design of Computing Education.
O'Reilly logo
Learner-Centered Design of Computing Education

Book Description

Computing education is in enormous demand. Many students (both children and adult) are realizing that they will need programming in the future. This book presents the argument that they are not all going to use programming in the same way and for the same purposes. What do we mean when we talk about teaching everyone to program? When we target a broad audience, should we have the same goals as computer science education for professional software developers? How do we design computing education that works for everyone? This book proposes use of a learner-centered design approach to create computing education for a broad audience. It considers several reasons for teaching computing to everyone and how the different reasons lead to different choices about learning goals and teaching methods. The book reviews the history of the idea that programming isn’t just for the professional software developer. It uses research studies on teaching computing in liberal arts programs, to graphic designers, to high school teachers, in order to explore the idea that computer science for everyone requires us to re-think how we teach and what we teach. The conclusion describes how we might create computing education for everyone.

Table of Contents

  1. Cover
  2. Title Page
  3. Copyright
  4. Dedication
  5. Contents
  6. Preface
  7. Acknowledgments
  8. 1 What Does Computing for Everyone Mean?
    1. 1.1 Defining Terms: Computing Education, Computer Science, and Programming
    2. 1.2 Why Should Everyone Learn Computing?
      1. 1.2.1 Jobs
      2. 1.2.2 Learn About Their World
      3. 1.2.3 Computational Thinking
      4. 1.2.4 Computational Literacy
      5. 1.2.5 Productivity
      6. 1.2.6 Broadening Participation
    3. 1.3 How Do We Teach Computer Science Now?
      1. 1.3.1 Perspectives of Computer Science Teachers
      2. 1.3.2 Teaching for Software Development Expertise
      3. 1.3.3 Expertise and Authenticity are Socially Determined
      4. 1.3.4 The Inverse Lake Wobegon Effect
    4. 1.4 How Should We Teach Computing for Everyone?
      1. 1.4.1 Learner-Centered Design
      2. 1.4.2 Example: Computational Media at Georgia Tech
    5. 1.5 Overview of the Book
  9. 2 The Challenges of Learning Programming
    1. 2.1 The Rainfall Problem: Programming is Harder Than We Thought
    2. 2.2 Multi-Institutional, Multi-National Studies
    3. 2.3 Measuring Computer Science knowledge
    4. 2.4 How Learning Works
      1. 2.4.1 Assimilation and Accomodation
      2. 2.4.2 Transfer of Knowledge
    5. 2.5 Why Do Students Learn Less Computer Science Than We Expect?
      1. 2.5.1 What Makes Learning Computer Science Different
      2. 2.5.2 Developing a Notional Machine
    6. 2.6 Increasing the Value of Learning Computing
      1. 2.6.1 Situated Learning
      2. 2.6.2 Expectancy-Value Theory
    7. 2.7 What Makes Learning Programming Hard
  10. 3 Computational Thinking and Using Programming to Learn
    1. 3.1 Computers and the World of the Future
    2. 3.2 Computational Thinking
    3. 3.3 Programming as a Tool for Learning
      1. 3.3.1 Smalltalk and Boxer
      2. 3.3.2 Students Building Software to Learn
    4. 3.4 Programming and Problem-Solving Skills
    5. 3.5 Learning Programming to Learn Mathematics and Science
    6. 3.6 Learning About Computer Science When Developing Computational Literacy
    7. 3.7 Summary: Synergy Between Computing and Other Domains
  11. 4 Media Computation and Contextualized Computing Education
    1. 4.1 Teaching One Course For All
      1. 4.1.1 What’s Wrong with One Course?
    2. 4.2 The Design and Development of Media Computation
      1. 4.2.1 Scaffolding in Media Computation
      2. 4.2.2 Offering the First Media Computation Courses
    3. 4.3 Impact of Media Computation
      1. 4.3.1 Impact Within Georgia Tech
      2. 4.3.2 Impact Outside Georgia Tech
      3. 4.3.3 Why Does Media Computation Work, and Where Doesn’t it?
    4. 4.4 A Second Course in Media Computation
    5. 4.5 Design of a Computing Course for Non-Computer Science Majors
  12. 5 Adults as Computing Learners
    1. 5.1 Graphic and Web Designers as End-User Programmers
      1. 5.1.1 Helping Graphic Designers
      2. 5.1.2 Starting From the Learning Challenges
    2. 5.2 The Needs of Computing Teachers as Computing Learners
      1. 5.2.1 Adults Learning Computer Science Online
      2. 5.2.2 What High School Computer Science Teachers Need to Succeed
      3. 5.2.3 Developing the Identity of a Computer Science Teacher
      4. 5.2.4 Developing Online Teacher Education
    3. 5.3 Designing Computing Education for Adults
  13. 6 Learner-Centered Computing Education for Computer Science Majors
    1. 6.1 Multiple Introductory Courses are Useful
    2. 6.2 The “Geek Gene”
      1. 6.2.1 Teaching to Address Differences
      2. 6.2.2 Diverse and Effective Teaching Methods
    3. 6.3 Creating Face-Saving Paths Into Computer Science
    4. 6.4 More Than One Kind of Computer Science
      1. 6.4.1 Threads
      2. 6.4.2 How Computer Science Sudents Make Choices
    5. 6.5 Context Helps Computer Science Majors, Too
    6. 6.6 The Need for Greater Exploration in Computing Education
  14. 7 Steps Toward Computing for Everyone
    1. 7.1 Revisiting Why Everyone Should Learn Computing
    2. 7.2 Teaching Computing in Elementary School
      1. 7.2.1 Why Not Teach Computing in Elementary School
      2. 7.2.2 Why Teach Computing in Elementary School
      3. 7.2.3 Research Questions for Teaching Computing in Elementary School
    3. 7.3 Teaching Computing in Secondary School
      1. 7.3.1 Research Questions for Teaching Computing in Secondary School
    4. 7.4 Teaching Computing to Undergraduates
      1. 7.4.1 Improve Teaching About Computing
      2. 7.4.2 Improve the Tools of Computing
      3. 7.4.3 Create More Researchers in Computing Education
    5. 7.5 Conclusion: Learner-Centered Design of Computing Education
  15. Bibliography
  16. Author’s Biography
  17. Index