This page collects together all of the “outcomes” associated with individual modules. Outcomes identify what students will know and be able to do if they master the material.

- Use truth tables and laws of identity, distributive, commutative, and domination.
- Simplify and prove boolean expressions
- Compute sum of products and product of sum expansions.
- Convert boolean expressions to logic gates and vice-versa.

*Referencing modules:*
Boolean Algebra

- Recognize if a string belongs to a language.
- Create grammars to recognize language descriptions.
- Design production rules for formal languages.
- Design finite-state machines for formals languages.
- Design regular expressions to recognize formal languages.
- Design Turing machines that perform computing functions.

*Referencing modules:*
Models of computation

- Compute matrix addition and multiplication.
- Solve systems of linear equations.
- Evaluate the determinant.

*Referencing modules:*
Linear algebra and matrices

- Use the inclusion-exclusion principle for set analysis.
- Identify relations as reflexive, symmetric, antisymmetric, or transitive.
- Identify n-ary relationships and primary keys.
- Use projection and join operators.
- Compute reflexive, symmetric, and transitive closures.
- Determine equivalence relations.

*Referencing modules:*
Relations

- Find vertices, edges, and degrees of vertices.
- Identify planar graphs, bipartite graphs, graph unions, subgraphs, isomorphic graphs, strongly connected graphs, strongly connected components.
- Represent adjacency lists, adjacency matrices, and incidence matrices.
- Apply Euler’s formula for a simple, connected, planar graph.
- Apply Dijkstra’s algorith to find the shortest path.
- Apply graph coloring to problems like exam scheduling and resource assignment.

*Referencing modules:*
Graphs

- Determine whether a graph is a tree.
- Determine the edges in a tree.
- Perform binary search on a tree.
- Use Huffman encoding.
- Perform preorder, inorder and postorder traversal.
- Perform depth-first and breadth-first search.
- Apply Prim’s and Kruskal’s algorithms to find a minimum spanning tree.
- Build and use decision trees to solve problems
- Use binary trees to represent and manipulate prefix codes

*Referencing modules:*
Trees

- Define appropriate recurrence relations for a given problem.
- Solve linear recurrence relations by recognizing homogeneity, linearity, constant coefficients, degree, and characteristic equation.
- Design recurrence relations using the divide-and-conquer algorithm.

*Referencing modules:*
Advanced counting techniques

- Recognize loop invariants.
- Prove initial and final assertions.

*Referencing modules:*
Verification