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.
Prerequistes: 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.
    (ABET/CAC Outcome B)
  2. Students will be able to design and implement software framework for a multiple projects that incorporates testing at multiple levels, including both unit and system testing.
    (ABET/CAC Outcome K)
  3. Students will be able to develop and present design documents that effectively captures their developed software design.
    (ABET/CAC Outcome F)
  4. Students will be able to work in a team to develop a complex software project starting.
    (ABET/CAC Outcome D)
  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.
    (ABET/CAC Outcome C)
  6. Students will be able to utilize object-oriented software design techniques.
    (ABET/CAC Outcome C)
  7. Students will be able to understand the needs of different customers.
    (ABET/CAC Outcome H)

Student Outcomes:

  ABET/CAC Outcome B An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution.
  ABET/CAC Outcome C An ability to design, implement and evaluate a computer-based system, process, component, or program to meet desired needs.
  ABET/CAC Outcome D An ability to function effectively on teams to accomplish a common goal.
  ABET/CAC Outcome F An ability to communicate effectively with a wide range of audiences.
  ABET/CAC Outcome H Recognition of the need for and an ability to engage in continuing professional development.
  ABET/CAC Outcome K An ability to apply design and development principles in the construction of software systems of varying complexity.

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.