# Overview

## Modeling and Impact

Description: Understand, guide, shape impact of computing on society/the world. Connect the role of Theory CS classes to other applications (in undergraduate CS curriculum and beyond). Model problems using appropriate mathematical concepts.

- Model systems
- Selecting and representing appropriate data types and using notation conventions to clearly communicate choices
- Connecting logical circuits and compound proposition and tracing to calcluate output values
- Determining the properties of positional number representations, including overflow and bit operations
- Modeling data structures, such as linked lists or trees, as recursively defined data structures
- Modeling data with partitions and functions

## Problem Solving

Description: Know, select and apply appropriate computing knowledge and problem-solving techniques. Reason about computation and systems. Use mathematical techniques to solve problems. Determine appropriate conceptual tools to apply to new situations. Know when tools do not apply and try different approaches. Critically analyze and evaluate candidate solutions.

- Propositional and predicate logic
- Evaluating compound propositions
- Judging logical equivalence of compound propositions using symbolic manipulation with known equivalences, including DeMorgan's Law
- Judging logical equivalence of compound propositions using truth tables
- Rewriting compound propositions using normal forms
- Judging whether a collection of propositions is consistent
- Writing the converse, contrapositive, and inverse of a given conditional statement
- Determining what evidence is required to establish that a quantified statement is true or false
- Evaluating quantified statements about finite and infinite domains

## Communication

Description: Clearly and unambiguously communicate computational ideas using appropriate formalism. Translate across levels of abstraction.

- Use language conventions to improve arguments
- Distinguishing between tautologies, contradictions, and contingencies
- Determining whether a given binary relation is symmetric, antisymmetric, reflexive, and/or transitive
- Determining whether a given function is one-to-one, onto, and/or invertible
- Determining whether a given binary relation is an equivalence relation and/or a partial order
- Distinguishing between structural induction, mathematical induction, and strong induction
- Using appropriate signpost words to improve readability of proofs, including 'arbitrary' and 'assume'