Hi folks, what's a fun 'learn to code' webapp/app ...
# linking-together
s
Hi folks, what's a fun 'learn to code' webapp/app for introducing kids/non-programmers to coding (absolute beginners).
I know one - https://grasshopper.app/ - any others?
a
This website - https://www.maria.cloud/ is mentioned one episode of the future of coding podcast. Seems elegant, although I haven't used it myself.
Scratch (https://scratch.mit.edu/) is probably the canonical 'learning to code' app.
šŸ‘ 4
āž• 1
i
Swift Playgrounds
The game Human Resource Machine
The game SpaceChem
The game Factorio
k
I used to like an Android app called LightBot. Sadly no longer working on modern phones.
Following the Scratch suggestion, code.org is good for an hour.
g
literally magic the gathering
šŸ‘ 2
šŸ’Æ 1
the card game
c
+1 to Human Resource Machine; I still play that one šŸ˜‰
o
If you want to introduce them to the "logic" of programming I also highly recommand Scratch ! šŸ™‚ You can feel the fun of programming very quickly with it. I use it a lot in workshops of course with kids but also with adults as a first step in discovering programming (the next step can text programming).
s
Thanks folks - great suggestions!
a
I want to ask - did anybody actually learn to program with tools like this? I learned to program in high school, so perhaps I'm a little too old to relate. I remember being taught programming with a tool called Alice intially, and I really disliked it. It felt so transparently like a toy. It wasn't until the class switched to java and we started writing to the console that it clicked what programming actually was. It wasn't until I used XNA for the first time that it really hit me how cool programming was, though. Writing a while loop and seeing a box move across the screen made everything come together for me. If I were teaching someone to program, I think I would skip straight to love2d, which is, I think, a good modern successor to XNA. Possibly if I were teaching a really young child, I would use something like scratch or alice, but even then I'd be reluctant. I'm not an educator and I don't work with children, though, so its hard for me to say this with much confidence. I think it matters a lot if the child wants to learn to program or if you're trying to trick them into programming.
k
I agree partly, I tend to be skeptical of games as a way to teach programming. While there is some superficial resonance, at some point there comes some tension in goals, and you have to decide if your goal is teaching programming or entertainment. Often the gameplay elements that lead to more fun don't translate to building real-world programming skill. Even LightBot, which I shared above, falls into this trap towards the end. Too much emphasis on making the program a little smaller. Is there even a programming game that involves constructing compound values? That seems so foundational to learning programming. I kinda disagree about needing the child to want to learn. Part of the skill of a teacher is to drag an unwilling student through some initial period of resistance and show it something cool. And as the teacher builds up a track record, it gets easier. The student becomes more willing to humor the teacher for a time, because last time it ended up being rewarding. This might be my Indian background talking, though šŸ™‚ We don't dwell quite so much on making school 'fun'. We take it for granted that there's some schlep in any endeavor, and we don't (didn't?) try to hide or sugarcoat it. Part of education is imparting the expectation of schlep, and I think that's important.
i
@Aleks
I want to ask - did anybody actually learn to program with tools like this?
My first n programming environments, roughly in order, all of them largely self-directed (helped by the fact that many of these were designed to be discoverable): HyperCard, HyperStudio, Logo (Lego Dacta), various games with level/map editors (StarEdit, Myth's Fear&Loathing), Director, Flash (gotoAndPlay), Tcl/Tk (copy-tweak-paste scripting a 3d graphics program), and then finally Java. I think the thing that worked for me is that I had sort of naturally drilled myself on a whole bunch of different kinds of computational thinking, planning for edge cases, separating data and behaviour, doing first order logic, working with abstractions vs concretions, etc. I also spent a lot of time using complex 3d animation tools, which are loaded with computational thinking. So by the time I hit a "real" programming language, it largely felt familiar (if not old hat), and I was quickly able to start doing things that were outside the scope of previous environments, like building physics and game engines.
@Kartik Agaram
Is there even a programming game that involves constructing compound values?
You should take a look at SpaceChem.
ā¤ļø 1
s
I started out learning BBC BASIC. I think there's incredible value in simpler, more visual and more immediate environments. The idea is to learn what coding is about, not jump start your training to be a software engineer. (Besides, if FoC is successful, will we still be printing "hello world" to the console as our first program šŸ˜‰?) Imagine if you are 5-10 years old (or even an adult) and learning what movie making is about as an absolute beginner. Would you like to start out doing all the gruntwork and assembling real equipment? Working hard until you get perfect lighting and audio (aka "fix all syntax errors")? Or would you rather get the big picture and some hands on activities with the processes and purpose? E.g storyboards (not pro quality), shooting with phone cameras, lighting, sound with hobby equipement, basic editing etc. You'd want to eliminate/reduce the hard gruntwork, keep it simple and use everyday gear. The everyday gear is stuff people already can mostly manipulate - mouse pointers, blocks, drop downs, occasional text, etc.
šŸ‘ 3
āž• 2
k
Who's this addressed to, @shalabh? :)
s
Meant to reply to @Aleks’s question asking if anyone actually learned like this.
šŸ‘ 1
k
@Aleks did you mean this Alice? https://www.alice.org. It looks quite nice at first glance. So at least your comment suggests that we may need to try multiple approaches with a kid, see what works. From what I've read about early microcomputers like the BBC micro, they feel like the best way we've come up with so far for learning programming. Turn it on and you're in a dev environment. Type in a command and it draws a pixel or line right there on the screen, in the same place as your code. Losing that level of immediacy feels like a regression. Can we create a more visual environment that relies less on syntax without losing the immediacy?
a
@Kartik Agaram I think that is the same Alice. I used it in roughly 2007. It looks like they've come a long way since then. I don't mean to come across as the spokesperson for professional software engineering here. I haven't seriously used Java since that class in high school. I just have fond memories of the first time I wrote:
Copy code
for(int i = 0; i < 1000000; i++) {
    System.out.println(i);
}
It was a lightbulb moment when I saw just how quickly a computer could count, and another lightbulb moment when the chassis started to heat up and the fan kicked on. I think the thing learning environments get wrong, for me at least, is that they make programming seem mundane. Kids are addicted to tablets by the age of, like, 2. They know computers are the most magical objects in existence. When a learn to code tool tries to make computing seem mundane, it rings false. Computing is the closest thing we as a species has to magic, and I wish learning environments did a better job of capturing that sense of wonder I got writing a simple for loop.
ā¤ļø 3
o
For me the point is that learning programming with text language can be very slow and boring compared to visual ones. @Aleks, if I take your example "Writing a while loop and seeing a box move across the screen made everything come together for me." it is very fast and fun to have this feeling with Scratch. In fact it is what I am doing as an introduction to any beginner workshop, exactly to show the "magic" (or feeling of power) of programming and make them eager to practice it:
ā¤ļø 1
When I first came to Scratch, I thought that it was just a toy that is very far from the "real" programming, which has to be done with the text languages like in my professional practice of programming. With time, I have learned that I was wrong and that you can actually practice and learn lots of real programming activity with it. And without one of the most boring thing with text programming: syntax errors.
šŸ‘ 3
In fact Scratch is very close to text programming: just erase the colors of the blocks in the program above, and all you have is text instructions structured like in any text programming language.
šŸ‘ 1
k
Scratch is a structured editor šŸ’”
šŸ’Æ 3
s
Thanks for the suggestions, @Aleks, @Kartik Agaram! I ended up using the code.org programming puzzles first and then Scratch. Both were a hit. Before those I used the Google doodle: https://www.google.com/doodles/celebrating-50-years-of-kids-coding, which was also fun. I'd heard of Scratch but never used it before. It certainly seems very nicely put together. Kids were even recording their sounds and using them in the programs. Real fun stuff!
ā¤ļø 1
d
I owe a lot of my early programming development to TI graphing calculators; though I didn't know programming was even a thing until high school.
ā¤ļø 3