Live data from Hacker News

What are Functions? Coding for Kids [video]

youtube.com

41–50 of 50 posts

Re: What are Functions? Coding for Kids [video]

#42

I would hate to get kids started on OOPS. LOGO is a functional programming language for kids and might teach a better mindset. Another more modern option is MS MakeCode Arcade, which is Typescript and Blockly. You can switch back and forth between the two views of your code.

I'm a huge fan of Logo! I wrote a Logo Adventure for Terrapin Logo that they shipped on the C64, the point of which was to show off Logo's list processing and functional features, because most of the other examples were focused on turtle graphics. So I appreciate what you say about teaching the functional and abstract parts of Logo, as well as the procedural and graphical parts like turtle graphics. https://donhopkin…

Hey, thanks for the pointers. Question: are you aware of any materials I can follow to teach kids how to program using Snap!? Snap! has indeed become quite powerful with time, but I struggle to come up with a lesson plan, examples, exercises... whatever will gradually bring kids up to a Scheme-like level of expressiveness and generality.

Re: What are Functions? Coding for Kids [video]

#43
post #4
post #2

Earlier quoted context omitted.

But I don't want my kids' minds being poisoned by OO paradigms. God forbid they start using design patterns everywhere! Seriously, though - seeing how most adult programmers do OO poorly ...

I can't agree enough. What other paradigm is so regularly implemented in a way that makes doing it poorly easy(Inheritance), doing it well hard(Composition), and requires a list of caveats so large that it effectively draws down to "only use it in these specific places"? How does a paradigm like that survive? I might be a fan of functional, but I'm not even saying go that way- stay procedural! Learn your abstractions…

[deleted]

Re: What are Functions? Coding for Kids [video]

#44
post #29

My seven-year-old might be pretty into this. I'll give it a shot later this week and see if it sticks. The visceral reactions to OOP here are interesting. There's nothing even about inheritance mentioned here.

> The visceral reactions to OOP here are interesting. The submission title originally was for OO.

Yes indeed - see https://news.ycombinator.com/item?id=38014749 and various other comments I left in this thread.

Sorry for any confusion. It was necessary to stanch the bleeding!

Re: What are Functions? Coding for Kids [video]

#45

Earlier quoted context omitted.

I'm a huge fan of Logo! I wrote a Logo Adventure for Terrapin Logo that they shipped on the C64, the point of which was to show off Logo's list processing and functional features, because most of the other examples were focused on turtle graphics. So I appreciate what you say about teaching the functional and abstract parts of Logo, as well as the procedural and graphical parts like turtle graphics. https://donhopkin…

Hey, thanks for the pointers. Question: are you aware of any materials I can follow to teach kids how to program using Snap!? Snap! has indeed become quite powerful with time, but I struggle to come up with a lesson plan, examples, exercises... whatever will gradually bring kids up to a Scheme-like level of expressiveness and generality.

Definitely! To start with: Brian Harvey's magnum opus, "The Beauty and Joy of Computing", which was used for CS10 at Berkeley, and is "intended for non-CS majors at the high school junior through undergraduate freshman level".

https://snap.berkeley.edu/bjc

The Beauty and Joy of Computing (BJC) is an introductory computer science curriculum using Snap!, developed at the University of California, Berkeley and Education Development Center, Inc., intended for non-CS majors at the high school junior through undergraduate freshman level. It is a College Board-endorsed AP CS Principles course. It is offered as CS10 at Berkeley.

The curriculum BJC is available online at https://bjc.edc.org

Resources: You can find information about BJC, teacher preparation, and additional resources at https://bjc.berkeley.edu

And here is the Snap! reference manual:

https://snap.berkeley.edu/snap/help/SnapManual.pdf

I’ve evangelized about Snap! frequently on Hacker News over the years, and these links have more details and links to other Snap! extensions and projects (of which there are many amazing ones):

https://news.ycombinator.com/item?id=17594403

https://news.ycombinator.com/item?id=23053999

https://news.ycombinator.com/item?id=24782152

https://news.ycombinator.com/item?id=27396842

https://news.ycombinator.com/item?id=27397375

https://news.ycombinator.com/item?id=36755852

You can discover more of the things people are doing with Snap! in the Snap!Con2023 conference schedule:

https://www.snapcon.org/conferences/2023/schedule/events

And also the videos of the conference talk and other Snap! presentations:

https://www.youtube.com/@SnapCloud/videos

The embedded programming, iot, robotics, embroidery (TurtleStitch), and other tangible computing projects are especially engaging and inspirational for kids.

Re: What are Functions? Coding for Kids [video]

#46

I would hate to get kids started on OOPS. LOGO is a functional programming language for kids and might teach a better mindset. Another more modern option is MS MakeCode Arcade, which is Typescript and Blockly. You can switch back and forth between the two views of your code.

I'm a huge fan of Logo! I wrote a Logo Adventure for Terrapin Logo that they shipped on the C64, the point of which was to show off Logo's list processing and functional features, because most of the other examples were focused on turtle graphics. So I appreciate what you say about teaching the functional and abstract parts of Logo, as well as the procedural and graphical parts like turtle graphics. https://donhopkin…

What a terrific and thorough reply! If you haven't tried it already, have a look at MS MakeCode Arcade. It uses Blockly to render Typescript and you can switch back and forth. It's great for drawing imperative stuff and procedures with blocks, and then looking at the TS to see how they're really implemented.

Here's [0] a small game I wrote in MakeCode which you can play or edit live in the browser.

[0] https://arcade.makecode.com/59845-44370-91548-60605

Re: What are Functions? Coding for Kids [video]

#47
post #4

Earlier quoted context omitted.

I can't agree enough. What other paradigm is so regularly implemented in a way that makes doing it poorly easy(Inheritance), doing it well hard(Composition), and requires a list of caveats so large that it effectively draws down to "only use it in these specific places"? How does a paradigm like that survive? I might be a fan of functional, but I'm not even saying go that way- stay procedural! Learn your abstractions…

How do implementations of OO make inheritance easier than composition?

The number of languages that only support Inheritance and have no version of Composition(or severely compromised versions) is long. What's funny is how many of them make it easier to perform composition as long as you avoid the `class` keyword.

Re: What are Functions? Coding for Kids [video]

#48
post #12
post #4

Earlier quoted context omitted.

I can't agree enough. What other paradigm is so regularly implemented in a way that makes doing it poorly easy(Inheritance), doing it well hard(Composition), and requires a list of caveats so large that it effectively draws down to "only use it in these specific places"? How does a paradigm like that survive? I might be a fan of functional, but I'm not even saying go that way- stay procedural! Learn your abstractions…

> doing it well hard(Composition), suggest how this may be fixed > and requires a list of caveats so large that it effectively draws down to "only use it in these specific places"? I don't recognise this, can you explain please

> suggest how this may be fixed

Only allow composition. Allow composition techniques to add state, detect the presence of other composition types, etc.

Re: What are Functions? Coding for Kids [video]

#49

Earlier quoted context omitted.

Hey, thanks for the pointers. Question: are you aware of any materials I can follow to teach kids how to program using Snap!? Snap! has indeed become quite powerful with time, but I struggle to come up with a lesson plan, examples, exercises... whatever will gradually bring kids up to a Scheme-like level of expressiveness and generality.

Definitely! To start with: Brian Harvey's magnum opus, "The Beauty and Joy of Computing", which was used for CS10 at Berkeley, and is "intended for non-CS majors at the high school junior through undergraduate freshman level". https://snap.berkeley.edu/bjc The Beauty and Joy of Computing (BJC) is an introductory computer science curriculum using Snap!, developed at the University of California, Berkeley and Education…

Much obliged for your help. Logo has the advantage of being immediately applicable to much younger learners (~7) than BJC (~16). There's a big mass of teaching resources (microworlds, etc) that are immediately usable at the beginning, with the possibility of progressing into more complex concepts (e.g., turtle geometry). Maybe, for small children, it'd be a matter of buckling down to port Logo examples to Snap!'s turtle graphics... I may try that.

Re: What are Functions? Coding for Kids [video]

#50
post #39
post #11

[stub for offtopicness - come on you guys, please don't do this here] Edit: perhaps I should explain what the "this" is that you shouldn't do here. It's covered by this guideline from https://news.ycombinator.com/newsguidelines.html : " Please don't post shallow dismissals, especially of other people's work. A good critical comment teaches us something. " (as well as this one of course: " Don't be snarky. ") The trou…

As one of the offenders, I do not see it as that far off topic. If someone posted a video called "Parkour for kids", would you think it off topic if people pointed out that this is just a really, really bad idea?

That's not remotely comparable.

Getting triggered by a title and regurgitating pre-existing bile about OO (of all things) in the name of protecting children (of all things) was, yes, offtopic and more than a little silly.

Post reply on HN