Program of Study
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.
Program Student Learning Outcomes
Students who graduate with a Bachelor of Science in Software Engineering are expected to demonstrate:
- an ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics
- an ability to apply engineering design to produce solutions that meet specified needs with consideration of public health, safety, security, and welfare, as well as global, cultural, social, environmental, and economic factors
- an ability to communicate effectively with a range of audiences
- an ability to recognize ethical and professional responsibilities in engineering situations and make informed judgments, which must consider the impact of engineering solutions in global, economic, environmental, and societal contexts
- an ability to function effectively on a team whose members together provide leadership, create a collaborative and inclusive environment, establish goals, plan tasks, and meet objectives
- an ability to develop and conduct appropriate experimentation, analyze and interpret data, and use engineering judgment to draw conclusions
- an ability to acquire and apply new knowledge as needed, using appropriate learning strategies
- the ability to analyze requirements, design, verify, validate, implement, and maintain software systems.
- the ability to appropriately apply discrete mathematics, probability and statistics, and relevant topics in computer science and supporting disciplines to complex software systems.
- the ability to work in one or more significant application domains.
Software engineers hold key positions in many industries — including medical, industrial, military, communications, aerospace, business, scientific and general computing. As a graduate of this program, you should be well prepared to apply your knowledge, techniques, and skills to implement high-quality software and provide innovative solutions in industry and government. Possible software engineering jobs may include:
- computer systems analyst
- software engineer
- user interface designer
- software testing engineer
- video game designer
- computer systems administrator
- project/product manager
- sales engineer.
High school students are encouraged to take four (4) years of English, four (4) years of mathematics including trigonometry, one (1) year of biological science, and one (1) year of physical science. Courses in calculus, physics or chemistry, and computer programming are recommended. Experience in clear, concise, and careful writing is valuable for success in all courses.
Special Conditions for the Bachelor of Science in Software Engineering
All courses counted toward the major, including Preparation for the Major courses, must be completed with a grade of C (2.0) or better. A minimum of fifteen (15) upper-division units counted toward the major must be completed at Cal State San Marcos.
Requirements for the Bachelor of Science in Software Engineering
Preparation for the Major (42 Units)
Lower-Division Computing Essential (12 Units)
Math and Science Supporting Courses (30 Units)
One of the following PHYS or CHEM sequences:
*Nine (9) lower-division General Education units in Area B (Math and Science) are automatically satisfied by courses in the Math and Science Supporting Classes for the major. PHYS 101 /PHYS 201 or CHEM 150 for B1/B3, BIOL 104 for B2/B3, and MATH 160 for B4.
Major Requirements (42 Units)
Upper-Division Computing Essential (15 Units)
Upper-Division Software Engineering Core (21 Units)
Software Engineering Electives (6 Units)
Chosen from SE/CS/CIS courses numbered 400 or higher
Minimum Total (120 Units)
Students must take a sufficient number of elective units to bring the total number of units to a minimum of 120