"For example, I would stumble on simple questions like generating all permutations of a set by writing a recursive program that wouldn’t even terminate (even though it was something you would learn how to code by the second intro to CS class)."
Does that mean second course, or second class? Because second class would be pretty intense. Although second course is pretty intense too.