I'm old enough that my first encounter with programming was though BBC BASIC and LOGO. I'd be interested how many of today's younger programmers had their first experience in coding while using a block based language, and what they're experience was like.
I do not think this left lasting traces in pupils' minds.
Then in high school they are taught Python the worst possible way. Similar on how they teach math or physics.
I love my country but how scientific classes are taught is terrible. There is a sadistic obsession with math (this reminds me the way ducks are fed for foie gras) where they teach completely useless stuff (to a point you cannot imagine) born in the minds of tortured 70 years old ministers.
Physics is the same - "how to choose the worse topics to make you hate physics" was on the bedstand of the ones who invented the curriculum.
My son once told me "dad, I do not know how people whose parents cannot explain this stuff manage to go though". This were the words of a top student of a top HS in France. You can imagine how it is elsewhere.
I'm a bit late to that conversation... If you son was a top student I imagine you managed to keep him interested in spite of the mediocrity of the curriculum? How involved were you during their homework etc.?
I expect average kids with educated and involved parents to succeed anyway in our system, but I'm wondering how bad it has become in the past 20 years. All these reforms and changes of curriculum don't seem to good every time I hear about them.
> I expect average kids with educated and involved parents to succeed anyway in our system, but I'm wondering how bad it has become in the past 20 years. All these reforms and changes of curriculum don't seem to good every time I hear about them.
The exact case (but the others were similar) was when they were introduced to derivatives in math. The chapter starts by a horribly convoluted definition (even for someone who has a PhD in physics like myself) and the class was lost. Again this is the star class of a top-top-tier high school.
I started with examples from physics that naturally brought the concept of derivative and we ended up with the definition. From that point it was easy to get back to the theoretical math track.
France has a terrible way of teaching science (except for biology). There is a several generations old obsession about mathematics in its purest form. The more abstract, the more orgasmic it looks to the ones who create the curriculum.
There is exactly zero use of this kind of math afterwards - you have engineers who have a hard time approximating (and were taught to not do it because it is not sufficiently precise) or economics students who do not understand the statistics they were force fed.
I hire quite a lot of these and the general feeling is that the school does not matter anymore (the other obsession in France: the Grandes Ecoles - top schools which are supposed to give birth to geniuses) and that the people who did things on their own are way way more interesting for companies than the ones who have a specific diploma.
Just so this does not sound like whining: I myself graduated from such a top school so I am shiitng my own bed somehow.
Finally, a lot of the science taught at school is just boring.
Take the first year of "specialized" physics (2nd year of high school). Exactly everything in the curriculum is made boring or nonsensical. You teach students what are electronics layers (s1, 2s, 2p, ...) but when they ask about details the answer is "nah, you will understand this in your 2nd year of university".
How come someone did not decide to teach mechanics?? This is not only something everyone can relate to, but also perfectly fits with the math curriculum and allows for very interesting and advanced exercises. No - better tell them "Schrodinger equation" and move forward.
I am really mad against this: not only it pushes away young people from science (boring, difficult, ...) but also avoid teaching the important things everyday people will encounter: what a kWh is on their electricity bill, how compound interest works, ... But hey, they will know that the 2p layer follows the 2s one and that homothety is an endormorphism.
You can actually go into surprising depth with Scratch. For example, I wrote multiplayer game engines using cloud variables to store player position, chat, etc and let people play together live. People have written 3D platforming engines using the "pen" feature, which is like a Python turtle. Hanging out on the "Advanced Topics" forum lead me to hacking with JavaScript and Python, at first to interact with Scratch and then onto bigger things outside of Scratch.
I think that Scratch is really great, if you couldn't tell from my description. Not only is it easy for a kid to get started with a drag-and-drop interface, but you can do so much. It also has a supportive community and it's easy to make friends and collaborate on projects together.
If you want to see Scratch truly at its limits, take a look around Griffpatch's profile: https://scratch.mit.edu/users/griffpatch/
My son (7yo) likes 'Scratch Jr' (iPad app) but he's mainly using it like a drawing app. He likes to create characters and then animate them a bit. He's not using any of the more advanced features like making one character moved when bumped by another.
I'd like to think he'd enjoy Scratch, but I'm not sure how to introduce it to him in a way that he might find interesting.
Do you recall what the first few things you did were?
Going back to look at my first uploaded project on my first account, I implemented a "programing language" [sic]: https://scratch.mit.edu/projects/10165000/ which is obviously not a beginner's project.
However, what I expect inspired me to create this project and keep creating was exploring the public projects that other users were uploading. For example, scrolling through my projects, I see several "Operating System" simulators that were inspired by others (operating systems were all the rage on Scratch).
Because you can "See Inside" every public Scratch project, it's easy to see something you like (e.g. a game, an animation) and make your own while heavily borrowing ideas and code from others. I was fortunate that my parents allowed me mostly-unrestricted access to a desktop computer where I was able to explore and create on my own.
I'm 40, and I started on Commodore Basic, but my son is 11, and he started on Scratch. I'm curious where this will go. :)
If person A uses the project and modifies the cloud variable, person B also using the project at the same time will see the new value update in real time.
Related tidbit about cloud variables: When I was on Scratch, there was no effective limit to the size of data stored in the cloud variable (though you were restricted to <= 10 cloud variables per project). Assign a letter to a two-digit number, a -> "01", concatenate the digits for each letter, and store the number into a cloud variable, and you get a simple encoding/decoding scheme for communicating between players in a game.
When enough projects that (ab)used cloud variables for intensive applications like multiplayer came around, I believe that the Scratch Team restricted the amount of data each can store. This change happened as I was no longer using Scratch much, though, so I can't speak much about it.
My gf’s two kids were introduced to programming with Scratch. One was utterly frustrated and gave up on it after the course. The other liked the idea of programming and is now taking a Java based class in school.
There’s some hope that the last kid won’t like Java and may be willing to switch to something better, else it’s 0/3 in my opinion.
Scratch is great as a first introduction because it lets kids get something working almost immediately. From there, they mostly self-motivate.
One big issue I have is with Scratch's 'deliberate, because, pedagogy' limitations with the language.
I find there's a big gap to jump between just tinkering around with moving things around, playing sounds, very simple games (catch the falling apple etc), and getting into 'real' programming.
IMHO, as an example, the fact blocks cannot return values (functions are such a fundamental concept in programming) is inexcusable. And there are just so many hacks required to work around other features or lack-of-features. Eg, adding parameters to messages and maybe clones, would clear up whole areas that currently need complex hackery.
For the really motivated/talented, most of these limitations can be overcome, but they're an unnecessary barrier for everyone else, and kind of lead to a 'haves' and 'have-nots' split.
I remember the first computer program I saw was something that printed 'hello' in a continuously-scrolling zig zag pattern on the screen. It was just two FOR loops in BASIC. Something like this:
That wowed me, and made me want to learn more. I'm not sure what the equivalent would be for a kid that's grown up with an iPad and other devices.I don’t remember any programs I saw before I got started.
My second language was python. But I just wanted to make cool games, and Python’s graphics were too low-level and verbose (compared to Scratch at least where you get a canvas with 0 code), so I wrote much more in Scratch until later on (my third language was Objective-C and a big part of that was Interface Builder, so I also had “graphics-for-free” there more or less)