College of Engineering, Informatics, and Applied Sciences2021-2022
School of Informatics, Computing and Cyber Systems
Software Engineering, Bachelor of Science
Learning OutcomesPurpose 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.
Go to mobile site