Like all undergraduate degrees in computer science, a bachelor's in software engineering begins with general education and tech fundamentals, with students gaining more in-depth knowledge as they progress toward graduation. A typical four-year curriculum includes study of computer programming, mathematics, and the software life cycle.
An associate degree in IT or computer science can provide access to select entry-level jobs in this field, but a bachelor's degree is the standard minimum education requirement for software engineers. Earning a master's degree allows you to pursue research, management, and information security careers.
In this comprehensive degree guide, you'll learn key details about software engineering programs and gain perspective from an expert in the field.
What Is Software Engineering?
Software engineering encompasses the systematic design, development, production, and maintenance of complex computer programs. This process requires collaboration and teamwork as software projects move from one life cycle stage to the next: analysis, design, coding and implementation, validation, installation, and maintenance.
Ready to earn your bachelor's degree? Find out more about the top software engineering colleges in the U.S. on our program rankings page.Your Guide to Earning a Software Engineering Degree Online in 2019
What Does a Software Engineer Do?
Software engineers create operating systems, mobile and web applications, and networking applications. Though the two roles have some overlap, it's important to distinguish between software engineers, who complete tasks throughout the software life cycle, and software developers, who primarily focus on one part of the life cycle: writing and testing code.
A software engineering degree prepares graduates for work in a variety of computer science occupations.
- Software Developer
These professionals design and develop new software and improve existing programs. They create concepts for new applications and team with computer programmers to write the code. Software developers build programs and operating systems. Most developers hold a bachelor's degree in software engineering or a related field.
Median Annual Salary: $105,590
Projected Growth Rate (2018-28): 21%
- Computer and Information Systems Manager
Often referred to as information technology (IT) managers, these specialists oversee an organization's computer systems and infrastructures. They help specify an organization's hardware and software needs and maintain current systems and networks. Most employers require IT managers to hold a bachelor's degree in a computer-related discipline.
Median Annual Salary: $142,530
Projected Growth Rate (2018-28): 11%
- Computer Programmer
Computer programmers help software developers implement their ideas by creating algorithms and code based on designs and models. In bachelor's programs, programming students typically master one or more coding languages and gain experience creating functioning programs and applications.
Median Annual Salary: $84,280
Projected Growth Rate (2018-28): -7%
- Computer Systems Analyst
Sometimes called systems architects, computer systems analysts work with managers to procure and implement hardware and software systems. They evaluate systems in place and propose changes to improve overall efficiency and productivity. Computer systems analysts typically specialize in an industry such as healthcare, finance, or government.
Median Annual Salary: $88,740
Projected Growth Rate: 9%
- Web Developer
Web developers design and create websites and web applications. They build the user interface of a site and code the underlying processes that make it function. Software engineering programs often teach the programming languages that web developers use.
Median Annual Salary: $69,430
Projected Growth Rate (2018-28): 13%
Want to know more about the types of jobs you can pursue after earning a software engineering degree? Explore your future with our comprehensive career guide.Nursing Careers Guide
Sam Gavis-Hughson, founder of Byte by Byte, helps software engineers interview for jobs at top tech companies. He is the author of "Dynamic Programming for Interviews," an e-book that shows how to succeed at dynamic programming interviews. Through his blog and free content, Sam has helped thousands of students -- and 40+ coaching clients -- land jobs at Google, Amazon, Microsoft, Bloomberg, and Uber.
- Why did you choose to earn a degree in computers? Was this a field you were always interested in?
I knew that I wanted to be an engineer for a long time. Math and science were always something I enjoyed doing. Originally, I thought I would be a mechanical engineer. But I realized that I really enjoy making the systems that actually control the robot. I learned that software was the way to do that. I played around with programming for a while but didn't know I wanted to study computer science until I took my first course. I thought it sounded interesting, but it wasn't until my first course that I was totally hooked and fascinated by it.
- What was the job search like after completing your degree? Did you feel fully prepared when making the transition from school to the workplace?
My job search began well before I completed my degree. I had interviews every week for the entire fall semester, beginning in August. I would have one or more interviews every single week. Going into it I didn't feel prepared, but having so many interviews allowed me lots of time to practice. I got more comfortable with it as time went on.
Schooling did not prepare me for industry, but it gave me the basics. What did prepare me for industry was internships. There is so much specific technology (and things to learn for each company) that there's no way you're going to learn it all in school. But if you focus on the fundamentals and learn new skills, that's the big thing. Doing internships will give you a general knowledge of how software engineering works before you go into your career.
- What are some of the challenges you face in your work on a day-to-day basis?
When I was working as a software engineer, the biggest challenge I had was the vast layers of complexity that you need to understand. If you don't understand, it can be very difficult to figure out what you're doing. Because of that, you have to be really comfortable asking for help or else you will waste a huge amount of time.
My current job is challenging because there is no one to hold me accountable and there are no safety nets. I run my own business, so I have to get up, figure out what to do, and do it. I don't get a regular paycheck, so if I want to get paid and put food on the table, I have to go out and get a new client or sell a course. That's how I earn money. It's exciting, but it's also a rollercoaster.
- How is the job interview process for software engineering jobs different from the process for other jobs in computing? How have you seen the process change over time?
The big thing with software engineering jobs is that you are going to be expected to code in your interview. Even with other sorts of jobs in software engineering, you should expect to code in some way and some form. There's been a lot of backlash recently to whiteboard interviews. You're seeing a variety crop up. You're seeing things like take-home tests, pair programming, and different sorts of evaluations. But it all really comes down to the same thing. It's all the same fundamentals at the end of the day. So if you prepare for one type of interview -- like whiteboard interviews -- and you prepare strategies for that like we talk about on Byte by Byte, then you are going to have the skills you need, regardless of the type of interview you're doing.
I always recommend talking to your recruiter. Ask the recruiter ahead of time what type of interview you're going to be doing. Your recruiter is your ally, and they're incentivized to help you get the job.
- Why did you decide to start your own business?
When I was in college studying computer science, the people we looked up to were startup founders. People like Mark Zuckerberg, Steve Jobs, Sergey Brin, Larry Page … it was this romantic thing to start a huge company. That's what initially got me interested in starting a business.
What really sealed the deal for me was that I love doing so many different things. I really enjoy software development, but I also like problem-solving. Problem-solving is the core of programming, but it's also core in business. I do coding and problem-solving with my coaching clients, my website, and business. As a creative person, it helps me to exercise my brain and do so many different interesting things.
- What advice would you give to students who are considering a degree in software engineering?
The number one thing I tell people is do not do it just for the money. If that is your main reason, you will be miserable. You can start out right away making a six-figure salary, but it's a lot of effort. With software engineering, you are depending on the way your mind works. That means it can be really easy or really hard. If it's hard for you, you will be slower than everyone else, and it'll be really hard.
If you find yourself decently good at programming, then I would consider it. For me personally, I was inclined to try projects in my free time and that got me excited. But I put in more work than other people who weren't as interested. Software engineers are an intense group of people. Many do not just do the main job but side projects as well. They work long hours, and it's not easy money. This is something you should do only if you really enjoy it and are excited about it.
What to Expect in a Software Engineering Program
Students pursuing a software engineering degree learn how to build software from the ground up. Coursework covers knowledge and use of specific programming languages; project management methodologies; and design, coding, and testing techniques used in software development. Learn more about popular concentration options and common courses below.
Concentrations Offered for a Bachelor's Degree in Software Engineering
- Computer Programming
Students in this concentration learn to create commands that enable a computer to perform calculations and tasks. Computer programming students learn to write code in coding languages such as Python, Java, and C++. They learn to build custom code and utilize code libraries to accelerate the programming process.
Careers This Concentration Prepares For: Computer Programmer, Software Developer, Software Engineer
- Web Design
Software engineering students who specialize in web design learn to develop user-friendly and aesthetically pleasing web pages. They learn to apply the principles of software development and design to the web. Web design students may concentrate on front-end (user interface) or back-end (database/business logic) development.
Careers This Concentration Prepares For: Web Developer, Computer Programmer, Software Engineer
- Project Management
Students who plan to lead a team or a division can gain project management skills while earning a software engineering degree. Project management courses introduce general organizational techniques and teach strategies specific to software development. Students also learn to supervise employees and set long-term goals.
Careers This Concentration Prepares For: Senior Software Engineer, Lead Software Engineer, Software Project Manager
- Software Design
Software design involves planning and modeling new applications. Here, students learn to assess user needs to create a strategy for developing solutions. Coursework covers techniques related to designing individual software processes as well as the overall architecture of a program.
Careers This Concentration Prepares For: Software Designer, Software Developer, Software Engineer
- Information Technology
Students concentrating in IT learn to build and maintain computer networks and systems. They gain knowledge of common hardware systems and software packages. They also learn to troubleshoot issues, communicate with system users, and identify a firm's technology needs.
Careers This Concentration Prepares For: Computer and Information Systems Manager, Computer Systems Analyst
Software Engineering Courses
The required courses in any software engineering degree vary, depending on the college and program. However, most degree programs cover the same basic principles and techniques of programming and software design. Some common software engineering courses are listed below.
- Computer Programming
These courses cover principles of computer programming and good coding practices. Software engineering programs often include introductory and advanced computer programming courses, which prepare students for jobs as software developers and computer programmers.
- Software Specification and Design
This course covers various techniques that software professionals use to determine the specifications and overall design of a new program. Students learn to interview potential users, create design requirements, and build prototypes.
- Software Project Management
Software project management courses prepare students to lead teams of software developers. They learn to apply project management techniques and principles to oversee, organize, and plan complex projects in software design and creation. This course is ideal for aspiring senior software developers and project managers.
- Software Architecture
In this course, students explore essential structures of software systems and learn to identify common architectural styles and standards. Learners study the frameworks that are essential to popular off-the-shelf applications and programs and prepare for careers as software engineers or developers.
- Systems Programming
This course provides an overview of computer systems and the relationship between hardware and software. Students learn how operating systems connect hardware and software. They gain a basic understanding of computing processes and memory -- necessary for aspiring IT professionals, software engineers, and computer programmers.
How to Choose a Software Engineering Program
Choosing a bachelor's program in software engineering can be challenging. Programs vary widely, and each student has particular needs and preferences. You should carefully assess each program, considering factors such as academic requirements and costs.
Students who plan to concentrate in a particular area of software development, such as web design or computer programming, should select schools that offer relevant specializations and electives. Those who value experiential learning should choose a program that includes opportunities for developing software in a real-world setting via an internship. Program accreditation is also an important consideration.
Along with calculating tuition costs, learners should factor in fees and other expenses. On-campus students should also consider the cost of relocating, living in a new area, and potential job opportunities after graduation.
Programmatic Accreditation for Bachelor's Programs in Software Engineering
In general, you should attend an accredited school to ensure other institutions and future employers recognize your software engineering degree. Accreditation requires a lengthy review process and indicates that an institution meets academic standards. The federal government offers financial aid only to students at accredited institutions. Most employers and graduate programs require candidates to hold a degree from an accredited school.
Schools can earn institutional accreditation, while programs can receive field-specific accreditation. Software development students should look for programs with accreditation from the Accreditation Board for Engineering and Technology (ABET). Programs may also receive accreditation from the Computing Accreditation Commission, a body within ABET.
Software Engineering Admissions
Students should research admission requirements in advance to avoid last-minute issues. Most colleges in the U.S. accept the Common App, a standard application comprising a single form and essay, which students can submit to many schools. Most schools also request official high school transcripts and SAT or ACT scores. Others may require an interview component, a supplemental application, or an additional essay.
Most students apply to 6-9 institutions, including safety schools, target schools, and reach schools. The admissions process for online programs can be more time-consuming than that for on-campus programs.
- Minimum GPA: Schools generally require applicants to have a minimum 3.0 GPA. Most institutions consider applicants with lower GPAs who excel in other areas.
- Applications generally require you to enter basic information and a short essay. Most schools accept the Common App, though some require supplemental materials. You should expect to spend significant time revising your essay.
- Applicants must typically submit official high school transcripts. Most high schools will send these directly to colleges, usually for a small fee.
- Letters of Recommendation
- Some colleges require letters of recommendation from teachers, coaches, or employers. You should request letters well in advance of the application deadline.
- Test Scores
- Though optional at some schools, most institutions require standardized test scores from the SAT or ACT. Some institutions post the minimum scores for acceptance on their website.
- Application Fee
- Though not all universities have an application fee, those that do typically charge $25-90 per application. Students with financial need can apply for fee waivers.
High School Preparation
If you are a high school student wondering how to become a software developer, the best tip we can offer is to commit to early, pre-college preparation.
Finally, stay focused on college application requirements. Don't forget to take admissions exams. Craft your personal essays with care. Know in advance whom you want to ask for letters of recommendation.