@aparrish Maybe what you might teach for this step is more about methods to cut a "problem" in small chunks and how to draw flow charts and system design?
Like, less on code, but more around the actual thinking that bring one from "I want to do this" to "I'll do it that way".
Focusing the thinking more on "how to explain my problem to the computer" and less on "write code"
I'm not sure there's a way to teach that. If there is I never found it nor saw it used.
@aparrish @StreetWanderer you're speaking of the distinction between computer programming and software architecture
The traditional way to teach that involves design patterns, which last I checked, have a bad reputation among people who have to work with green CS grads.
@aparrish I've been fighting with a lot of "engineers" over the years about the way programming is taught to beginners.
I even wrote a bad Medium article on the subject.
Programming is taught as maths when it needs to be taught like a foreign language.
Learn to speak and formulate though in the "computer language", the specifics of syntax, vocabulary and grammar can be learned as you go.
Like with a language, your accent and grammar will be off at first but that's part of the learning.
@aparrish when I ta'd initial courses, that was the hard jump. tbh my advice to early cause students is "time and loc". experience the craft as you fumble towards comfort.
love to hear of better methods
@aparrish We had a whole class in my electrical engineering undergrad that tried to teach that, but mostly failed at it. I think project-based work, where you give people progressively larger and larger problems to solve, is pretty much the way to do it.
The principle from the class I alluded to still applies: abstraction and synthesis. Students must abstract a problem and then synthesize that into the relevant language concepts
@aparrish One thing that I'd be interested to try is a daily whiteboarding excercise. So students only do the abstraction part and you do it as a group for like the first ten minutes of class every single day.
If you look at it at two skills it's the abstraction that's usually the harder part than the synthesis, so I think just working those abstraction muscles through daily calisthenics is the way to go.
@aparrish the only textbook I know that tries to address the second stage is 'How to Design Programs'. It's Scheme based, however: