True, there often is no clear distinction.<p>On the other hand, I studied CS in South America, and I can count on one hand the lectures which aimed to teach you &quot;how to write good code&quot;. Maybe one or two of them, and only in the macro &quot;good software engineering practices&quot; sense. Most of the others assumed you sort of picked up how to code on your own, or that you asked other students or TAs on the side. There absolutely were NO &quot;how to code&quot; lectures, and the overall idea you got was that CS was a theory-heavy degree. Recursion, proofs, type theory, graph theory, etc, were absolutely the focus of the degree.<p>There was a different degree called &quot;Software Engineering&quot; (and not CS) from the same university, but I think they heavily overlap in content, so in practice the point remains.