In Canada, there's a very strict definition for engineer. If you don't have an engineering degree from an accredited university, and a professional designation, you cannot call yourself an engineer. They take it very seriously since it's a regulated profession.
Obviously everyone is free to draw their own lines (outside of Canada at least).
I always thought an engineer was someone who puts scientific or mathematical theory into practice and to solve technical problems. I'm ok with someone giving themselves the title of engineer if they do that for a living. On the other hand, they should not call themselves a "Professional Engineer" without the proper accreditation.
They also drive locomotives, for some reason.
100% agree. In the US I don't think it's as strict as Canada (may be wrong) but I know one has to take an FE to be called one. People in the software field, however, running around themselves engineers are more often than not, not putting any theories into practice but instead using the tools that actual software engineers (those that create software packages/tools/languages/compilers etc) make, essentially making them a journeyman of sorts.
I studied computer engineering and have no desire to take the FE exam, as being licensed is almost entirely useless in my field. As far as the difference between "engineers" and CS majors, at my school basically the only difference is math requirements, and how math is used in the higher level classes. In ECPE (computer/electrical) we differentiate ourselves from CS by studying circuits, systems, physics which are very calculus-intensive. The area where it crosses over into CS is when you get into computer architecture, digital design, assembly, which is like programming, but due to being so close to the hardware level (working with raw digital logic) it ends up being more math intensive than most high level programming.
Next thing we'll see front-end doctors?