Software Engineering
The Bachelor of Science in Software Engineering degree prepares software engineers: collaborative professionals working on a team to develop software products on time, within budget, and those meet customer requirements. Graduates of this program will possess the practical knowledge and skill of a defined engineering approach for complex systems analysis, planning, design, and construction. The coursework builds upon computer science fundamentals and mathematical principles to cover the design, analysis, verification, validation, implementation, deployment, and maintenance of software systems.
There is often confusion regarding the differences between computer science, software engineering and IT/IS. The following diagram from the Association for Computing Machinery (ACM) provides insight into the relationship between each of the areas.
Electrical Engineers (EE) are primarily involved with hardware design, while Computer Engineers (CE) design systems that include both hardware and software. Computer Science (CS) covers the concepts and technology involved with how to make a computer do something (graphics, robotics, etc.), and software engineering (SE) focuses on how to design and build software. There is significant overlap between computer science and software engineering and the intersection between the two is often programming; however, there is a key difference. Computer scientists test theories and work at the edge of the unknown. Software engineering is an engineering discipline. Engineering starts with the knowledge that has already been proven reliable and develops solutions for technical, societal and commercial problems. Information Technology (IT) and Information Services (IS) are focused on delivering technology solutions to an organization.
The Snow College Software Engineering program provides students with an educational experience that builds upon traditional computer science and engineering and produces software engineers that create high-quality software in a systematic, controlled, and efficient manner. This is accomplished in the following ways:
The degree has a strong emphasis on mathematics and use of engineering methods in software design.
Courses place an emphasis on software processes and lifecycles and utilize a team approach to building software with active learning (“learning by doing”) which also provides leadership opportunities, such as software development team lead roles, for every student.
Courses include significant learning in management areas such as project planning, resource allocation, quality assurance, testing, metrics, maintenance and troubleshooting, configuration management and personnel management.
Courses incorporate student teams to work on activities specifically designed to guide students to collaboratively construct their own understanding of key concepts, and, at the same time develop key process skills like communication, teamwork, critical thinking and problem-solving.
Students will have a choice of an emphasis in:
- Entrepreneurship: The combination of computational and entrepreneurial thinking to identify, assess and implement ideas that will create new markets and technologies.
- Digital Media Design: The use of integrated media to communicate messages through electronic mediums such as the Internet, film, television and mobile technologies.
- Web Development: The use of tools including HTML, CSS, and JavaScript to create and maintain high quality, interactive websites.
The software engineering curriculum culminates in a year-long capstone sequence where the students work in teams to build a software system reflective of current practices in the industry. Additionally, students are encouraged to participate in internships prior to and during enrollment in these capstone courses in order to gain direct industry experience and insight before embarking upon their own projects. Snow College will be partnering with businesses to develop these learning opportunities that will provide students with industry relevant experience.
The Snow College Software Engineering program prepares students to enter the software engineering profession immediately or to go on to pursue advanced educational opportunities. The first two years of the program are also compatible with transfer to an institution offering a degree in computer science.
Software Engineering Courses
- SE 3250 Survey of Languages
- SE 3410 Human Factors-Software Design
- SE 3450 SW Desg. Principles, Patterns
- SE 3520 Database Systems
- SE 3620 Distributed App Development
- SE 3630 Mobile Application Development
- SE 4120 Management of Software Project
- SE 4220 Graphical User Interfaces
- SE 4320 Personal Software Practices
- SE 4400 SE Practicum I
Software Engineering Careers
Software engineering is the application of engineering principles to the development of software. Computer scientists learn what is true, how to test hypotheses, and how to extend knowledge in their field. Software engineers learn what is true, what is useful, and how to apply well-understood knowledge to solve practical problems.
Career Paths in Software Engineering
- Applications Development: Problem solving-based, non-Web-based software development that includes programming languages such as Java and C#.
- Systems Development: Designing and coding background software created to support application development; includes program languages like C and C++.
- Web Development: Designing software or applications to run in a Web browser and used programming languages such as HTML, JavaScript, and PHP.
- Embedded Systems Development: Designing computing systems and software to work on non-computing devices, such as automobiles. Uses programming languages such as C and assembly languages.
Earnings for Software Engineers
According to the Bureau of Labor Statistics, a typical starting salary is around $70,000 and most software engineering careers pay between $80,000 and $105,000 per year. Earning potential varies by location, experience, education, industry, employer, and certification.
Skills needed for Software Engineering
Software engineering professionals are skill-based, requiring highly specialized training in both technical and non-technical areas. Employers seek candidates who possess a blend of technical and soft skills. Soft skills valued by employers include communication, organization, project management, problem-solving, critical thinking, and decision making.
Beyond soft skills, software engineers also develop both technical and industry-specific skill sets that are applicable to all careers in computer engineering and specific areas of practice, respectively. Example technical skills include programming languages, computer hardware and software, and system architecture.
Preparing for a career in Software Engineering
1) Earn a degree in software engineering or a related field. Most software engineer positions require a bachelor’s degree. Majoring in software engineering will provide the most useful background for designing and perfecting software. To prepare for your career, here are some things you can do.
2) Begin programming immediately. Even if you’re still in grade school, you can give yourself a huge head start by teaching yourself programming. Software engineering is not focused exclusively on coding, but you will need to know at least a couple of languages, and a deeper understanding of how they function. There is no widespread agreement on which languages are most useful, but these are all popular choices:
- C++
- C#
- Java
- JavaScript
- Python
3) Study math. Software engineers sometimes create the mathematical algorithms that allow software to function. Focus on developing and maintaining your math skills in order to do your best once you’ve obtained a position as a software engineer.
4) Build software. The best way to improve your skills is to use them. Whether professional projects or personal, designing and coding software will teach you a great deal. For many employers, hands-on achievements matter more than GPA or theoretical knowledge.
5) Seek an internship. Many software engineering students work as interns while they complete their studies. This can be an excellent way to gain hands-on training and network with potential employers
6) Consider your career goals. The software industry is always changing. Continually improve your knowledge and practical skills. Join a professional organization like ACM or IEEE for networking opportunities. Pursue certifications relevant to your field of interest. See Snow tiers for opportunities to start your software engineering pathway.
Available Professional Certifications
There are a variety of certifications you can seek to demonstrate your skill with particular languages, products, or job roles. Some reflect broad knowledge, others focus on narrow skills in specialized areas.
Application engineers with broad knowledge may want to pursue credentials through the Institute of Electrical and Electronics Engineers (IEEE). The IEEE Society’s software development credentials reflect the knowledge in the Software Engineering Body of Knowledge Guide (SWEBOK). They are internationally recognized.