You have to know several hundred things in order to be a good programmer, and a good chunk of these aren't even on CS program.
I interviewed a guy once whose list of data structures was "bit, nybble, byte, float, char, int". As I recall, he didn't have a CS degree, and had over a decade of experience in the field. He did not get the job.
There is something to be said about using a common nomenclature, and I understand why you might be hesitant to hire someone who isn't speaking the same language as the rest of your team, but underneath he could still be an algorithms genius.
There are software engineering degrees, but I don't personally have a high opinion of academic software engineering research & practice, so I personally don't recommend them.