## Software Engineering Assessment Rubric

#### CS. 4. Analyze the efficiency of recursive algorithms.

Emerging Standard

With guidance interprets a recursive method.

With guidance interprets a recursive method.

Developed Standard

Analyzes a recursive method and correctly predicts its output.

Analyzes a recursive method and correctly predicts its output.

Highly Developed Standard

Evaluates recursive algorithms in terms of efficiency and time and space tradeoffs.

Evaluates recursive algorithms in terms of efficiency and time and space tradeoffs.

#### CS. 5. Analyze the execution of searching and sorting algorithms.

Emerging Standard

Describes the execution trace of one searching algorithm and one sorting algorithm.

Describes the execution trace of one searching algorithm and one sorting algorithm.

Developed Standard

Analyzes the execution of various searching and sorting algorithms.

Analyzes the execution of various searching and sorting algorithms.

Highly Developed Standard

Evaluates the execution of various searching and sorting algorithms including a recursive solution.

Evaluates the execution of various searching and sorting algorithms including a recursive solution.

#### CS. 6. Apply fundamental theorems and rules of Calculus to differentiate and integrate algebraic, trigonometric, inverse trigonometric and transcendental functions.

Emerging Standard

Exhibits limited understanding when differentiating and integrating functions using differential calculus; additional review and support is required.

Exhibits limited understanding when differentiating and integrating functions using differential calculus; additional review and support is required.

Developed Standard

Independently differentiates and integrates various functions using differential calculus.

Independently differentiates and integrates various functions using differential calculus.

Highly Developed Standard

Independently and with a thorough understanding differentiates and integrates various functions using differential calculus.

Independently and with a thorough understanding differentiates and integrates various functions using differential calculus.

#### CS. 7. Apply fundamental theorems and rules of Calculus to evaluate limits and analyze the continuity of various functions.

Emerging Standard

Exhibits limited understanding when computing limits and determining continuity; additional review and support is required.

Exhibits limited understanding when computing limits and determining continuity; additional review and support is required.

Developed Standard

Independently computes limits and analyzes the continuity of various functions.

Independently computes limits and analyzes the continuity of various functions.

Highly Developed Standard

Independently and with a thorough understanding computes limits and analyzes the continuity of various functions.

Independently and with a thorough understanding computes limits and analyzes the continuity of various functions.

#### CS. 8. Apply fundamental theorems and rules of differentiation to solve problems that model real-world situations.

Emerging Standard

Requires a great deal of assistance to solve problems drawn from real-world situations.

Requires a great deal of assistance to solve problems drawn from real-world situations.

Developed Standard

Independently solves problems drawn from real-world situations.

Independently solves problems drawn from real-world situations.

Highly Developed Standard

Very capably and independently solves problems drawn from real-world situations.

Very capably and independently solves problems drawn from real-world situations.

#### SE. 1. Apply mathematical induction and other techniques to prove mathematical results.

Emerging Standard

Recognizes valid proofs that use mathematical induction and other techniques.

Recognizes valid proofs that use mathematical induction and other techniques.

Developed Standard

Given a simple problem, such as an identity, constructs a mathematical proof by induction.

Given a simple problem, such as an identity, constructs a mathematical proof by induction.

Highly Developed Standard

Constructs mathematical proofs by induction and other techniques.

Constructs mathematical proofs by induction and other techniques.

#### CS. 9. Apply secure coding techniques to object‐oriented programming solutions.

Emerging Standard

Describes secure coding techniques of an object-oriented program, such as public versus private members, data integrity, and data typing.

Describes secure coding techniques of an object-oriented program, such as public versus private members, data integrity, and data typing.

Developed Standard

Applies secure coding techniques to an object-oriented program.

Applies secure coding techniques to an object-oriented program.

Highly Developed Standard

Devises a fully secure object-oriented program.

Devises a fully secure object-oriented program.

#### CS. 10. Apply the program development process to problems that are solved using fundamental programming constructs and predefined data structures.

Emerging Standard

Summarizes the phases of the program development cycle.

Summarizes the phases of the program development cycle.

Developed Standard

With guidance during the design phase, produces working code and performs some testing.

With guidance during the design phase, produces working code and performs some testing.

Highly Developed Standard

Develops a working program solution by implementing design, coding, and testing that includes error checking.

Develops a working program solution by implementing design, coding, and testing that includes error checking.

#### CS. 11. Assess the appropriateness of using recursion to solve a given problem.

Emerging Standard

Explains the utility of recursion to solve certain problems.

Explains the utility of recursion to solve certain problems.

Developed Standard

Compares and contrasts the tradeoffs in terms of recursive and non-recursive solutions.

Compares and contrasts the tradeoffs in terms of recursive and non-recursive solutions.

Highly Developed Standard

Justifies when to choose a recursive solution over a non-recursive solution (and vice versa) in terms of efficiency, Big-O, and comprehensibility.

Justifies when to choose a recursive solution over a non-recursive solution (and vice versa) in terms of efficiency, Big-O, and comprehensibility.

#### CS. 12. Compare and contrast a range of searching and sorting algorithms and analyze time and space efficiencies.

Emerging Standard

Uses various searching and sorting algorithms, and investigates time and space tradeoffs.

Uses various searching and sorting algorithms, and investigates time and space tradeoffs.

Developed Standard

Compares and contrasts a range of searching and sorting algorithms for time and space efficiencies.

Compares and contrasts a range of searching and sorting algorithms for time and space efficiencies.

Highly Developed Standard

Critiques searching and sorting algorithms, including recursive solutions, for various algorithmic efficiencies and evaluates them in terms of Big-O.

Critiques searching and sorting algorithms, including recursive solutions, for various algorithmic efficiencies and evaluates them in terms of Big-O.

#### CS. 13. Compare and contrast the primitive data types of a programming language; describe how each is stored in memory; and identify the criteria for selection.

Emerging Standard

Names the built-in data types of the programming language.

Names the built-in data types of the programming language.

Developed Standard

Differentiates among the built-in data types and explain when it is appropriate to choose one over another.

Differentiates among the built-in data types and explain when it is appropriate to choose one over another.

Highly Developed Standard

Consistently produces programming solutions with the correct data types implemented.

Consistently produces programming solutions with the correct data types implemented.

#### SE. 2. Construct a preliminary investigative report for a proposed system that includes scheduling and plans for mitigating potential risks.

Emerging Standard

Constructs a project plan that identifies major milestones and a development schedule.

Constructs a project plan that identifies major milestones and a development schedule.

Developed Standard

Constructs a project plan that identifies major milestones and a development schedule that includes contingencies for recovering from schedule set-backs.

Constructs a project plan that identifies major milestones and a development schedule that includes contingencies for recovering from schedule set-backs.

Highly Developed Standard

Constructs a project plan with revisions that includes options analysis and estimates risk associated with different options.

Constructs a project plan with revisions that includes options analysis and estimates risk associated with different options.

#### CS. 14. Construct multiple‐file or multiple‐module programming solutions that use class hierarchies, inheritance, and polymorphism to reuse existing design and code.

Emerging Standard

Describes when inheritance and the use of class hierarchies is an appropriate design strategy.

Describes when inheritance and the use of class hierarchies is an appropriate design strategy.

Developed Standard

With guidance, produces a programming solution using inheritance and polymorphism.

With guidance, produces a programming solution using inheritance and polymorphism.

Highly Developed Standard

Designs and constructs a programming solution using the features of inheritance and polymorphism appropriately.

Designs and constructs a programming solution using the features of inheritance and polymorphism appropriately.

#### CS. 15. Construct object oriented programming solutions for reuse, using ADTs that incorporate encapsulation, data abstraction, and information hiding.

Emerging Standard

Summarizes the concepts of encapsulation, data abstraction, and information hiding and explains how they apply to object-oriented programming.

Summarizes the concepts of encapsulation, data abstraction, and information hiding and explains how they apply to object-oriented programming.

Developed Standard

Organizes programming solutions that include encapsulation, information hiding, and data abstraction.

Organizes programming solutions that include encapsulation, information hiding, and data abstraction.

Highly Developed Standard

Constructs reusable software components that incorporate encapsulation, data abstraction, and information hiding.

Constructs reusable software components that incorporate encapsulation, data abstraction, and information hiding.

#### CS. 16. Construct symbolic models of applied problems described in words.

Emerging Standard

Requires a great deal of assistance to interpret word problems drawn from a variety of sources into symbolic representations.

Requires a great deal of assistance to interpret word problems drawn from a variety of sources into symbolic representations.

Developed Standard

Independently interprets word problems drawn from a variety of sources into symbolic representations.

Independently interprets word problems drawn from a variety of sources into symbolic representations.

Highly Developed Standard

Very capably and independently interprets word problems drawn from a variety of sources into symbolic representations.

Very capably and independently interprets word problems drawn from a variety of sources into symbolic representations.

#### CS. 17. Create effective, efficient and secure software, reflecting standard principles of software engineering and software assurance.

Emerging Standard

Calculates the risks and liabilities of a computer-based solution using standard software assurance and engineering principles.

Calculates the risks and liabilities of a computer-based solution using standard software assurance and engineering principles.

Developed Standard

Creates an effective, efficient and secure solution, utilizing principles of software assurance and software engineering.

Creates an effective, efficient and secure solution, utilizing principles of software assurance and software engineering.

Highly Developed Standard

Judges the safety and security of a software solution.

Judges the safety and security of a software solution.

#### CS. 18. Create programming solutions that use data structures and existing libraries.

Emerging Standard

Produces programming solutions that use existing library code.

Produces programming solutions that use existing library code.

Developed Standard

Organizes programming solutions that incorporate appropriate data structures and pre-existing code.

Organizes programming solutions that incorporate appropriate data structures and pre-existing code.

Highly Developed Standard

Designs and develops programming solutions that use data structures, pre-existing libraries, and individual library code.

Designs and develops programming solutions that use data structures, pre-existing libraries, and individual library code.

#### CS. 19. Decompose a program into subtasks and use parameter passing to exchange information between the subparts.

Emerging Standard

With guidance translates a problem into a programming solution with subtasks.

With guidance translates a problem into a programming solution with subtasks.

Developed Standard

With guidance for program analysis and design, decomposes a problem into program components that share data.

With guidance for program analysis and design, decomposes a problem into program components that share data.

Highly Developed Standard

Independently analyzes a problem, formulates a design strategy, and decomposes a problem into program components that share data.

Independently analyzes a problem, formulates a design strategy, and decomposes a problem into program components that share data.

#### SE. 3. Decompose complex systems using best practice object-oriented analysis and design tools and techniques.

Emerging Standard

Completes a static analysis and design that Identifies the classes/objects of a complex system.

Completes a static analysis and design that Identifies the classes/objects of a complex system.

Developed Standard

Using static design patterns, successfully identifies the classes/objects and specifying the relationships among them.

Using static design patterns, successfully identifies the classes/objects and specifying the relationships among them.

Highly Developed Standard

Successfully models the dynamic interactions among the objects and external interfaces in addition to a well-crafted static analysis and design.

Successfully models the dynamic interactions among the objects and external interfaces in addition to a well-crafted static analysis and design.

#### CS. 20. Describe the language translation phases of compiling, interpreting, linking and executing, and differentiate the error conditions associated with each phase.

Emerging Standard

Defines the programming language terms of compiling, interpreting, linking, executing, and error conditions.

Defines the programming language terms of compiling, interpreting, linking, executing, and error conditions.

Developed Standard

Describes the programming language translation phases of compiling, interpreting, linking, and executing, and differentiates the error conditions associated with each phase.

Describes the programming language translation phases of compiling, interpreting, linking, and executing, and differentiates the error conditions associated with each phase.

Highly Developed Standard

Compares the programming language translation phases of compiling, interpreting, linking, and executing, and distinguishes the error conditions associated with each.

Compares the programming language translation phases of compiling, interpreting, linking, and executing, and distinguishes the error conditions associated with each.

#### CS. 21. Design and construct programming solutions using a variety of recursive techniques.

Emerging Standard

Converts a simple recursive algorithm into a working recursive method.

Converts a simple recursive algorithm into a working recursive method.

Developed Standard

With guidance develops recursive programming solutions for applications that use data structures such as trees and lists.

With guidance develops recursive programming solutions for applications that use data structures such as trees and lists.

Highly Developed Standard

Independently designs and develops recursive programming solutions for applications that use backtracking and data structures such as trees and lists.

Independently designs and develops recursive programming solutions for applications that use backtracking and data structures such as trees and lists.

#### CS. 22. Design and develop reusable software using appropriate data structures and templates.

Emerging Standard

Differentiates among the classic data structures and selects a suitable data structure for use in an application.

Differentiates among the classic data structures and selects a suitable data structure for use in an application.

Developed Standard

With some guidance designs and develops applications using appropriate data structures for a given problem.

With some guidance designs and develops applications using appropriate data structures for a given problem.

Highly Developed Standard

Independently designs and develops applications using appropriate data structures and incorporates reusable software components in the solution.

Independently designs and develops applications using appropriate data structures and incorporates reusable software components in the solution.

#### CS. 23. Design and develop secure and fault-tolerant programs that mitigate potential security vulnerabilities.

Emerging Standard

Summarizes important characteristics of software assurance, such as the elimination of buffer overflows, memory leaks and back-door access.

Summarizes important characteristics of software assurance, such as the elimination of buffer overflows, memory leaks and back-door access.

Developed Standard

Produces a fault-tolerant program using the foundations of software assurance to mitigate potential security vulnerabilities.

Produces a fault-tolerant program using the foundations of software assurance to mitigate potential security vulnerabilities.

Highly Developed Standard

Designs and develops a secure and fault-tolerant programming solution utilizing principles of software assurance.

Designs and develops a secure and fault-tolerant programming solution utilizing principles of software assurance.

#### SE. 7. Design and implement consistent and coherent user-centered interfaces that comply with UI standard practices.

Emerging Standard

Creates a structured, simple UI.

Creates a structured, simple UI.

Developed Standard

Using static design patterns, successfully identifies the classes/objects and specifying the relationships among them Creates well-structured, consistent UI that provides all needed options and user feedback.

Using static design patterns, successfully identifies the classes/objects and specifying the relationships among them Creates well-structured, consistent UI that provides all needed options and user feedback.

Highly Developed Standard

Creates a clear, consistent UI that is flexible enough to prevent user input errors.

Creates a clear, consistent UI that is flexible enough to prevent user input errors.

#### CS. 24. Differentiate between the object-oriented, structured, and functional programming methodologies.

Emerging Standard

Recognizes the differences and similarities of the object-oriented, structured, and functional programming methodologies.

Recognizes the differences and similarities of the object-oriented, structured, and functional programming methodologies.

Developed Standard

Differentiates between the object-oriented, structured, and functional programming methodologies.

Differentiates between the object-oriented, structured, and functional programming methodologies.

Highly Developed Standard

Compares and contrasts the three prominent methodologies of object-oriented, structured, and functional programming.

Compares and contrasts the three prominent methodologies of object-oriented, structured, and functional programming.

#### SE. 4. Evaluate and test software system requirements that considers both validation and verification.

Emerging Standard

Describes the major phases of the testing process for a medium-sized team project.

Describes the major phases of the testing process for a medium-sized team project.

Developed Standard

Develops a testing plan and schedule to individually test all requirements of a medium-sized team project.

Develops a testing plan and schedule to individually test all requirements of a medium-sized team project.

Highly Developed Standard

Successfully implements a testing plan for a medium-sized team programming project.

Successfully implements a testing plan for a medium-sized team programming project.

#### CS. 25. Examine the logical validity of arguments and proofs as they apply to Boolean expressions.

Emerging Standard

Identifies the properties and structures of Boolean algebra.

Identifies the properties and structures of Boolean algebra.

Developed Standard

Analyzes the steps to simplify a Boolean expression.

Analyzes the steps to simplify a Boolean expression.

Highly Developed Standard

Constructs a proof using the laws of Boolean algebra.

Constructs a proof using the laws of Boolean algebra.

#### CS. 26. Illustrate the basic terminology and properties of graphs and trees.

Emerging Standard

Defines terms and properties for graphs and trees.

Defines terms and properties for graphs and trees.

Developed Standard

Given a problem description illustrates appropriate trees, binary search trees, weighted, directed and undirected graphs solutions.

Given a problem description illustrates appropriate trees, binary search trees, weighted, directed and undirected graphs solutions.

Highly Developed Standard

Applies mathematical proofs to verify the properties of graphs.

Applies mathematical proofs to verify the properties of graphs.

#### CS. 27. Perform binary and hexadecimal conversions of numbers.

Emerging Standard

Converts binary numbers to their decimal equivalent.

Converts binary numbers to their decimal equivalent.

Developed Standard

Converts positive numbers between bases 2, 10, and 16.

Converts positive numbers between bases 2, 10, and 16.

Highly Developed Standard

Performs two-s complement to represent negative integers in binary.

Performs two-s complement to represent negative integers in binary.

#### CS. 28. Perform computations using recursively defined functions and structures.

Emerging Standard

Explains how a simple recursive function is evaluated.

Explains how a simple recursive function is evaluated.

Developed Standard

Computes the correct result produced by a recursive algorithm.

Computes the correct result produced by a recursive algorithm.

Highly Developed Standard

Constructs recursive algorithms for the solution of problems.

Constructs recursive algorithms for the solution of problems.

#### CS. 29. Produce algorithms for solving simple problems and trace the execution of computer programs.

Emerging Standard

Defines the steps necessary to solve a programming problem.

Defines the steps necessary to solve a programming problem.

Developed Standard

Produces a working programming solution for a given algorithm.

Produces a working programming solution for a given algorithm.

Highly Developed Standard

Develops a generic solution for an algorithm that can be used to solve a range of related problems.

Develops a generic solution for an algorithm that can be used to solve a range of related problems.

#### CS. 30 Produce graphical user interfaces that incorporate simple color models and handle events.

Emerging Standard

Differentiates between good and bad design concepts for human-computer interfaces.

Differentiates between good and bad design concepts for human-computer interfaces.

Developed Standard

Produces programming code of a graphical user interface that utilizes a simple color model effectively and efficiently handles events triggered by user interaction.

Produces programming code of a graphical user interface that utilizes a simple color model effectively and efficiently handles events triggered by user interaction.

Highly Developed Standard

Develops programming code for a graphical user interface that incorporates the concepts of good HCI design.

Develops programming code for a graphical user interface that incorporates the concepts of good HCI design.

#### SE. 5. Solve problems involving sets, relations, functions, and congruences.

Emerging Standard

Defines the concepts of sets, relations, functions, and congruences.

Defines the concepts of sets, relations, functions, and congruences.

Developed Standard

Solves problems about sets, relations, functions, and congruences.

Solves problems about sets, relations, functions, and congruences.

Highly Developed Standard

Evaluates a problem and constructs an appropriate solution choosing among sets, relations, functions, and/or congruences.

Evaluates a problem and constructs an appropriate solution choosing among sets, relations, functions, and/or congruences.

#### CS. 31. Use fundamental concepts of Calculus to construct graphs of polynomial, rational and exponential functions.

Emerging Standard

Constructs graphs of polynomial, rational and exponential functions with frequent errors and omissions; displays a weak understanding.

Constructs graphs of polynomial, rational and exponential functions with frequent errors and omissions; displays a weak understanding.

Developed Standard

Independently constructs graphs of polynomial, rational and exponential functions.

Independently constructs graphs of polynomial, rational and exponential functions.

Highly Developed Standard

Independently and with a thorough understanding constructs graphs of polynomial, rational and exponential functions.

Independently and with a thorough understanding constructs graphs of polynomial, rational and exponential functions.

#### CS. 32. Use graphs and trees to solve problems algorithmically.

Emerging Standard

Explains standard algorithms for graphs and trees, such as Eulerian circuits, spanning trees, and Kruskal?s algorithm.

Explains standard algorithms for graphs and trees, such as Eulerian circuits, spanning trees, and Kruskal?s algorithm.

Developed Standard

Applies traversal methods for graphs and trees.

Applies traversal methods for graphs and trees.

Highly Developed Standard

Verifies the correctness of graph algorithms using mathematical proofs.

Verifies the correctness of graph algorithms using mathematical proofs.

#### SE. 6. Use methods of combinatorics to solve counting problems.

Emerging Standard

Recognizes the need for combinatorial techniques such as combinations or permutations to solve a problem.

Recognizes the need for combinatorial techniques such as combinations or permutations to solve a problem.

Developed Standard

Solves counting problems using combinatorial techniques such as combinations and permutations.

Solves counting problems using combinatorial techniques such as combinations and permutations.

Highly Developed Standard

Decomposes a complex problem into combinatorial procedures.

Decomposes a complex problem into combinatorial procedures.

#### CS. 33. Use standard analysis and design techniques to produce a team-developed, medium-sized, secure software application that is fully implemented and formally tested.

Emerging Standard

As part of a team, produces an executable, medium-sized software application that meets some program requirements and includes design documentation and some evidence of testing.

As part of a team, produces an executable, medium-sized software application that meets some program requirements and includes design documentation and some evidence of testing.

Developed Standard

As part of a team, produces a working, medium-sized software application on time that meets many program requirements including design and some test plan documentation.

As part of a team, produces a working, medium-sized software application on time that meets many program requirements including design and some test plan documentation.

Highly Developed Standard

As part of a team, successfully develops a medium-sized, secure software application on time that meets all program requirements including design and formal test plan documentation.

As part of a team, successfully develops a medium-sized, secure software application on time that meets all program requirements including design and formal test plan documentation.

#### CS. 34. Verify program correctness through the development of sound test plans and the implementation of comprehensive test cases.

Emerging Standard

Produces test plans for object - oriented programming solutions that considers code coverage.

Produces test plans for object - oriented programming solutions that considers code coverage.

Developed Standard

Analyzes a program and devises a test plan that examines code coverage and develops test cases for data coverage.

Analyzes a program and devises a test plan that examines code coverage and develops test cases for data coverage.

Highly Developed Standard

Constructs a test driver for code coverage and creates a formal test plan choosing comprehensive test cases for data coverage.

Constructs a test driver for code coverage and creates a formal test plan choosing comprehensive test cases for data coverage.