Version 3 Feedback

Posted

Version 3 of How to Teach Programming (and Other Things) is now kinda sorta maybe ready for feedback: if you have time to go through 270 pages and tell me what’s missing, redundant, confusing, or just plain wrong, I’d be very grateful. I’m hoping to get the book out in June, so anything you can give me before then would be a big help.

As background, you can see Version 2 here, and the plan for Version 3 here. The book is meant to be a brief introduction to ideas and techniques I have found useful when teaching free-range adult learners how to program, and covers:

All of the material will be freely available under the Creative Commons - Attribution license; digital copies will be free to download, and printed copies will be available at cost.

Who the Book is For

The people I had in mind when compiling this book are:

These people have a variety of technical backgrounds and some previous teaching experience, but no formal training in teaching, lesson design, or community organization. Most work with free-range learners (i.e., outside institutional classrooms with required homework and externally-mandated curriculum) and are focused on teenagers and adults rather children; all have limited time and resources. Each will use this material differently:

If any of these people sound like you, please get in touch.

Contents

  1. Introduction
  2. Who You Are
  3. History
  4. Have a Code of Conduct
  5. Acknowledgments
  6. Challenges
  7. Building Mental Models
  8. Formative Assessment
  9. Challenges
  10. Expertise and Memory
  11. Repetition vs. Deliberate Practice
  12. Concept Maps
  13. Seven Plus or Minus Two
  14. Challenges
  15. Cognitive Load
  16. Split Attention
  17. Pattern Recognition
  18. Minimal Manuals
  19. A Final Thought
  20. Challenges
  21. Individual Learning
  22. Six Strategies
  23. Time Management
  24. Peer Assessment
  25. Final Thoughts
  26. Challenges
  27. A Lesson Design Process
  28. Learner Personas
  29. Learning Objectives
  30. Maintainability
  31. Challenges
  32. Pedagogical Content Knowledge
  33. What’s Our Baseline?
  34. What Do Students Misunderstand?
  35. What Are We Teaching Them Now?
  36. Do Languages Matter?
  37. What Does Student Code Look Like?
  38. How Do Students Program?
  39. What Mistakes Do Learners Make?
  40. What About Testing and Debugging?
  41. Do Error Messages Matter?
  42. Does Visualization Matter?
  43. How Can We Help Them?
  44. How Should We Design Lessons?
  45. Final Thoughts
  46. Challenges
  47. Teaching as a Performance Art
  48. Feedback
  49. How to Practice Teaching
  50. Live Coding
  51. Challenges
  52. In the Classroom
  53. Enforce the Code of Conduct
  54. Teach Together
  55. Assess Prior Knowledge
  56. Plan for Mixed Abilities
  57. Take Notes Together
  58. Sticky Notes
  59. Peer Instruction
  60. Never a Blank Page
  61. Setting Up Your Learners
  62. Other Teaching Practices
  63. Limit Innovation
  64. Feedback
  65. Challenges
  66. Motivation and Demotivation
  67. Demotivation
  68. Impostor Syndrome
  69. Stereotype Threat
  70. Mindset
  71. Accessibility
  72. Inclusivity
  73. Why Learn to Program?
  74. Challenges
  75. Teaching Online
  76. MOOCs
  77. Video
  78. Automatic Grading
  79. Flipped Classrooms
  80. Life Online
  81. Challenges
  82. Exercise Types
  83. The Classics
  84. Tracing
  85. Diagrams
  86. Higher-Level Thinking
  87. Challenges
  88. Building Community
  89. Learn, Then Do
  90. Three Steps
  91. Retention
  92. Governance
  93. Meetings, Meetings Meetings
  94. The Post Mortem
  95. Final Thoughts
  96. Challenges
  97. Marketing
  98. What Are You Offering to Whom?
  99. Branding and Positioning
  100. The Art of the Cold Call
  101. A Final Thought
  102. Challenges
  103. Partnerships
  104. Working With Schools
  105. Working Outside Schools
  106. Final Thoughts
  107. Challenges
  108. Why I Teach
  109. Bibliography
  110. Appendices
  111. License
  112. Code of Conduct
  113. Citation
  114. Using This Material
  115. In Person
  116. How to Contribute
  117. Glossary
  118. Lesson Design Template
  119. Checklists for Events
  120. Presentation Rubric
  121. Teamwork Rubric
  122. Pre-Assessment Questionnaire
  123. Ten Quick Tips for Teaching Programming
  124. Design Notes