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.
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]