CMPS 335 Software Engineering
Catalog Description
CMPS 335 Software Engineering (5)
A general introduction to Software Engineering. Deals with the specification, development, management, and evolution of complex software systems. Shows how to cost-effectively apply the methods and theory from Computer Science to solve difficult problems. The course presents a broad perspective on software and system engineering and surveys a wide spectrum of tools and techniques. Students are required to complete a project as part of a small software engineering team. Students may choose system projects involving software and hardware integration. Prerequisite: CMPS 223.
Prerequisites by Topic
Programming skill in a high level language and knowledge of data structures and algorithms.
Units and Contact Time
5 quarter units. 4 units lecture (200 minutes), 1 unit lab (150 minutes).
Type
Required for CS
Required Textbook
Essentials of Software Engineering, 3rd Edition
By: Frank Tsui; Orlando Karam; Barbara Bernal
Publisher: Jones & Bartlett Learning
Pub. Date: February 7, 2013
Web ISBN-13: 978-1-4496-9200-1
Recommended Textbook and Other Supplemental Materials
Personal laptop computer is recommended in case of large class size.
Coordinator(s)
Huaqing Wang, Melissa Danforth, Donna Meyers, Gordon Griesel
Student Learning Outcomes
3d. An ability to function effectively on teams to accomplish a common goal.
1. Fulfill team duties and share in the work of the team.
2. Listen and communicate with other team members.
3. Research and gather information.
4. Meet deadlines and achieve project goals.
5. Cooperate on reports with a reasonable share of duties.
ABET Outcome Coverage

The course maps to the following performance indicators for Computer Science (CAC/ABET) or Computer Engineering (EAC/ABET) or Electrical Engineering (EAC/ABET):

(CAC PIb2): Produce a solution within specifications.
Group Project
(CAC PIc3): Design the selected solution for a given problem.
Programming assignments and group project
(CAC PIc4): Implement the designed solution for a given problem.
Group project
(EAC PIc1): Follow systematic and logical design procedures and define specifications to meet project requirements.
Group project
(EAC PIc3): Consider alternative designs and choose the optimal solution.
Programming assignments and group project
(CAC PId1, EAC PId1): Fulfill team duties and share in the work of the team.
Group project
(CAC PId2, EAC PId2): Listen and communicate with other team members.
Group project
(CAC PId3, EAC PId3): Research and gather information.
Group project
(CAC PId4, EAC PId4): Meet deadlines and achieve project goals.
Group project
(CAC PId5, EAC PId5): Cooperate on reports with a reasonable share of duties.
Group project
(CAC PIf1, EAC PIg1): Write technical reports.
Group project
(CAC PIf2, EAC PIg2): Prepare and deliver oral presentations.
Group project
(CAC PIi1): Program in a suitable computer language.
Programming assignments and group project
(CAC PIi3): Utilize problem solving skills and techniques to complete the task.
Programming assignmenta and group project
(CAC PIk1): Understand the software/system life-cycle.
Group project
(CAC PIk2): Write documentation for each phase of the development cycle.
Group project
Lecture Topics and Rough Schedule

Week-1 Writing a simple program, source control
Week-2 Building a system
Week-3 Software process models, the software lifecycle
Week-4 New methodologies, Agile
Week-5 Implementation, debugging and defensive programming
Week-6 Performance optimization, refactoring
Week-7 Testing and quality assurance
Week-8 Software support and maintenance
Week-9 Validation and verification, reverse engineering
Week-10 Project completion and presentation
Design Content Description
Not applicable to course.
Prepared By
Gordon Griesel on [date]
Approval
Approved by CEE/CS Department on [date]
Effective [term]