zen perfect » Blog Archive » Computer Science vs Programming (Software Engineering)

Computer Science vs Programming (Software Engineering)

People often get these two confused since they overlap in many fields. You tell someone your major is Computer Science and they think that you’re a programmer. While that is true quite often, the concepts of computer science do not deal directly with code, but with the math and logic behind it. Software engineering, on the other hand, is your more typical concept of the computer programmer, who works on implementing ideas into software. I thought I’d do both of these fields justice by clarifying the difference.

First of all, I would like to clarify that web design or knowing how to use Photoshop is irrelevant to both of these fields. If you tell a non-techie that you major in computer science, they might ask you to make a website. This often works because people who work with computers are often tech-savvy and web design is relatively easy to pick up. However, beautiful websites are usually created by art majors, not engineers.

Software engineers write code. That is what they do. They are well versed with the programming languages and given a task to code, they will do so. They can convert human language into a computer language. This is who you hire when you want to develop a commercial piece of software. Software engineers can also write web applications because the coding procedure is more or less the same. In a sense, computer programmers do the brute work. This sounds crude but they are the ones who implement a given task. A pure programmer does not study algorithms but the available methods and practices to develop and maintain software.

Computer science is the study of discrete mathematics and the theory behind solving problems, often in code. Computer science is a lot more broad in the amount of material it covers. Anything that deals with solving problems in an algorithmic process is computer science and thus is often written as code because of its step-by-step procedures. That is why computer science branches a lot into discrete mathematics. Computer science, in fact, does not require computers. It is the theory involving the processing and handling of data in different ways. This includes algorithm analysis, computational sciences, data structures, parallel computing, artifical intelligence, and so on.

Pure computer science is very research oriented and may not even have commercial applications. Computer science is more theoretical and requires more problem solving. You will not learn all the programming languages out there, but instead how to prove equations and make algorithms more efficient. You will learn various data structures and how to set various problems into mathematical equations.

The reason these two fields are so often confused is that most computer scientists are well versed in programming and can take on software engineering tasks. Many people do so because software engineering is more commercial and practical while with computer science, you may be solving problems that have never been solved before.

I see many programmer job postings require at least a bachelor degree in computer science. From one aspect, I disagree with this. A computer science major is overkill for a pure programmer in terms of theoretical knowledge. However, from another aspect, I agree with this because a computer science degree shows that the programmer will think deeper beyond the superficial process of making a piece of code work.

Both majors are very important and almost no one stays 100% within their field but instead in an overlap of many fields. However, hopefully the next time you hear the term “computer science” and “computer programming,” you will see them in different ways :)

zen perfect does not accept donations but would appreciate it if you

I found this write up and liked it. I’ll be trimming it down to be part of a definitions page for one of my blogs, but I think Paul did an excellent job of sorting out the differences and definitely deserves credit for his observations 🙂