CMPS 3350 Software Engineering
Catalog Description
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. You 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.
Prerequisites by Topic
Programming skill in a high level language and knowledge of data structures and algorithms.
Units and Contact Time
4 semester units. 3 units lecture and 1 unit lab.
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.
Huaqing Wang, Melissa Danforth, Donna Meyers, Gordon Griesel
Student Learning Outcomes
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

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 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
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
Design Content Description
Not applicable to course.
Prepared By
Gordon Griesel, July 2014
Approved by CEE/CS Department on [date]
Effective [term]