Cal Poly Logo
David Janzen 
C a l i f o r n i a   P o l y t e c h n i c   S t a t e   U n i v e r s i t y  
David Janzen Home >

:: Software Engineering / Computer Science Difference ::

I often get asked, what's the difference between software engineering and computer science? My short answer is this:

  • computer science is the study of computers; what can they do?, how do they work at a logical (not physical) level?, how do we get them to do more things?, how do we get them to do things faster or more efficiently?
  • software engineering is applying computer science to build software systems that are useful for people.
  • computer engineering is designing and building the computers

I like to think of a spectrum from physics and chemistry up through electrical engineering, computer engineering, computer science, software engineering, information systems, business. Each level gets more abstract and generally builds on the previous layer.

Here is a quick overview of the three computing majors that our department offers. I teach primarily software engineering courses so it may be a bit biased.

1. Computer Science covers the core concepts and technologies involved with how to make a computer do something. Learning to program a computer by writing software is essential, and computer programming is used in most computer science courses. You will learn details about how computers and networks work, but with an emphasis on how software and programming languages work. You will learn how to make them do very sophisticated things (e.g. graphics, robotics, databases, operating systems). You will also learn about the theory behind how and why computers and software work. In your senior project, you will tackle a problem at the frontier of computer science. You may be building a new system, discovering better ways to design software, or developing new algorithms for projects in entirely different fields; it's up to you. Past student projects include: video games, computer modeling and animation tools, and a Linux driver for the Wii remote.

2. Computer Engineering teaches you how to design systems that include both computer hardware and software. You will take classes on how computer hardware works and how to build a computer. You'll take software classes with an emphasis on hardware-related software such as device drivers and operating systems. Computer engineering courses are taught by faculty from both the computer science and the electrical engineering departments. Working computer engineers design computers and the basic software that runs them, including both personal computers and the "embedded" computer systems that run cars, aircraft, videogames, etc.

3. Software Engineering focuses on how to design and build software in teams. You will take many of the same courses as you would in computer science, but you will take additional courses that teach you about topics like requirements engineering, software architecture, software testing, and software deployment. You will learn about working with people (communication, management, working with non-technical customers), processes for developing software, and how to measure and analyze the software product and the software process. The software engineering major requires that you take a three course (nine-month long) sequence called the software engineering capstone. The capstone courses are centered around a large project for an outside customer. In recent years we have built web and mobile applications for Microsoft, AWS, and Cru (see more here). Students work in teams of four or five people to elicit and develop requirements for the system, design an architecture, build prototypes, implement the system, then deploy and maintain the system.

See this additional comparison of our Cal Poly programs.

For another take on the difference between computing degrees, and what you can do with them, see ACM's Computing Careers website and particularly this overview.

Or, you can see what some Cal Poly students wrote on the subject a few years ago.


Cal Poly Home | Cal Poly Find It
CSC Department | SE Major

Last Update: 09/12/2006

David S. Janzen
Computer Science
California Polytechnic State University
San Luis Obispo, Ca 93407
djanzen (at)