- Mark Guzdial explains why programming is hard to teach (PDF). He also writes a very good blog about teaching computing.
- How Learning Works (evidence-based best practices in teaching from a group at Carnegie Mellon)
- Facts and Fallacies of Software Engineering (slightly dated, but still the best short, readable guide we have to evidence-based software engineering)
- Unlocking the Clubhouse (a good evidence-based discussion of the gender imbalance in computing—turns out that many of the factors that discourage women from going into computing also discourage scientists from learning how to code)
- How People Learn (also available online, largely superseded by How Learning Works)
- What the Best College Teachers Do (brief and entertaining, if a bit gushy)
- Teaching What You Don’t Know (which describes many of us—also brief and entertaining)
- Design for How People Learn (for those with an artistic bent)
- Understanding by Design (three times slower than it needs to be, but a good description of a methodical way to design instructional materials)
- Making Software (a much larger and more up-to-date alternative to the Facts and Fallacies book)
- Binkley et al: The Effect of Identifier Style on Effort and Comprehension
- Chen at al: A Pattern Language for Screencasting
- Cherubini et al: Let’s Go to the Whiteboard: How and Why Software Developers Use Drawings
- Clark & Libarkin: Designing a mixed-methods research instrument and scoring rubric to investigate individuals’ conceptions of plate tectonics
- Crouch & Mazur: Peer Instruction: Ten years of experience and results
- Daniel: Making Sense of MOOCs
- Dunlosky et al: Improving Students’ Learning With Effective Learning Techniques: Promising Directions From Cognitive and Educational Psychology
- Gioia: The Aesthetics of Imperfection
- Hannay et al: How Do Scientists Develop and Use Scientific Software?
- Harskamp et al: Does the modality principle for multimedia learning apply to science classrooms?
- Kirschner et al: Why Minimal Guidance During Instruction Does Not Work: An Analysis of the Failure of Constructivist, Discovery, Problem-Based, Experiential, and Inquiry-Based Teaching
- Labaree: The Winning Ways of a Losing Strategy: Educationalizing Social Problems in the United States
- Lee: Experience Report: CS1 in MATLAB for Non-Majors, with Media Computation and Peer Instruction
- Mayer & Moreno: Nine Ways to Reduce Cognitive Load in Multimedia Learning
- Porter et al: Halving Fail Rates using Peer Instruction: A Study of Four Computer Science Courses
- Porter et al: Success in Introductory Programming: What Works?
- Prabhu et al: A Survey of the Practice of Computational Science
- Rattan et al: “It’s OK – Not everyone can be good at math”: Instructors with an entity theory comfort (and demotivate) students
- Sorva: Visual Program Simulation in Introductory Programming Education (extract)
- Sweller: Cognitive Load Theory, Learning Difficulty, and Instructional Design
- Whitecraft and Williams: Why Aren’t More Women in Computer Science?
- Wholey: Formative and Summative Evaluation: Related Issues in Performance Measurement
- “Understanding by Design” template and examples (for those in a hurry)