Document Type

Course Outline / Syllabus

Publication Date

Winter 2-27-2020


School of Computer Science and Engineering


This is a novel way of teaching software engineering as an upper-division course for senior computer science students. Teach the class as a mock software company where students play a role in the “software company” such as project managers, assistant project managers, team leads, software engineers, software designers, UI designers, QA engineers, etc. Then to make a realistic work environment, solicit software projects from real clients, not toy software projects that the instructors think of. It has been proven, pedagogically, that project-based learning is one of the most effective way of teaching. There are no quizzes, no mid-terms, and no final exams … just the successful application of software life-cycle, software process, and software engineering to the software project. The course materials consist of: syllabus with course and lab outlines, a sample team and project organization with the roles played by each student including the QA team, the SRS IEEE document format, SPMP IEEE document format, SQAP IEEE document format, sample project manager/team lead survey and team member survey forms.


The instructor, Dr. Concepcion, has been experimenting for the best way to teach software engineering since 1990 at CSUSB. This course teaches computer science students software engineering principles and best practices as applied to software development. After several years, he found project-based learning and role playing to be the best models for teaching software engineering. To report on this combined teaching paradigm, he and several of his former students in class authored a paper, "A Ten Week Mock Software Company," In Proceedings of the 36th ACM SIGCSE Symposium, St. Louis MO, Mar 2005. From 2012 - 2017, he received the annual Vital/Expanded Technology Initiative (VETI) Grant, which supports a team of 6 – 10 students in developing mobile apps for CSUSB and clients with ideas for of mobile apps that may have commercial viability. Some of the mobile app projects are continuation of projects started in the software engineering class and the student teams are former students from this class. The student team is called the Mobile App Development (MAD) team. You can visit the MAD Web site at