Program of Study
IEEE defines software engineering as “The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software.” An organized approach to software development is needed because a software system developed today may contain millions of lines of code, reuse major components of other systems, execute on multiple machines and platforms, and interact with globally distributed systems.
Software engineering is the application of engineering principles and techniques in the process of software design, development and construction while dealing with the constraints of computers. With computing as its foundations, software engineering seeks to develop and use systematic models and reliable techniques to produce high-quality software. The Software Engineering degree offer undergraduate students a rich mix of modern software engineering and computer science courses. Applications of engineering knowledge range from the humanities to the sciences.
The Bachelor of Science in Software Engineering emphasizes both theoretical foundations and practical applications. Students will learn computing essentials, mathematical and engineering fundamentals, professional practice, software modeling and analysis, requirements analysis and specification, software design, software verification and validation, software process, software quality, and security. The degree emphasizes design and development experiences with substantial laboratory work in software development while emphasizing the security issues from requirement analysis, verification and validation as well as software architecture and construction. The Software Engineering major prepares students for careers in applications development, systems analysis, and software engineering, as well as entrance into graduate and professional schools.
The Software Engineering major emphasizes knowledge and skills development 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 will be able to identify, analyze, and apply skills and professional standards in:
- computing essentials in terms of computer science foundations, construction technologies and tools.
- mathematical and engineering fundamentals, and engineering economics for software.
- professional practice in terms of group dynamics and psychology, communications skills, and professionalism.
- software modeling and analysis.
- requirements analysis and specification, requirements fundamentals, eliciting requirements, requirements specification and documentation, and requirements validation.
- software design concepts, design strategies, architectural design, human-computer interaction design, detailed design, and design evaluation.
- software verification and validation terminology and foundations and its deployment at different points in the life cycle, testing, and problem analysis and reporting.
- software process concepts, process implementation, project planning and tracking, software configuration management, and evolution processes and activities.
- software quality concepts and culture, process assurance, and product assurance.
- security fundamentals, computer and network security, and developing secure software.
Due to enormous demand, degree holders in software engineering have multiple paths to reach their career goals. Many job opportunities with an excellent salary are available in the public, private sector, and governmental agencies as programmers, system analyst/engineer/managers, software analyst/engineer/managers, customer service representative/managers, instructors, technical trainers, technical support, and sales representatives.
High school students are encouraged to take four (4) years of English, four years of mathematics including trigonometry, one year of biological science, and one 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.
A maximum of thirty-two (32) lower-division units including courses in computer science, mathematics, and physics may be applied toward the Preparation for the Major requirements. Of the thirty-two (32) units, twelve (12) units must appropriately match the description for CS 111, 211, and 231 (depending on the articulation agreement between Cal State San Marcos and other institutions; transfer students are also advised to consult with their articulation officer to determine if they need to take CS 112, 212, and 232); twelve (12) units must appropriately match the description for MATH 160*, 242, and 270; and eight (8) units must appropriately match one of the descriptions for PHYS 101/102 or PHYS 201/202 or CHEM 150*/150L/160 for the Software Engineering major.
*Six (6) units of the above-transferred courses, MATH 160 and either PHYS 101 or PHYS 201 or CHEM 150, will count toward the lower-division General Education requirements in Area B. Students are encouraged to consult their faculty advisor to learn about courses that fulfill the General Education requirements.
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 (31 Units)
Lower-Division (12 Units)
Non-Computer Science Supporting Courses (19 Units)
One of the following PHYS or CHEM sequences:
*Six (6) lower-division General Education units in Area B (Math and Science) are automatically satisfied by courses taken in Preparation for the Major. Note that PHYS 202 requires PHYS 201 and MATH 162.
Major Requirements (44 Units)
Upper-Division (36 Units)
Software Engineering Electives (8 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