- Course Number:
- CIS 122
- Course Title:
- Software Design
- Credit Hours:
- 4
- Lecture Hours:
- 30
- Lecture/Lab Hours:
- 0
- Lab Hours:
- 30
- Special Fee:
- $12.00

#### Course Description

Covers software design as part of the software development life cycle. Includes problem solving, basic logic constructs, testing programs, and modular programming. Provides examples of well-designed software projects. Prerequisites: WR 115, RD 115 and MTH 20 or equivalent placement test scores. Recommended: CIS 120 or CAS 133 or BA 131. Audit available.#### Intended Outcomes for the course

On completion of this course the student should be able to:

- Translate simple real-world problems into programming algorithms applying a design methodology.
- Translate standard programming algorithms into a physical programming language that meets user requirements.
- Communicate algorithmic solutions to other programmers using a standard design methodology.
- Test a solution to a problem both before and after coding a physical solution.

#### Course Activities and Design

This course is presented with a combination of lectures and labs.

Students will be expected to complete assignments which include design, programming, and testing.

#### Outcome Assessment Strategies

Students will complete the following assessments:

- Translate real-world problems to program designs
- Write algorithms that illustrate typical programming applications (some typical application examples follow):
- Counters & Accumulators
- Minimum & Maximum
- Common business/math/science problems

- Produce a design document in a standard format
- Develop test plan to prove solutions

#### Course Content (Themes, Concepts, Issues and Skills)

__Outcome:__ Translate simple real-world problems into programming algorithms applying a design methodology.

__Content that supports the outcome:__

- Eliciting requirements
- Logic Constructs
- Sequence
- Selection/Alternation/If-Then-Else
- Repetition/Iteration/Looping

- Standard algorithms such as:
- Counters
- Accumulators
- Minimum / Maximum

- Design tools, such as:
- Pseudocode
- Flowcharts

- Modularity
- Cohesion
- Coupling

- Code reuse

__Outcome:__ Translate standard programming algorithms into a physical programming language that meets user requirements.

__Content that supports the outcome:__

- Variables
- Declaration
- Assignment
- Data types
- Scoping

- Boolean and arithmetic expressions
- Functions
- Parameters
- Return values

- Input Validation
- Additional Programming Topics as required for programming assignments

__Outcome:__ Communicate algorithmic solutions to other programmers using a standard design methodology.

__Content that supports the outcome:__

- Employing Standards for:
- Naming
- Indentation
- Design
- Code

- Design tools, such as:
- Pseudocode
- Flowcharts

__Outcome:__ Test a solution to a problem both before and after coding a physical solution.

__Content that supports the outcome:__

- Interpreting pseudocode
- Program testing and debugging

__Overall themes for the course:__

- Software Development Life Cycle
- Creating software solutions from problem specifications
- Best practices
- Logical vs. physical solution

#### Related Instruction

##### Computation

Hours: 16- Translate simple real-world problems into programming algorithms applying a design methodology.
- Translate standard programming algorithms into a physical programming language that meets user requirements.

Direct instruction (+ study time) in discipline-related computations involving Boolean algebra and arithmetic expression construction and evaluation as applied in a specific programming language's type system.