I know CIS is more business oriented and CS is more math based, but what specific developer related classes/skills are taught only in CS? I currently have a CIS degree and am trying to understand the typical "gaps" in development knowledge that exist for CIS degreed developers vs CS.
Here are a few classes that I wouldn't expect CIS to cover:
- Compilers
- Algorithms
- Computer Architecture (w/ projects like designing an ALU)
- Theory of Computation
Furthermore, I doubt they go into much depth with an Operating Systems class if a specific department has one.
However, I'm not sure what you mean by "heavier development work". Within software development, there are many choices/options. Either way, if you are serious about software development the first thing you need to do (if you haven't already) is read Code Complete.
Depends on what you mean by CIS. There's Computer Information Systems, which is generally going to be much more business-oriented, and won't delve nearly as deeply into the fundamentals of computer science. As I understand it, this degree is basically equivalent to a Management of Information Systems degree.
There's also Computer and Information Science, which is equivalent to a Computer Science degree. My department used both of these terms interchangeably.
If you're looking to fill in the gaps in your skills, I'd probably look over the curriculum for a computer science degree. The things you aren't strong in are the ones you need to brush up on. I'd expect that algorithms and data structures are a good place to start. (Most people are not as skilled in this area as they should be, even those with a CS degree.)
Check out Yegge's phone screen post, too. The skills he outlines there are pretty fundamental. In fact, any good posts related to interviewing would probably highlight some areas to study up on.
Generally speaking, Computer Science is about how to program computers and Computer Information Systems is about how to use computers.
For example, a CS graduate should have the tools to write a relational database and a CIS graduate should have the tools to use a relational database.
I have a CIS degree, and while we covered based programming (in VB and Java) and Database design, the degree was structured with an emphasis on business and enough programming to help me understand how IT fit into the business as a whole. CS was much more in depth - as another poster said, compilers, algorithms, C, and so on), whereas CIS was pretty high level as the technology goes. It really seemed like the purpose was to make somebody more of a technical analyst, or maybe even prepare them to manage a technology group, as opposed to being hands-on with the technology themselves.
FWIW, I ended up going back and getting my MBA a few years later, since I felt like my undergrad didn't give me enough of the business end of things. Or maybe it's just that I slept through my undergrad business classes because I didn't see the point then, but once I got into the real world, I found that knowing how to compile wouldn't get me very far if I didn't understand what the person making the request really wanted.
Computer Science really is mostly math, algorithms, and theory. If you want to focus on development, I'd suggest looking into Software Engineering and related classes. At my college, we only had two SoftEng classes at the time, and I wish I had paid more attention to them now that I'm developing for a living. As for CS, the classes I believe have been the most help have been classes that focused on algorithms, data structures, and logic.
I am a Computer Information Systems student in my last semester and at my school I've found that the major differences have been that I've taken business classes in place of the physics and chemistry classes I would have taken as a CS major. I also didn't have to take two of the CS classes that CS majors are required to take but then again, I had to take classes like Web Programming and Databases which CS majors at my college didn't have to take.
I felt my school did a pretty good job because the classes, even for CIS majors, are mainly taught in C++ for the first three years. This is the first semester I've had where we've used other languages like Actionscript and C#.
I have a CS degree, and had a few roommates and friends in the CIS department. One difference that I thought was exemplary of the overall difference was in the operating systems classes in the two deparment. The CIS department taught how to install them, while the CS department taught how to write them.
some links to details about the differences: http://stackoverflow.com/questions/395763/is-a-software-engineer-a-computer-science-major/396348#396348
Since there's already a good answer, here's some anecdotes:
I've got an A.S. in C.I.S. and a B.S. in Computer Science and the difference is pretty profound.
I probably did more programming to get my associates since I was at a tech school and they like to do labs and hand's on.
I think you're going to learn a lot more about modeling in good C.I.S. classes and you can't discount that, especially if you're going to do RDBMS stuff.
If you're a good programmer and you want to fine-tune your leadership skills, you can probably make a lot of friends doing C.I.S., everything is done in pairs and you'll pull most of the weight.
Going from C.I.S. to Comp Sci without adequate preparation is like going into the attic and realizing you forgot your lamp in the kitchen.
The programs you write in your comp sci classes will be more likely to implement the designs you write in your C.I.S. classes and the programs you write in your C.I.S. classes will be more like the examples in your learn VB in 21days book.
C.I.S. classes are the fun parts of CS classes mixed with a lot of boring drivel.
You will need to document your code in both CS and C.I.S. to get an A on the project, but you need to document your code for two completely different reasons, in CS because you'll need to remember what the heck you did, and in C.I.S. because you'll want to be able to explain it to someone else so they can copy it.
I got a degree in CIS and found that in my internship and recent job, that I've picked up a lot of what I missed in the CIS degree: Data Structures, Design Patterns, and Algorithms. I chose my courses very carefully in school. Any electives I had went toward more hands on programming classes.
The Systems Analysis classes are well worth it! They have enabled me to work with clients and requirements with ease and depth. Highly recommended for coders.
Differences in degrees, from a practical and anecdotal point of view:
- My brother has a CIS degree, and can't find tech work.
- I have a half-completed CS degree and work experience, and have no trouble finding jobs.
The problem - with the particular program he went through - is that he learned no code at all, but did learn significant management/design skills. He doesn't want to go the Business Analyst route, and all of the other IS jobs the degree trained him for are doing enough management and/or design that the positions require experience first.
Gaps in the IS degree
In my brother's case, he didn't learn how to code. The primary three classes my day jobs are based on are:
- Introduction to Computer Science - OOP, functions, methods, variables, loops, decisions, using a debugger
- Introduction to Data Structures - lists, trees, hashtables, sorting, searching, storing, O(n)
- Algorithms - B-trees, hash functions, graph theory, so on.
Gaps in both degrees Neither degree fully prepares you to actually build commercial software, unfortunately. Some things that are missing:
- Using an IDE (Eclipse, Visual Studio), using a debugger
- Version control, like Subversion, Mercurial, Git
- Bug tracking
- (Maybe touched in IS) the Software Development Lifecycle.
Other questions have done a decent job of addressing this last bit.
can someone please guide me, i have a bachelors in Healthcare Administration and the pay sucks, i know a lot about Electronic medical records, so i'm looking to go back to school and get a degree in CS or CIS to enhance my career and job outlook. MY problem is, i dont know which would be more beneficial CS or CIS???...at this point i'm willing to go back to school and take all required classes but i need to make sure that my Job oulook will encrease after i get the degree.