CMPS 3350 Software Engineering (4 units)
This course is a general introduction to Software Engineering. The course will cover the specification, development, management, and evolution of complex
software systems. Students will learn 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 will form groups and
choose a software project early in the course, then apply methodologies learned
in the course to complete their project.
Prerequisite: CMPS 2020 with grade of C- or better. 
Programming skill in a high level language and knowledge of data structures and algorithms.
4 semester units. 3 units lecture and 1 unit lab.
Required for CS
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
Personal laptop computer is recommended in case of large class size.
Huaqing Wang, Melissa Danforth, Donna Meyers, Gordon Griesel
This course covers the following ACM/IEEE Body of Knowledge student learning outcomes:
1. SE/Software Processes
2. SE/Software Project Management
3. SE/Requirements Engineering
4. SE/Software Construction
5. SE/Software Verification and Validation
6. SE/Software Evolution
7. SE/Software Reliability
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
 
| Week-1 | 
Writing a Program | 
|   | 
Source Control Using Git and Github | 
| Week-2 | 
Building a System | 
| Week-3 | 
Engineering of Software | 
|   | 
Engineering Profession and Ethics | 
| Week-4 | 
Software Process Models (Software Lifecycle) | 
|   | 
Waterfall, Incremental, etc. | 
| Week-5 | 
New and Emerging Process Methodologies | 
|   | 
Agile | 
|   | 
Open Source | 
| Week-6 | 
Requirements Engineering | 
|   | 
Definition, Prototyping, and Reviews | 
| Week-7 | 
Design - Architecture and Methodologies | 
|   | 
Object Oriented Design and UML | 
| Week-8 | 
Design Characteristics and Metrics | 
|   | 
Cohesion and Coupling | 
| Week-9 | 
Implementation | 
|   | 
Comments, Debugging, Optimization, Refactoring | 
| Week-10 | 
Testing and Quality Assurance | 
|   | 
Testing Techniques | 
| Week-11 | 
Configuration Management, Integration, and Builds | 
|   | 
Tools for Configuration Management | 
| Week-12 | 
Software Support and Maintenance | 
|   | 
Change Control | 
| Week-13 | 
Software Project Management | 
| Week-14 | 
Contemporary Issues | 
|   | 
Security and Software Engineering | 
|   | 
Reverse Engineering and Software Obfuscation | 
|   | 
Validation and Verification Methodologies | 
| Week-15 | 
Group Project Presentations | 
Not applicable to course.
Gordon Griesel, July 2014
Approved by CEE/CS Department on [date] 
Effective [term]