I have a computer engineering degree, I just graduated last May. There are 3 primary disciplines: computer science, computer engineering, and electrical engineering. If you picture a spectrum, with the left side being software and the right side being hardware, then cs falls all the way to the left, EE all the way to the right, and CE right in the middle, and I do mean smack dab in the middle.
So, which should you do? I would say if you like hardware and software, go with CE. You'll get enough experience that you can go either way. As a CE major, I still had plenty of data structures, algorithms, operating systems, and other CS classes, enough I feel to handle any CS job. However, I also received a lot of exposure to hardware, and in fact my current job is primarily hardware-based (I'm working as a CAD Engineer doing standard cell library characterization and SKILL language programming).
It's nice because, at any time, I could switch over to programming. I have experience with Visual C++ and MFC, OpenGL, and software design in general, know several languages, etc. But I could also switch over to exclusively hardware if I want.
Also don't forget, in order for the script to run, there must either be a compiler (as in perl) or the executable must be compiled for that platform. I.e., this idea sucks, and I beg someone to convince me otherwise.
It's not the same thing. Like engineering technology vs. an actual engineering degree, you may start out at the same level, but where you end up is a different matter. It's probably true that CIS and CS majors start at about the same level with the same salary. I would bet CS majors probably make a tiny bit more on average, but that's probably just a minor difference if there even is one. However, if you want to move up in your field and become a manager, lead projects, and basically get away from just sitting at a desk coding all day, or perhaps move up to a more prestigious programming opportunity, CS is the way to go.
I know that, at some universities, the distinction between CIS and CS may be pretty vague. But at a good engineering school like the one I attended (Texas A&M), the distinction is much more broad. While CIS majors were taking classes like Java and introductory database stuff, CS majors are taking Operating Systems, Algorithms, Data Structures, Software Engineering, Computer Engineering, Analog and Digital Circuits, etc.. These classes build a framework for your future in that you learn a lot of the framework required to be a good, intelligent programmer. Anyone can go check out a Java book from the library and learn the language, and even be successful with it. But the ones that push the envelope are the ones who not only know a billion computer languages, but also know what's going on underneath the hood so to speak.
With CIS, you can still be successful and even pick up on some of these skills, but as an employer, I would expect you to prove these skills to me, whereas with a CS major, I might expect these skills to already be present.
Just my $0.02..
-Dustin
Being an employee who recently received some valuable training, I can honestly say that, from most employee's perspectives, they will stay on at least for awhile out of respect for the training they received. It also helps if you give this training to new hires, or people who have only been with the company a short time, because they are less likely to leave.
But in reality, if an employee is gonna jump ship right after they receive training, then they don't belong with you anyway. Because the bottom line is, they will jump ship eventually no matter what. Instead, I would work on making the workplace more inviting, by recognizing employees for their hard work, giving them financial incentives, etc. An employee who feels his/her work is valuable and respected--and feels he or she is getting properly promoted and rewarded--will probably be willing to ignore the better offers out there. I know in my case I have, and I'm happy.
So, which should you do? I would say if you like hardware and software, go with CE. You'll get enough experience that you can go either way. As a CE major, I still had plenty of data structures, algorithms, operating systems, and other CS classes, enough I feel to handle any CS job. However, I also received a lot of exposure to hardware, and in fact my current job is primarily hardware-based (I'm working as a CAD Engineer doing standard cell library characterization and SKILL language programming).
It's nice because, at any time, I could switch over to programming. I have experience with Visual C++ and MFC, OpenGL, and software design in general, know several languages, etc. But I could also switch over to exclusively hardware if I want.
So, choose wisely, and good luck.
Also don't forget, in order for the script to run, there must either be a compiler (as in perl) or the executable must be compiled for that platform. I.e., this idea sucks, and I beg someone to convince me otherwise.
It's not the same thing. Like engineering technology vs. an actual engineering degree, you may start out at the same level, but where you end up is a different matter. It's probably true that CIS and CS majors start at about the same level with the same salary. I would bet CS majors probably make a tiny bit more on average, but that's probably just a minor difference if there even is one. However, if you want to move up in your field and become a manager, lead projects, and basically get away from just sitting at a desk coding all day, or perhaps move up to a more prestigious programming opportunity, CS is the way to go. I know that, at some universities, the distinction between CIS and CS may be pretty vague. But at a good engineering school like the one I attended (Texas A&M), the distinction is much more broad. While CIS majors were taking classes like Java and introductory database stuff, CS majors are taking Operating Systems, Algorithms, Data Structures, Software Engineering, Computer Engineering, Analog and Digital Circuits, etc.. These classes build a framework for your future in that you learn a lot of the framework required to be a good, intelligent programmer. Anyone can go check out a Java book from the library and learn the language, and even be successful with it. But the ones that push the envelope are the ones who not only know a billion computer languages, but also know what's going on underneath the hood so to speak. With CIS, you can still be successful and even pick up on some of these skills, but as an employer, I would expect you to prove these skills to me, whereas with a CS major, I might expect these skills to already be present. Just my $0.02.. -Dustin
Being an employee who recently received some valuable training, I can honestly say that, from most employee's perspectives, they will stay on at least for awhile out of respect for the training they received. It also helps if you give this training to new hires, or people who have only been with the company a short time, because they are less likely to leave. But in reality, if an employee is gonna jump ship right after they receive training, then they don't belong with you anyway. Because the bottom line is, they will jump ship eventually no matter what. Instead, I would work on making the workplace more inviting, by recognizing employees for their hard work, giving them financial incentives, etc. An employee who feels his/her work is valuable and respected--and feels he or she is getting properly promoted and rewarded--will probably be willing to ignore the better offers out there. I know in my case I have, and I'm happy.