-
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.
-
- Test Driven Development
-
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/
-
- Languages
- Tools
-
Many Links on these
-
-
Most beginners in programming eventually end up with the same ingratiating message: „Programming is easy, everyone can do it”, with some threatening message that people doing the gatekeeping should stop doing that. I’m here to tell you that that is not true
-
-
As a CS student, I'm tired of the way the programming world is and I feel overwhelmed. [RANT]
- Computing (and society in general) is overload. We're bombarded with more tech and knowledge than is possible to humanly assimilate.
-
Play the long game when learning to code.
- Don't rush and copy and paste code to solve problems
- Understand slow the fundamentals
-
Test Club: don't learn tools, learn principles
- Tools will change - principles and patterns are reusable
-
I self-learned to code at 30. And so can you.
- 240 hours (4 months)
- Goals, Principles, Support (ask targeted questions)
- Time breakdown of python, html, javascript, markdown, git (useful)