Sam Morgan is a programmer and teacher. He's passionate about learning and technology. He works as cofounder of Whatever, and consults with various technology education institutions.

  1. Learning, functionally

    Most learning systems treat learners as objects to be modified. What if we treat their learning as data instead?

  2. Fear

    A disordered collection of notes on fear.

  3. Building Challenge-based learning curricula

    How to write exciting, problem-first curricula with sequencing, scaffolding, and self-direction. Normal curricula teach learners a formula, then to apply it. Challenge-based curricula put the problem first, and use constructivist learning techniques to build power and context in learners.

  4. Summary: The Art of Problem Solving

    This is an ongoing summary of Russell L. Ackoff’s book, “The Art of Problem Solving”. Ackoff is one of the originators of systems thinking and a pioneer for problem-solving as a methodology and philosophy: both things I deeply love!

  5. What’s the ‘simplest thing?’

    The conventional wisdom when doing programming is to start with the ‘simplest thing’. But what is the ‘simplest thing’? How do you know something is ‘simple’? And are there different ‘simple things’ that work better with different approaches?

  6. Novice TDD: Race to Green

    Red, Green, Refactor': that's a helpful mantra for writing your code test-first. But how long should you spend on each stage, and how can you effectively separate each stage from the other? The answer: Make it Work, then Make it Good.

  7. Learning to Learn I: the Ready Position

    This post is about a learning Ready Position: a state of mind required for the adoption of new practices. A Ready Position is indispensable, especially when learning new behaviours that are either opposed to current behaviour, or refinements of existing behaviours. Best practice in learning programming mirrors best practice in learning musical instruments, where the utility of the 'ready position' is well-established.

  8. How to be a better ally

    This is a post about how to be a better ally in support of oppressed groups. It uses feminism as the main example. It is primarily aimed at men who are aiming to become better allies to feminist women, or cisgender people who are aiming to become better allies to transgender people. Hopefully, it also applies to anyone who wants to support or advocate in legion with people who lack the cultural and lived privileges you have.

  9. Lessons from the CSS coalface

    CSS can be really hard: it's not naturally object-oriented, and it's built for a bygone era of type-only websites. Here are some tips (from a talk I gave at Makers Academy in London) to help intermediate front-end developers avoid spaghetti-ing their CSS on larger projects.

  10. Self-guided learning II: The Knowledge Dimension

    In the previous article, we looked at what Bloom's Taxonomy was and where it is used. We began to look at ways a solid grounding in the taxonomy can help learners to scaffold their own learning (by knowing, given any specific topic, where they are in the taxonomy, and by providing a route to higher levels of proficiency), and how educators and curriculum developers use the taxonomy to craft learning objectives. In the article after this one, we will look at some of the tools we can use to construct learning scaffolds which link learning objectives together. In this article, we'll look at another aspect of the taxonomy – the Knowledge Dimension – and how we can use metacognitive knowledge to develop appropriate strategies for rapid learning. We'll also look at some examples of these strategies, and how the taxonomy helps us to select the right ones to use in particular learning contexts.

  11. Self-guided learning I: Introducing Bloom

    This is a series of articles aimed at both students and educators. In three parts, we look at how Bloom's Taxonomy (1956, revised 2001) can be applied to everyday learning. In this first article, we're going to introduce the Taxonomy. In the second article, we'll look at how learners can use the theory to guide their own learning and build metacognitive skills. In the third article, we'll look at how educators can use the theory to create clear, robust, and efficient curricula.

  12. A brief introduction to Domain Modelling

    The content of this article is drawn from A brief introduction to Domain Modeling (McLeod 2009). Content has been simplified and streamlined. You can read the original here

  13. Software design up-front: how much?

    A common mistake that people make when trying to design something completely foolproof was to underestimate the ingenuity of complete fools.

  14. What's a Class Structure?

    In Object-Oriented Design, a Class is an entity that holds data (known as the Class state) and ways of manipulating or communicating that data (known as the Class behaviour).