Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to teach kids (or other complete beginners) to code? #74

Open
nelsonic opened this issue Feb 18, 2017 · 7 comments
Open

How to teach kids (or other complete beginners) to code? #74

nelsonic opened this issue Feb 18, 2017 · 7 comments
Labels
discuss Share your constructive thoughts on how to make progress with this issue enhancement New feature or enhancement of existing functionality help wanted If you can help make progress with this issue, please comment! question A question needs to be answered before progress can be made on this issue

Comments

@nelsonic
Copy link
Member

see: https://news.ycombinator.com/item?id=13675268

@nelsonic nelsonic added discuss Share your constructive thoughts on how to make progress with this issue enhancement New feature or enhancement of existing functionality help wanted If you can help make progress with this issue, please comment! question A question needs to be answered before progress can be made on this issue labels Feb 18, 2017
@YvesMuyaBenda
Copy link

If I could travel back in time to give myself advice, I would simple say: look for learning materials that discuss the test-first development approach from the start. The approach includes, design, spec-writing, breaking up the problem into small pieces within a sensible sequence, and thinking before typing.

@nelsonic
Copy link
Member Author

“If you want to build a ship, don’t drum up people together to collect wood and don’t assign them tasks and work, but rather teach them to long for the endless immensity of the sea.” -- Antoine de Saint-Exupery

@YvesMuyaBenda
Copy link

YvesMuyaBenda commented Apr 27, 2017

An idea came to me within an aha! moment. The way I would go about teaching children and other beginners to code would be approaching programming from a problem-solving angle, relating it to how they already think and act, especially in learning. For example, a thought-process was running in my mind about autodidactism, how to go about learning independently from online resources, and because of my prior experience with programming, I could express the thought as: oh, one needs to abstract the steps within a tutorial to create something different analagous to how one would extract a function from a collection of expresssions with a similar purpose. A lot of self-development psychologies talk about writing down the steps to doing something before one does it ... algorithms: examples abound.

For an approach to teaching children that seems interesting, I found following old Kickstarter, but though the fellow appears to have an interesting approach, to my knowledge, he has not made it available to anyone but the folk who backed the Kickstarter: Computer Science for Your Child

@YvesMuyaBenda
Copy link

This book is on point: Computer Science Distilled. It is usable by those that have learnt the basic elements of programming, and would be excellent preperation for SICP. Folk complain about the mathematical background needed for SICP (super grateful for the maths degree right here), but this book puts the use of models, including mathematics one in a greater context. It fills in a lot of stuff that is normally "unsaid" and assumed. It gave me a whole general context to organize what I already know and understand: sometimes, one needs to go back to the very basics and start again, in order to make further headway, and faster too!

@YvesMuyaBenda
Copy link

YvesMuyaBenda commented May 1, 2017

Too, I have this vision that it would probably be best to teach mathematics from the beginning from a computer programming/computer science point of view. It would be super easy (though time consuming) to convert Anthony Wildberger's basically building mathematics up from scratch into code; (data structures and functions that operate on them, could do it functional, object-oriented, imperative. whatever basically) for example, this video on data structures. Programming languages provide a stricter langauge than the formal/semi-formal/intuitive/visual-imagery based language that mathematics is normally taught in.

@beardfacebo
Copy link

In my opinion these are two separate things, dependent on the age range of the children. I'm just going to spill a lot of my thoughts/experiences in a stream of consciousness, and hopefully some will be of use.

Smaller children <10
There are some good shorter programmes out there, for example the stuff on code.org, but when working through these with my girlfriends nephew Archie (7), they are very engaging, though lack linkage back to the fundamentals of programming and focus instead on computational thinking at an abstract level. Archie was left wanting more, and so we 'pair programmed' (he told me what to do) a drawing app with canvas, and he really enjoyed that. I'm currently looking at other activities for us to do together along this realm. There are visual editors out there for javascript (I feel like I've seen others as well), but he really didn't engage with them.

Micro-bit and youth uk
I'm going to be writing a few of the activities for the Youth UK's generation code, which uses the microbit and attributed javascript block editor. Happy to share learning from this, insights they've gleamed on engaging kids in the programme/using the micro-bit.

Older kids
Having spoken to some teachers in passing and mentoring a children at AFC's family school last year, there doesn't feel like enough of a bridge from the beginners stuff to actually getting into programming, where the concepts are more abstract, and the language far less accessible. There is also a gap in teaching programming concepts (e.g. architectures, types of languages).

Beginners
I feel that programmes like free code camp are great, but are obviously language specific, and don't focus enough on enforcing learning through projects. They're also a very linear path, and people I've spoke to who are learning at that level would prefer a mix and match approach to how to get to their goal.

Happy to chat more/expand on anything here

@YvesMuyaBenda
Copy link

YvesMuyaBenda commented May 31, 2017

I think this definition of a variable would be useful for all learning and teaching programming. It is rare that I see a basic concept so well explained. Programming texts often use prior experience in algebra to ground the definition of a variable within programming languages, but the prior experience in algebra is hazy as often no sharp clear precise definition was ever given. For one the discussion illustrates why in ES6 there was a need to decompose the var statement into a var and const statement as opposed to conflating them in var.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discuss Share your constructive thoughts on how to make progress with this issue enhancement New feature or enhancement of existing functionality help wanted If you can help make progress with this issue, please comment! question A question needs to be answered before progress can be made on this issue
Projects
None yet
Development

No branches or pull requests

3 participants