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:

  1. Students will be able start with an informal description of a project and take it all the way to implementation and testing.
  2. 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.
  3. Students will be able to develop and present design documents that effectively captures their developed software design.
  4. Students will be able to work in a team to develop a complex software project starting.
  5. 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.
  6. Students will be able to utilize object-oriented software design techniques.
  7. 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.