I teach Python on the Raspberry Pi 400 at the public library
opensource.com
opensource.com
As far as development environments - have you tried Thonny (https://thonny.org/)? It has some nice features in it that are specifically geared towards explaining how things work. For example, when you debug, you can step through subexpressions, and their values are automatically substituted in the editor as they are computed.
for x in range(0, 10):
print(x)
Is way clearer to me than having to draw circles or lines and then manually calculating the Cartesian coordinates I should have hit to make sure it's actually doing what I want.Likewise with pretty much all of the constructs. It's easy to understand a function that sums a list of ints, and it's easy to check. It's much harder for me to grok and check a function that draws circles at a list of Cartesian coordinates. A recursive Fibonacci sequence is easy for me to grok; just have it print out the values it's using at each loop. A recursive function to draw fractals is going to take me forever to figure out what recursion is actually doing. I can see that it changes, but figuring out how/why or why I would ever want to use it is really difficult.
I think it's just too much of an abstraction for me. Code -> numbers -> coordinates -> image is too many indirections for me to follow. When I wanted something "hands on", I usually defaulted to consuming APIs. It's really not much harder to install a Reddit API client and use it. It gives me something I can check, it's something I would actually want to do, and it's practically infinitely extensible.
Explaining what range() does to elementary age children seems interesting.
Once you have explained iterators - and I don't mean the nitty gritty of __iter__(), next() etc, but rather the high-level notion of a function that yields multiple values to the caller, the true meaning of range() is easily explained in those terms.
Or do you mean the other way around, as in, you start with an image of the end result in your head that's defined in terms of coordinates, and then you had to write the move/turn code that achieves that? I can see how that would be quite frustrating; but if you are already thinking in coordinates throughout, then you don't need the "turtle" part anymore - but you can still do graphics.
If your logo program was particularly cool the teacher would print your program out on the little dot matrix printer and project it up on a screen using an opaque projector and step through it line by line while the little robot drew it out on a piece of butcher paper.
Probably one of the early experiences that made me love pen plotters.
I do admire the raspberry pi project for their work, but for just programming simple python projects, any 15 year old core 2 duo will work and people can't get rid of them fast enough
RasPi have that consistency factor and the "game boy" factor of kinda being able to throw one against a wall and for it to work.
It's not the best programming experience but at least it'll be consistent. (Part of this is a Python problem tho tbh. Every Django Girls thing is half "go through the code" and half "try to figure out what weird situation your computer is in", even for Macs)
But most won’t keep programming, so I think it’s smart to at least keep this class focused on its purpose, which isn’t to see who can get most frustrated by their decade old Dell tower.
Or just wipe it and throw ubuntu on it
Not to mention that all this futzing around is usually indicative of leaky abstractions up the wazoo.
There are hard things in programming, sometimes. It's hard to write iterative quick sort without introducing off-by-one bugs. But most shit is easy, and a lot of hardness is around just busted tooling.
In many ways Apple is making this kind of thing harder and not easier.
Yeah it is kind of annoying that the language that's going to be best for instructing kids/beginners has such a terrible ecosystem that will put kids in such frustrating PITA positions getting the environment right.
Most notably, the Linux kernel runs on every Android smartphone/tablet SoC, but only a tiny fraction of them have public documentation.
And btw, community is a bit factor with Linux. Anything you can't figure out is only typically a search away.
Has Broadcom released any more than a tiny subset of the documentation they have on the SoC?
PyTurtle is a great library for educational use - I used it to teach 11-year-olds in Scotland how to draw a house. The approach take was: instruct pupils to draw a house on paper, using only straight lines; teach them briefly what a coordinate system is (assigning numeric addresses - pairs of numbers - to points), which they haven't had in their maths curriculum at that stage, but which they easily picked up; translate the paper-based house into a sequence of PyTurtle Python commands.
from turtle import *
goto(20, 0)
goto(40, -30)
# etc
turtle.py first introduced by G van Rossum in 1998.If anyone here wants to think more about how to teach computers to children, I highly recommend this video with Seymour Papert, creator of the LOGO programming language and origin of the turtle concept.
The complete video series is available here: https://el.media.mit.edu/logo-foundation/resources/onlogo/in...
[ 1995 Technology In Education hearing featuring Seymour Papert and Alan Kay hearing on education ]
I'm speaking as a daily Raspberry Pi 400 user. I've tried one of those USB hub things with power pass-through that I use for my Mac Book Pro, but it didn't work with my RPi400.
Always up for hardware tips for improving my Pi situation.
https://www.amazon.com/CanaKit-Raspberry-4GB-Starter-Kit/dp/...
Top middle.
Suggestion: Talk to the people face-to-face, and have a demo ready. If you tell them you want to do something for kids, in the demo there are free cookies, and besides offering the space they don't have to do anything, then the chance is almost 100% that they jump in.
PS: Some more traditional organizations don't even read their emails at all. So don't take it personally.
Suggestion: find a problem you want to solve, some small project or fun hack. And just do it. Every time you get stuck, go to google and search for the answer. Spend time looking at multiple responses and take your time rabbit holing and viewing tangential information. The important part is starting the project.
I was exposed to turtle graphics in school when I was a kid, but I wasn't impressed. I thought there was a huge gulf between turtle graphics and actual programming. It wasn't until 20 years later that I realized there wasn't a huge gulf, I was just one module away from doing real things. When I figured out how to process data, and do useful things, it blew my mind.
I think most kids would say the same thing about manipulating spreadsheets.
I would have. Spreadsheets are fucking boring. Hell, I still think spreadsheets are fucking boring.
The only reason that modifying spreadsheets is exciting to me is because of how much time automating the modifications saves me.
One potential cost optimization is to teach them using pen and paper, visually, especially since "their keyboard skills were rough".
1) budget concerns for monitors, computers, keyboards 2) students cant type
I think I could teach an array traversal using skittles, and I could teach binary search using a physical english dictionary.
One would be surprised how much of coding is trying to understand the logic of what is trying to be done. The api call can come after
Really, all algorithms are better when demonstrated on sweet treats. :)
I agree about the open source part though, Raspberry Pi is a good fit for teaching purposes.
There you have it
Another nice thing is, that the Pi can boot and work solely on a single micro-SD card. That makes it easy to have any number of install "disks" ready at hand, you don't have to set up the systems hard disk first.
Finally, the Pi gives you a nice set of IO-ports, you can immediately start with any hardware tinkering project.
There's a hell of a lot of ex office PCs that can run python for much cheaper, if not for free
The Raspberry Pi 400 is a pretty much usable desktop computer out of the box which you can buy as a complete set for 100€ new, including a nice book. It is also very nice to use as it is compact, very portable and doesn't need more than an USB power supply.
In comparison it is very easy to grab an used screen, as the screen doesn't need to be set up. In addition, the Pi works well with a current TV. Brings back the best of the home computer age in the 80ies.
There are plenty of places that would donate to a cause like this. Or to anyone willing to cart the stupid hardware away, regardless of the cause. It is only "free" if one considers their time - and somehow, the gasoline they buy - to be worthless. The hours spent soliciting offers, picking up hardware, performing admin and tech tasks on old hardware, recycling the hardware that doesn't work, rinse and repeat would better be spent preparing a curriculum for the children.
Seriously, how does the above process not sound like hell to you?
The pi400 kit is $100. Flash five cards and you are done. If you scavange anything it's monitors, there is a whole aisle old flatscreens at my local goodwill, you could find decent enough ones for under $20 apiece. Alternatively any local techish business probably has a closet of monitors they would happily give away just to get them out of the building.
If you're trying to help other people, something new in box is 100% the way to go. It's not worth the time of gathering and messing with dissimilar hardware.
Both valid strategies. A question of pull vs push.
So, the number of participants was limited to 5?
I don't know, that sounds a bit problematic. I would have opted for helping students set up a Python environment on their PCs or laptops (and maybe kept the RPi's to students who may not have one; although identifying students in this situation may be tricky)
You assume that students have a PC or laptop particularly one they can do whatever they want on and that even if they do parents are happy with them installing development tooling on the laptop.
2. You mean their parents are Perl or Ruby fanatics and will not stand for Python being installed? ... Somehow I doubt that's an issue.
Some people have work issued laptops and know nothing about computers. They might be working remotely for a call centre nowadays, very common - so no, you can't install any tools on those. And even if you could I know many parents who wouldn't let their children install anything on their work machines as if that stops working they will get in trouble at work.
+1 for being able to break things, though. I know I'm way more likely to try risky (and educational!) maneuvers on a spare computer than the one I have to use for (home)work, assuming I even have one.