When I tutored/taught I always found that logic was the root cause of a student's struggle. If you can't understand the logic, there's absolutely no way to understand implementation.
The most unusual situation I've seen when teaching (shit-tier university) was that some students couldn't look at a single ASM instruction and understand what it's doing after being explained the syntax:
ADD R1, R2, R3 ; R2 + R3 --> Store sum in R1
It's almost like some students aren't even ready to learn...o_O
I tend to agree with this. Whenever I'm tutoring and students are having trouble with some piece of syntax, that's almost always the most trivial problem.
I've often encountered students who think they need help with syntax, but in actuality have no understanding of how they're going to actually solve the problem. Conversely, I've never encountered a student who has a good idea of how to solve the problem but just has a syntax error.
This whole "syntax errors cause problems in teaching" thing is something students shouldn't be told. Both because it's pretty untrue on balance, and also because it allows them to blame "syntax" when they write down some copy pasta nonsense and it doesn't work due to compiler errors (completely glossing over the fact that even if there were no compilation errors, the code would still be absurd nonsense.)
With syntac out of the way, they could experiment and iterate with the logic to learn faster. Imagine of legos melted every time you put two together in a way that didn't math the model you were building, and you had to go out and buy a new set.
The most unusual situation I've seen when teaching (shit-tier university) was that some students couldn't look at a single ASM instruction and understand what it's doing after being explained the syntax:
It's almost like some students aren't even ready to learn...o_O