### CCOG for CIS 122 Summer 2024

- Course Number:
- CIS 122
- Course Title:
- Introduction to Programming Logic
- Credit Hours:
- 4
- Lecture Hours:
- 30
- Lecture/Lab Hours:
- 0
- Lab Hours:
- 30

#### Course Description

#### Intended Outcomes for the course

Upon completion of this course students should be able to:

- Translate simple real-world problems into programming algorithms applying a design methodology.
- Translate programming algorithms into a physical programming language that meets user requirements, and validate input.
- Communicate algorithmic solutions to other programmers using a common design methodology.
- Develop and use a test plan for determining the correctness of a program.
- Identify and fix defects and common security issues in code.

#### Quantitative Reasoning

Students completing an associate degree at Portland Community College will be able to analyze questions or problems that impact the community and/or environment using quantitative information.

#### General education philosophy statement

This course covers fundamental programming concepts, including the representation of problems and processes in mathematical and logical forms. It also covers problem-solving strategies which can be used to test and debug computer programs. This supports the Gen Ed principle that students should be able to reason qualitatively and quantitatively.

#### 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: 26- Translate simple real-world problems into programming algorithms applying a design methodology.
- Translate programming algorithms into a physical programming language that meets user requirements, and validate input.
- Analyze questions or problems that impact the community and/or environment using quantitative information. QUANTITATIVE REASONING

Direct instruction (+ study time) in discipline-related computations involving:

- Boolean algebra and arithmetic expression construction
- Evaluation as applied in a specific programming language's type system.
- Direct instruction in quantitative reasoning, as assessed by the Math, Science and Computer Science Quantitative Reasoning Rubric.