I've done a little research on student perception of programming in grades 5-9. One thing I found was that kids in 5th/6th grade (elementary school where I'm from) love programming. It's fun and engaging, and it feels like a game to them. If you look at their programming environments, they're using things like Logo, Blockly, and Scratch, which are intentionally designed for this demographic. There's color characters and graphics, interlocking blocks, programming models tailored for their level of cognitive development, etc. It all works very well.
But a strange thing happens around 7th-9th grade (middle school where I'm from). Suddenly perceptions about programming drop off a cliff. Students increasingly describe programming as "frustrating", "confusing", "boring", "scary" and generally not enjoyable. If you look at their programming tools, they're using VSCode, Javascript, Java, C++, Visual Studio, Xcode, Eclipse... tools meant for professional developers!
And the results are a lot of them just stop considering programming as a viable career path. They are presented with these tools and told these are what the pros use, and when these students hit roadblocks many conclude they don't have what it takes to become a professional developer. They get discouraged and become disengaged entirely in the idea of programming.
Now, as I said this is all just preliminary research in my local community. Maybe things are different elsewhere, but I think there's an opportunity for programming tools that target this middle school group, to help facilitate a transition between toys like Blockly and full-blown professional developer environments.
I had a hell of a time finding an IDE for a Girls Who Code class that used Python with middle schoolers.
I wanted:
1. A plain text editor
2. With syntax highlighting
3. With a "run" button that would display program output in a side area.
What I didn't want: version control, autocomplete, package managers, refactoring. Not even as little buttons on the side which never have to be pressed but which act as a visual distraction and suck brain power. I'm trying to get these kids to understand what a loop is, they shouldn't ever think about damn git commits!
We mostly settled on Notepad++ but I really would have liked something more basic, and ideally browser-based given the, uh, quality of our hardware. Trinkit.io was also pretty good, but python3 required a subscription (python2 does not...), and for some reason it had issues with cursor focus.
Well, if you're willing to try something different, look at Racket with its DrRacket IDE[1]. It couldn't be simpler. Racket is actually a decent starting language for beginners, and some universities start off with it for their introductory CS courses (no prior experience required)[2], but I'm not quite sure how well-suited functional programming is for middle-school-aged kids.
>I'm not quite sure how well-suited functional programming is for middle-school-aged kids
Functional programming works perfectly well with middle-school-aged kids. The only problem (imo) is that understanding (and hence using) recursive functions can be a barrier, but this doesn't even come up for a _long_ time (depending on your approach).
That site you linked as [2] is pretty bare-bones; try https://htdp.org/
Jupyter notebooks will give you syntax highlighting, and all you need to do is hit the run button or Shift+Enter and it will run the code that was just typed.
Replit, potentially. No need to install anything beyond a web browser and once the project is setup, it really is just pressing play to get it running. Then things like version control can be added on later if there's interest, but even without it sharing projects is sharing a link. This also can make it easier for the learner to take this home and not just do the work in class or the classroom setting.
There are probably other solutions out there, but I've mostly been liking it as a way to help people (especially remotely) but at work and just in general with exploring programming. Especially since I don't have to walk anyone through installing anything, which is a PITA.
I looked at repl.it, it was much too complicated! It had integrated version control and other stuff I didn't want.
trinkit.io was really very close, and we maybe should have just purchased a subscription to use python 3, but as a little free class run out of a library, we didn't exactly have tons of funding.
The integrated version control can mostly be ignored, I don't recall it ever pestering me. I did set up some as git repos and sync to GitHub, but most of the time I'm just spawning a new session and throwing code in to demonstrate a particular language feature or concept. It does have autocomplete, I forgot about that bit (I guess it became invisible to me since I'm so accustomed to it). I'm not sure if it can be turned off.
I was helping teaching my son's grade 8 class for about a month and a half. I was surprised at the enthusiasm from the majority of the students - most of them were really into it.
It was great expericence, both for me, the other parent helping, the teacher, and the students (as far as I could tell). I have written more about what we taught them, how we went about it, and things we learnt here:
We're trying to create a more advanced (3D) text-based version of Logo that we hope will fill in the gap between blocks-based languages and 'real-world' languages https://turtlespaces.org
But a strange thing happens around 7th-9th grade (middle school where I'm from). Suddenly perceptions about programming drop off a cliff. Students increasingly describe programming as "frustrating", "confusing", "boring", "scary" and generally not enjoyable. If you look at their programming tools, they're using VSCode, Javascript, Java, C++, Visual Studio, Xcode, Eclipse... tools meant for professional developers!
And the results are a lot of them just stop considering programming as a viable career path. They are presented with these tools and told these are what the pros use, and when these students hit roadblocks many conclude they don't have what it takes to become a professional developer. They get discouraged and become disengaged entirely in the idea of programming.
Now, as I said this is all just preliminary research in my local community. Maybe things are different elsewhere, but I think there's an opportunity for programming tools that target this middle school group, to help facilitate a transition between toys like Blockly and full-blown professional developer environments.