Skip to content

Latest commit

 

History

History
executable file
·
85 lines (66 loc) · 4.91 KB

learning-to-code.md

File metadata and controls

executable file
·
85 lines (66 loc) · 4.91 KB

Learning Programming

  • Teaching how to code is broken

    • Chaper names: Variables, arrays
    • none of these chapters answer the most important question a reader has, the entire time, WHY!? Why is all this important and what problems does it solve?
    • What is the problem this is trying to solve
    • Example of learning though modelling decks of cards
  • The Nature of Code Daniel Shiffman

    • free eBook
    • The goal of this book is simple. We want to take a look at something that naturally occurs in our physical world, then determine how we can write code to simulate that occurrence.
    • Chapter 4 - particle systems
      • oo and inheritance - emergent behaviour
    • Chapter 8 [[fractals]]
  • 5 Pillars of Learning Programming

    • Test Driven Development
      • Beginners shouldn’t write tests. This would be too much for their basic skill levels. Instead, they should learn how to use and work with tests.

    • Fundamentals First (Don't launch into a library or framework)
    • Libraries and Frameworks (most code has already been written)
    • Master and Apprentice
    • Challenge and Motivation
      • The main goal of an exercise is not to entertain. It should be created around a particular technique and should help the students to understand that technique. Motivation is good, but not at the sacrifice of content.

  • Learnable Programming - Designing a programming system for understanding programs - Bret Victor (2012)

    • An essay on features lacking of modern development environments to teach people coding
    • Suggest help tags, visualising time and state in IDE.
    • Beautifully presented
    • References prior systems like Logo, Hypercard, Smalltalk
    • Summary
      • Visualise data/state not code
      • Does the environment allow the learner to...
        • read the vocabulary? -- Is meaning transparent? Is meaning explained in context, by showing and telling?
        • follow the flow? -- Is time visible and tangible? At all meaningful granularities?
        • see the state? -- Does the environment show the data? Show comparisons? Is hidden state eliminated?
        • create by reacting? -- Is something on screen as soon as possible? Is the parts bucket on the floor?
        • create by abstracting? -- Can the programmer start concrete, then generalize?
      • Does the language provide...
        • identity and metaphor? -- Is the computer's world connected to the programmer's world?
        • decomposition? -- Can the programmer break down her thoughts into mind-sized pieces?
        • recomposition? -- Can the programmer put diverse pieces together?
        • readability? -- Is meaning transparent?

My approach

  • language-cheat-sheet

    • fundamental resource
  • Guided one off projects - build something real

  • guided examples mapped to theory

    • autonomy/responsibility
  • psudocode quickref (equivalent of my cheatsheet idea)

https://web.archive.org/web/20200309111959/https://sar3.ch/en/blog/kinder-programmieren-erfahrungen/