Your  Account:

Software Engineering

Software engineering is the application of engineering principles and techniques in the process of software design, development, construction and maintenance. IEEE defines software engineering as “The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software.” With computing as its foundation, software engineering seeks to develop and use systematic models and reliable techniques to produce high-quality software.

The educational objectives of the Bachelor of Science in Software Engineering at CSUSM are to produce graduates who, within three years after graduation, are able to:

  • Demonstrate professional advancement through significant technical achievements and expanded leadership responsibility in their jobs in industry, government, or entrepreneurial endeavors;
  • Demonstrate the ability to work effectively as a team member and/or leader in an ever-changing professional environment; and
  • Progress through advanced degree or certificate programs in computing, science, engineering, business, and other professionally related fields.

Toward the above educational objectives, this undergraduate program is designed to blend engineering principles, computing skills, project leadership, and software construction to provide students with a comprehensive understanding of the field and prepare graduates for the workforce or future study. The Software Engineering major at CSUSM emphasizes both theoretical foundations and practical applications with substantial laboratory work in software construction. In particular, students will develop their knowledge and skills in the following areas:

  • software engineering and professional standards necessary to begin practice as a software engineer.
  • theories, models, and techniques that provide a basis for problem identification and analysis, software design, development, implementation, verification, validation, security fundamentals, and documentation.
  • development and delivery of quality software artifacts via individual and collaborative efforts.
  • negotiation, effective work habits, leadership, and good communication with stakeholders in a typical software development environment.
  • application solutions in one or more domains using software engineering approaches that integrate ethical, social, legal, and economic concerns.
  • conflicting project objectives, finding acceptable compromises within the limitations of cost, time, knowledge, existing systems, and organizations.
  • continuing professional development and the necessity to stay informed of emerging models, techniques, and technologies.