All 3 in that order, they don't need to go super deep on C, they can spend a couple of weeks on it - you go from programming on a very high level, to programming on a much lower level, and then to a language that takes care of lots of stuff for you (and you get to appreciate it more).
It's what CS50 does, and it's the best for complete beginners, including kids. The point is that they're learning about programming and software, they aren't learning a specifc language. I think that being exposed to more languages early helps with learning because it allows you to grasp overarching concepts instead of thinking that things are done only in the way your first language does them and then having to unlearn stuff much later on.
C is harder than Python, and Scratch to C is quite a jump to make, so maybe those last two should be the other way around. But I do agree that they expose different aspects of programming.
I understand that. I was suggesting that Python would segway into C in terms of learning paths. Otherwise you go from C and then say "Okay, now forget half of what you learned" since Python has far simpler functions and structures, etc. For example, looping. Python's looping is really basic, and C greatly expands on it. Each level reinforces the next, instead of going from simple, to complex, right back to simple again.
Going from python to C, you can say "Remember those simple loops? Look at how much further you can go with that under C." Each level is additive from what you learned from the prior language, instead of putting low level stuff in the middle, just to return to high level again with limitations now imposed on what you'll learn in the next step.
I would argue that no aspect of python is "up" from C in terms of learning paths.
I feel like if you want to teach people C, you can do that without starting with Python at all. But if you want to teach about programming and software, it helps to start with C and then you want to move on to languages that people will use to build applications (Python, JavaScript etc). That's why the order works out that way, not because something is "up" from something else.
Comments
Scratch, C, Python
All 3 in that order, they don't need to go super deep on C, they can spend a couple of weeks on it - you go from programming on a very high level, to programming on a much lower level, and then to a language that takes care of lots of stuff for you (and you get to appreciate it more).
It's what CS50 does, and it's the best for complete beginners, including kids. The point is that they're learning about programming and software, they aren't learning a specifc language. I think that being exposed to more languages early helps with learning because it allows you to grasp overarching concepts instead of thinking that things are done only in the way your first language does them and then having to unlearn stuff much later on.
C is harder than Python, and Scratch to C is quite a jump to make, so maybe those last two should be the other way around. But I do agree that they expose different aspects of programming.
The point isn't to order languages from easy to hard, it's to build up to Python with a bit more understanding about what's happening under the hood.
I understand that. I was suggesting that Python would segway into C in terms of learning paths. Otherwise you go from C and then say "Okay, now forget half of what you learned" since Python has far simpler functions and structures, etc. For example, looping. Python's looping is really basic, and C greatly expands on it. Each level reinforces the next, instead of going from simple, to complex, right back to simple again.
Going from python to C, you can say "Remember those simple loops? Look at how much further you can go with that under C." Each level is additive from what you learned from the prior language, instead of putting low level stuff in the middle, just to return to high level again with limitations now imposed on what you'll learn in the next step.
I would argue that no aspect of python is "up" from C in terms of learning paths.
I feel like if you want to teach people C, you can do that without starting with Python at all. But if you want to teach about programming and software, it helps to start with C and then you want to move on to languages that people will use to build applications (Python, JavaScript etc). That's why the order works out that way, not because something is "up" from something else.