I met with Dr Johnson to get some more insights into this question. Computer programming has always trended towards higher level concepts over time. This is the result of ever more sophisticated libraries and smarter languages and tools. For example, linked lists used to be a fundamental programming technique. Linked lists still exist, but mostly they are out of sight and implemented by a JIT as required (when you create an Array in JavaScript, it might be an array, or a linked list, or a tree -- depending on how the compiler feels about your code). The introduction of generative AI is simply another step in the direction of progressing to higher levels of programming.
That being said, no matter how high the programming concepts, there are some fundamentals that never seem to go away. Conditionals, loops, variables, functions, and arithmetic have existed since the 1950s, and continue to exist in the 2020s virtually unchanged. The sole exception I can think of is "GOTO" which was once a core concept, but has since
fallen out of favour.
Here's some code from the 1970s that reads a memory address:
if (peek(0x4eff) == 256) {
s++;
}
Here's some code from the 2020s that does image classification:
if (classification(image) == group.CAT) {
cats++;
}
It's the same structure, even if one is doing a single clock cycle operation, and the other is using AI. APIs change, but no matter how high-level programming becomes, the fundamental programming elements are here to stay. Any educational application which teaches those fundamentals will continue to be relevant for decades to come.
TL;DR: Conditionals, loops, variables, etc, are eternal.