A standard programming course teaches the syntax of a language and how to use it to solve real world applications. Often it teaches some computer science but its aimed at getting students capable in the workplace. Later courses focus on the software development life cycle: planning, developing, and testing software. design patterns, uml, ...
My intro cs course that I took was built on scheme, which used only a very small subset of a language. Every assignment or other was built around recursing through some data structure, many times trees and mutually recursive definitions. You learn about how to classify the efficiency of a program, and thus how to make a program faster.
After the intro, its classes data structures, operating systems, theory of computation (what problems are computable, google turing machine), algorithms...
If you take a cs major in university you will learn both, and unless the college student is overly keen on learning by himself/herself you will be better in almost every way.
If you take software engineering you will know less about cs but are more prepared for real world corporate software challenges (yay?), excluding cs specific ones.