Credits: |
|
1 unit (4 credit hours) |
Contact Hours: |
|
3 lecture & 3 lab |
Instructor: |
|
Professors Jeffrey O. Pfaffmann |
Last Taught: |
|
Spring 2014 |
Text Book: |
|
Head First Software Development. By Dan Pilone and Russ Miles. (O’Reilly Media, 2007.) |
|
|
Learning UML 2.0. By Miles and Hamilton. (O’Reilly Media, 2006.) |
|
|
The Art of Software Testing, 3rd Ed. By Myers, Sandler, and Badgett. (Wiley 2011.) |
|
|
|
Description: |
|
The analysis, design, implementation, and maintenance strategies appropriate for large software projects. Lecture/laboratory. Permission of department head required. |
|
|
|
Prerequisites: |
|
CS150 (Data Structures and Algorithms) |
Specific Course Goals:
After successfully completing this course, the student will be able to:
- Students will be able start with an informal description of a project and take it all the way to implementation and testing.
- Students will be able to design and implement software framework for multiple projects that incorporates testing at multiple levels, including both unit and system testing.
- Students will be able to develop and present design documents that effectively captures their developed software design.
- Students will be able to work in a team to develop a complex software project starting.
- Students will be able to use collaborative software development tools to apply design and development principles in the construction of software systems of varying complexity.
- Students will be able to utilize object-oriented software design techniques.
- Students will be able to understand the needs of different customers.
Student Outcomes:
ABET/CAC Outcome 1 |
Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions. |
ABET/CAC Outcome 2 |
Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline. |
ABET/CAC Outcome 3 |
Communicate effectively in a variety of professional contexts. |
ABET/CAC Outcome 4 |
Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles. |
ABET/CAC Outcome 5 |
Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline. |
Topics covered:
- Software development as a process:
- Phases of software development.
- Established models of software development.
- Requirement gathering and propagating customer requirements forward.
- UML principles and tools:
- Use Cases
- Activity Diagrams
- Logical Structure Modeling
- Object, Sequence, and Timing Diagrams
- Composite Structures and Component Diagrams
- Object-Oriented Principles using C++ and the STL
- Basic I/O and Non-Object Control Mechanism
- Manipulating Reference and Pointer data.
- Basic Objects
- Parameters, Arrays, and Templates
- Constructors, Destructors, Overloading and Generics
- Object and Template Inheritance
- Software Testing
- Software Testing Principles
- Program Inspection Techniques
- Unit-Testing (Top-Down vs Bottom-Up Approach Test-Case Identification.)
- System Testing
- Usability Testing
- Debugging Approaches
- Software Development Tools
- Distributed software version control.
- Project management software.
- Documentation systems.
- Social Media.
- Interpersonal Issues
- Requirement gathering through directed questions.
- Professional presentation skills.
- The nuances of a professional working environment.