2022-2023

Software Engineering, Bachelor of Science

School of Informatics, Computing and Cyber Systems

College of Engineering, Informatics, and Applied Sciences

Software engineering consists of the principled application of repeatable processes and methods for the design, development, maintenance, and evolution of software systems. The field is distinguished from programming and computer science by its emphasis on practical techniques supporting the team-based development of large-scale and long-lived software systems that are required to operate reliably and within specified functional and non-functional constraints.

Students in the BSSE will be provided with skills in software engineering processes, including requirements analysis, software design and architecture, software testing, multiple programming languages and libraries, cloud computing technologies, project management, and foundational areas such as data structures and algorithmic complexity. Elective selections will permit students to specialize in other application areas, including human-computer interaction, socio-technical computing, computer networks, high-performance computing, and cybersecurity. A capstone project will allow students to exercise the full breadth of their skillset by working with clients on real-world projects.

A distinctive characteristic of this program, and one that exemplifies its emphasis on workforce development, is the inclusion of required and industry-recognized professional certifications. All graduates of this program will be required to complete the Professional Software Developer (PSD) Certification offered by the IEEE Computer Society. In addition to the IEEE certification, students will have the opportunity to earn the Amazon Web Services (AWS) Certified Solutions Architect Professional (CSAP) certification.
 

  • To receive a bachelor's degree at Northern Arizona University, you must complete at least 120 units of credit that minimally includes a major, the liberal studies requirements, and university requirements as listed below.

    • All of Northern Arizona University's diversity, liberal studies, junior-level writing, and capstone requirements.
    • All requirements for your specific academic plan(s).
    • At least 30 units of upper-division courses, which may include transfer work.
    • At least 30 units of coursework taken through Northern Arizona University, of which at least 18 must be upper-division courses (300-level or above). This requirement is not met by credit-by-exam, retro-credits, transfer coursework, etc.
    • A cumulative grade point average of at least 2.0 on all work attempted at Northern Arizona University.

    The full policy can be viewed here.

In addition to University Requirements:

  • Complete individual plan requirements.

  • At least 28 units of pre professional requirements
  • At least 69 units of professional requirements 

  • Up to 9 units of major prefix courses may be used to satisfy Liberal Studies requirements; these same courses may also be used to satisfy major requirements.

  • Elective courses, if needed, to reach an overall total of at least 120 units.

Students may be able to use some courses to meet more than one requirement. Contact your advisor for details.

Minimum Units for Completion 120
Major GPA 2.0
Highest Mathematics Required MAT 226
University Honors Program Optional
Some online/blended coursework Required
Progression Plan Link View Progression Plan

Purpose Statement

Software engineering consists of the principled application of repeatable processes and methods for the design, development, maintenance, and evolution of software systems. The field is distinguished from programming and computer science by its emphasis on practical techniques supporting the team-based development of large-scale and long-lived software systems that are required to operate reliably and within specified functional and non-functional constraints.

Students in the BSSE will be provided with skills in software engineering processes, including requirements analysis, software design and architecture, software testing, multiple programming languages and libraries, cloud computing technologies, project management, and foundational areas such as data structures and algorithmic complexity. Elective selections will permit students to specialize in other application areas, including human-computer interaction, socio-technical computing, computer networks, high-performance computing, and cybersecurity. A capstone project will allow students to exercise the full breadth of their skillset by working with clients on real-world projects.

A distinctive characteristic of this program, and one that exemplifies its emphasis on workforce development, is the inclusion of required and industry-recognized professional certifications. All graduates of this program will be required to complete the Professional Software Developer (PSD) Certification offered by the IEEE Computer Society. In addition to the IEEE certification, students will have the opportunity to earn the Amazon Web Services (AWS) Certified Solutions Architect Professional (CSAP) certification.

Our ability to efficiently support the BSSE program is strengthened by our roster of related programs, including our computer science and applied computer science programs, which share many core programming courses with software engineering, and our cybersecurity programs.  This program also expands on the existing options for our students to pursue computer science related degrees, with a focus on industry career opportunities.

Student Learning Outcomes

  • Identify, explain, and apply appropriate project and process management methods.
    • Concepts: Structured lifecycle models, e.g. waterfall, spiral; agile management processes, e.g. Scrum, XP; effort estimation; task dependency analysis; team organization and management.
    • Competencies: Organize software engineering work using a lifecycle model appropriate to the development context; manage and monitor progress in software engineering projects using a variety of management processes; estimate the effort associated with the development software modules; use dependency analysis to ensure that development progresses; effectively map software system designs to team structures.
    • Measures and Assessment: Direct measure of mastery using performance indicators and rubrics associated with classes in software process and project management; successful completion of IEEE PSD certification; rubrics associated with lifecycle management in summative senior capstone design coursework.
  • Identify, explain, and apply the fundamental methods of software engineering.
    • Concepts: Requirements elicitation and analysis methods; software design and architecture; software modeling languages, e.g. UML; software testing methods, e.g. unit testing.
    • Competencies: Apply requirements elicitation and analysis methods to develop complete requirements specifications for complex software products; use design patterns and architectural styles appropriate to the problem domain; develop robust and reliable software systems through the principled application of software testing techniques.
    • Measures and Assessment: Direct measure of mastery using performance indicators and rubrics associated with classes in requirements engineering, design, and testing; successful completion of IEEE PSD certification; rubrics associated with software engineering methods in summative senior capstone design coursework.
  • Apply appropriate programming methods to the development of high-quality software systems.
    • Concepts: Contemporary programming languages, e.g. Python, Java; data structures and algorithmic complexity; software construction best-practices, e.g. coding and variable conventions, code organization, defensive programming.
    • Competencies: Select and apply programming languages with features and characteristics appropriate to desired system characteristics; analyze and account for trade-offs in the selection of appropriate data structures and algorithms; develop high-quality systems that perform reliably and robustly; engineer software systems that are easily maintainable and long-lived.
    • Measures and Assessment: Direct measure of mastery using performance indicators and rubrics associated with classes in data structures and programming; successful completion of IEEE PSD certification.
  • Identify, select, and apply contemporary technologies to the design of distributed software systems.
    • Concepts: Cloud infrastructure and architectures; virtualization; cybersecurity in the cloud; distributed file systems, e.g. Hadoop; noSQL databases; cloud programming models, e.g. MapReduce.
    • Competencies: Select appropriate compositions of technologies with which to support the development of cloud-based systems; develop and deploy systems on cloud computing infrastructures, such as Amazon Web Services (AWS); effectively use cloud-centric programming and data management techniques.
    • Measures and Assessment: Direct measure of mastery using performance indicators and rubrics associated with classes in cloud computing; successful completion of AWS CSAP certification.
  • Engage in effective teamwork as a member of a software engineering team.
    • Concepts: Team roles; teamwork communication strategies; work allocation and tracking; peer assessment and evaluation.
    • Competencies: Distinguish and organize according to specific teamwork roles and responsibilities; effectively and professionally communicate with team members and defuse team conflicts; refer to and maintain current models of team progress; provide objective assessments of team member performance and productivity.
    • Measures and Assessment: Rubrics associated with teamwork in summative senior capstone design coursework.
  • Compose and engage in effective written and oral communication in software development.
    • Concepts: Professional correspondence best-practices; responding to proposal solicitations; primary and secondary research; effective document structure; poster preparation; oral presentation best-practices.
    • Competencies: Develop professional documents and software documentation; effectively communicate results of development efforts; deliver effective oral presentations to specialist and lay audiences.
    • Measures and Assessment: Rubrics associated with written and oral communication in summative senior capstone design coursework.

Major Requirements
  • This major requires 97-98 units distributed as follows:

    • Pre-professional Requirements: 28-29
      • Basic Science: 7-8
      • Mathematics and Statistics: 12 units
      • Technical Electives: 9 units
    • Professional Requirements: 69 units


    Take the following 97 - 98 units with a Grade of "C" or better in each course:

    Pre-Professional Requirements (28-29 units):


    Basic Science courses (7-8 units):
    Select from: 
    Mathematics and Statistics courses (12 units):
    Technical electives (9 units): 
    • In consultation with your advisor, select additional 200-level or higher AST, BIO, CENE, CHM, CS, EE, GLG, GSP, INF, MAT, ME, PHY and STA  courses.  

  • No more than one D is allowed in professional and technical electives. Up to six units of letter-graded individualized study (CS 485 or CS 497) may be used to meet degree requirements.

General Electives
  • Additional coursework is required if, after you have met the previously described requirements, you have not yet completed a total of 120 units of credit.

    You may take these remaining courses from any of the academic areas, using these courses to pursue your specific interests and goals. You may also use prerequisites or transfer credits as electives if they weren't used to meet major, minor, or liberal studies requirements.

    We encourage you to consult with your advisor to select the courses that will be most advantageous to you.

  • Be aware that some courses may have prerequisites that you must also successfully complete. For prerequisite information, click on the course or see your advisor.