The differences between computer science and software engineering seem obvious. Computer science is an academic discipline that studies the theoretical and mathematical side of computing. Software engineering is a practical discipline focused on the creation and maintenance of software systems.
These disciplines are not as different as they seem, however. There are Bachelor of Science in Computer Science (BSCS) and Master of Science in Computer Science (MSCS) programs that offer software engineering as a concentration option. You can even choose software engineering as your focus area in many computer science PhD programs. And some colleges and universities don't offer a separate software engineering degree because they expect comp sci students to learn the fundamentals of the discipline via the core coursework.
Figuring out where you belong can be challenging unless you know a lot about these disciplines and the degree programs and careers in each. This guide can help. In it, we look at computer science vs. software engineering and cover:
Comp sci isn't just concerned with esoteric theoretical topics. As the University of California - Santa Barbara points out, computational thinking creates "technology and systems used in a wide range of industries, including medicine, communications, entertainment, manufacturing, business, and science." Computer science jobs pay well across all of these fields.
We can draw a distinction between computer scientists and people who work in computer science. The former, according to the University of Alabama at Birmingham, " research, test, and create." The latter might work in hardware configuration, cyber security, information systems, or… software engineering.
Software engineering is a discipline that applies engineering principles to software development—a vague definition at best. Some sources use software engineering to refer to everything related to the practice of computer programming and systems analysis. Others assert that software engineering is a distinct approach some back-end software developers use. Merriam-Webster defines it as "a branch of computer science that deals with the design, implementation, and maintenance of complex computer programs." The book Software Engineering at Google states software engineering is "not just the act of writing code, but all of the tools and processes an organization uses to build and maintain that code over time… Software engineering can be thought of as 'programming integrated over time.'"
The answer to the question 'Should I get a master's in computer science?' is probably. You can advance in many areas of tech without an MSCS—or any computer science degree—but tech professionals with master's degrees have more opportunities for advancement and advance more quickly. There are also niche comp sci specialty areas that are hard to break into without a graduate degree—some even require a PhD in Computer Science. Look into all your options before making any decisions.
There are jobs for comp sci undergrads in software design and development, marketing, database administration, and web development. You might also find entry-level comp sci jobs in cyber security or network administration.
Colleges and universities look for applicants with excellent grades, competitive SAT or ACT scores, and extracurricular experiences demonstrating an interest and aptitude for the field. Students who've completed one or more internships at tech-focused companies or self-directed computing projects may have an advantage.
Full-time BSCS programs typically last four years. Much of that time is spent on coursework, but many programs also build research projects and internships into curricula.
Most colleges and universities have a set undergraduate CS pathway designed to teach the fundamentals of computer science. Students in University of Tulsa's BSCS program, for instance, take:
A master's in computer science is an asset regardless of whether you're interested in joining the ranks of management. In Forbes' rankings of graduate degrees by potential salary increase, CS master's degrees offered the second-biggest income bump.
The best MSCS programs are highly selective. Successful applicants usually have significant professional experience in tech or research credits. They may not have majored in computer science as undergrads, however. There are both on-campus MSCS programs for non-CS majors and online MSCS programs for non-CS majors.
How long it takes to get an MSCS varies. There are full-time, two-year Master of Science in Computer Science programs, part-time MSCS programs that can take three or more years to complete, and accelerated comp sci master's programs that last 15 to 18 months.
MSCS programs are even more likely to be concentration-based, though some colleges and universities take a generalist approach to this degree. The 100 percent online computer science master's program at Stevens Institute of Technology, for instance, has a set course list with classes like:
Earning a doctorate in computer science makes sense if you want to pursue a career in academia or research. Still, a PhD won't give you a salary boost over a CS master's degree or make you more hireable in most professional roles.
Surprisingly, you don't need an academic background in comp sci to get into many CS doctorate programs. What you will need is to show significant professional experience or achievements in comp sci. Schools look for high achievers who are likely to make contributions to the field during the program.
Most colleges and universities expect CS PhD students to commit to four to six years of work. The first two years are often spent on coursework, while subsequent years are devoted to research and teaching.
Some computer science doctorate programs have a fixed PhD curriculum dictated by programs of study. Others have each student design a unique curriculum based around an area of interest. Southern Methodist University splits the difference. Its CS PhD students take just four core courses:
From there, they take advanced courses related to a major concentration area and conduct original research.
Many people claim you can become a software developer without a degree, and they're not wrong. You can get started in software engineering after completing a software engineering bootcamp or just teaching yourself to code.
Advancing in software engineering, however, is a different story. A degree in software engineering, computer science, or computer engineering can help you stand out from the crowd, qualify for senior-level roles, and earn more.
Bachelor of Science in Software Engineering (BSSE) programs prepare students for roles in requirements engineering, software architecture, software design, testing, implementation, configuration management, and product management.
The students most likely to get into BSSE programs have not only excellent grades and competitive standardized test scores but also a demonstrable interest in and aptitude for programming. Taking AP courses in computer science or advanced technology can boost your chances of getting accepted.
Like most undergrad pathways, bachelor's-level software engineering programs typically require students to complete 120 credit hours of work over four years.
It's not uncommon for BSSE and BSCS curricula to differ by only a few courses. In addition to core liberal arts classes, software engineering students take courses like:
Master of Science in Software Engineering (MSSE) programs are less likely than MSCS programs to offer official concentration tracks, but some do. Cyber security is a common specialization option.
Software engineering master's programs typically look for applicants with bachelor's degrees in software engineering or a closely related field like computer science. Some, but not all, programs require that applicants have both basic programming and computer software development skills plus professional experience in tech.
Most MSSE programs require that students complete about 30 credit hours of coursework. Some full-time programs last two years, part-time programs last three or more years, and accelerated programs can be completed in just 16 to 18 months.
Typical courses in MSSE programs include:
There aren't many PhD in Software Engineering programs in the US, and those few are quite competitive. You'll only need to pursue a software engineering doctorate if you want to do research-focused work related to the evolution of software development.
Top programs look for applicants with outstanding professional achievements in software development, publishing credits or patents, and recommendations from notable industry experts.
Earning a PhD in software engineering can take anywhere from three to seven years. Program length is variable because students are done when their research is complete, not when they've passed specific courses.
Students in software engineering doctorate programs may take courses based on their research area or complete a set curriculum of courses covering topics like:
No, but they're closely related. "It's an interesting question," writes one Quora commenter in a thread about whether software engineering is a branch of computer science, "and gets to some of the philosophy of engineering and science - and how the two relate. If we consider that engineering is essentially applied science, then we can certainly look at software engineering as an outgrowth of computer science."
There are jobs for computer scientists in every industry, meaning a CS degree can lead to careers in whatever field you're passionate about. After earning a master's in computer science, you might do work related to:
According to PayScale, average salaries in computer science hover around $79,000. The problem with that figure is it's calculated using everything from the lowest entry-level salaries to the juiciest executive salaries. With an MSCS, you might earn closer to $103,000 or more in some of the roles above.
Companies known for both hiring computer scientists and their better-than-average benefits include:
There are jobs for software engineers across industries in fields as different as finance and professional sports. There are also many related roles in software beyond 'engineer' and 'developer,' like:
PayScale reports the average software engineer earns about $87,000, but that figure doesn't tell a complete story. With a software engineering master's, you might earn closer to $106,000. The related roles above all clock in at different pay rates. If you become a QA analyst, for example, you'll earn about $56,000 until you advance into higher-paying roles like quality engineer ($69,000) or product manager ($97,000).
Specialization can boost your earning potential, and the best software engineers have more than just tech skills. Developing your soft skills can also help you advance more quickly.
These companies make the list of top employers for software engineers because they hire lots of them and pay quite well:
There are different ways you can approach this question. First, consider your goals. Do you want to work in a specialized computing field like robotics, information security, or AI? Then you may be happiest in computer science. Comp sci is also an excellent field for anyone looking for job security. On the other hand, if you've always pictured yourself coding software for a living—or managing a stable of coders—then software engineering is clearly where you belong.
You should also look at your interests and aptitudes. Software engineering is a good option if you enjoy designing and perfecting products, you thrive in business settings, and you have a talent for hands-on work. But you'll be happier in computer science if you're passionate about a specific area of computing, like computer vision, robotics, or natural language processing.
Questions or feedback? Email email@example.com