While browsing reddit.com, I noticed an article about the “6 Degrees of Computer Science.” It’s an article which tries to tease apart the different disciplines of computer science, software engineering, and other related fields and the article failed horribly in doing so. I’d like to try and define the disciplines as I see them and though I’m sure it differs from school to school, I’ll try my best to be general. When going into the computer industry, the hardware/software division is the biggest choice. I’m not even going to include computer engineering because it is more an electrical engineering field, which is hardware.
The disciplines can easily be defined by looking at the names of the fields. Computer science is a science, software engineering is engineering, and computer information technology is focused on the information. As defined by Wikipedia,
Science, in the broadest sense, refers to any system of knowledge which attempts to model objective reality, in a way which can be used algorithmically to make concrete and quantitative predictions about future events and observations… the organized body of knowledge gained through such research.
Engineering is the design, analysis, and/or construction of works for practical purposes.
Information Technology deals with the use of electronic computers and computer software to convert, store, protect, process, transmit and retrieve information, securely.
Computer Science
In it’s purest form, computer science is math and really doesn’t deal directly with computers at all. Many famous computer scientists never even really used computers or wrote code. Computer scientists are code independent and many prefer functional languages which more closely represent math than a production definition. The focus on theory makes CS very flexible because it can be applied.
Software Engineering
Engineering is more about design and implementation: programming. Computer science lends things like algorithms, data structures, and programming paradigms which can be used as tools for real world uses. The distinguishing focus is on industry and business.
Computer Information Technology
As I mentioned above, IT focuses more on the information and the functional uses of tools on that information. Instead of knowing how to write a compiler, they know how to program in C#. Or instead of knowing how to implement a database, they know how to use mySQL. CIT can hit the ground running where CS and SE may take some time to apply said theoretical knowledge.
A nice way of looking at this is: A computer scientists would design the language and the parsing algorithms for HTML parsing. A software engineer would implement the parser using the language designed by the computer scientist, and the CIT build the web site using the database, markup language, and Flash, which were implemented by the SE.
In the real world, most computer science departments employ a mixture of computer science, software engineering, and even a bit of computer information technology to maximize a students’ chances of finding what they want in a career. Computer scientists is usually more research and academia centric while software engineers and CITs are more industry driven. Of course there are exceptions to this, as there is anything else.
- None Found