There are lots of programming languages designed to make learning programming easier. In my experience they are a waste of time for most students. Many of the languages will allow students to make apparent progress and to produce what appear to be impressive applications, but if students don’t understand what they’re doing, they’ll quickly lose interest.
Here are the things that students need to learn, and the rough order in which they need to learn them.
- Imperative commands such as PRINT “hello”
- Variables and types, particularly the difference between strings and numbers
- Simple arithmetical operations e.g. a = 3, b =4, c = a+b
- Branch commands such as IF answer = “Paris” THEN PRINT “Correct”
- More complicated branch commands – IF THEN ELSE
- For loops or equivalent
- While loops or equivalent
- Nested branch commands
- Nested loop commands
- Traversing Arrays using for loops and while loops
- Functions and Procedures, or equivalent
And that’s it. Everything else in programming can be achieved using the above. The rest is just readability, convenience and elegance
The problem with some languages, particularly the visual ones, is that students produce results without understanding the above. If students don’t understand the above, they don’t understand programming.
Python allows you to teach all of the above. And then once the student has learned, they can build on what they know, replacing the pieces of their Python toolkit with more advanced constructs as they learn. And as programmers, they’re always learning…