Computer science or computer engineering for software engineer?
The aim of this post is to contrast some computer terms used in the industry and academia as well. Some people are just curious to know the differences but for students in particular, realizing what these terms stand for is very important before deciding on a certain career path. Please note that there is no standard definition for such terms, you may find disagreements within both computer industry and academia. For that reason, I will be brief and I hope my take on that will help students better decide what to pursue next in their future careers.
Think of it like mathematics, physics, chemistry and biology. Computer science is just another branch. The main focus of computer science is the mathematical foundation and theory of computing. Computing in few words is the art of storing, exchanging and processing data and instructions. As a computer science student, you will be learning topics like design and analysis of algorithms, data structures, programming languages, operating systems, database management systems, compiler design, information theory, artificial intelligence, computer graphics, computer networks, etc. In theory, computing is a branch of mathematics however a typical computer science major is a mix of both theory and applications. I personally believe having a computer science degree is very important for anyone willing to join the software industry. If you think otherwise, please leave me a comment.
As opposed to computer science where computing theory is the main focus, the main emphasis in computer engineering is how to build a computing machine (i.e computer). Computer engineering deals with digital electronics to build computer hardware and peripherals. One of the main topics in computer engineering is computer architecture and how to design and optimize a microprocessor. A student pursing a degree in computer engineering is expected to take courses in chemistry, physics, electronics, math and computer science. I personally believe that having a computer engineering degree is not a must to join the software industry. Please put in mind that computer organization is an important topic to get familiar with as software engineer. Some computer science degrees offer that course.
Now we know how to build a computer (computer engineering) and have the computing foundation (computer science), the next step is to build a complex software application that adds value to our life. That is when software engineering comes into play. Software engineering skills include the ability to design and architect a complex software application, scale it and maintain it. It requires quality assurance and processes to take it through a development cycle from requirement gathering all the way to deployment, maintenance and support. Software engineering skills are needed if you want to join the software industry. Typical major in software engineering would have a mix of computer science and software engineering topics.
I hope I was able to shed some light on these different but related topics and clear any confusion. Please use the comments section if you have any feedback. Thanks for visiting.