%META:TOPICINFO{author="MarkArdis" date="1148418725" format="1.0" version="1.9"}% %META:TOPICPARENT{name="KeyThreeCriteriaAndRubrics"}% When given the opportunity, students can: ---++1. Given a specific implementation of a programming problem, analyze the run time of that implementation. * Suggested artifact for assessment: CSSE230 Exam question * Description: Students should be able to establish that they understand how to find the runtime of code containing loops. * Example: When asked to find the complexity of a block of code including multiple loops, students should recognize that nested loops increase the complexity of code, while sequential loops do not. As a result, they will give the correct big-oh analysis in each case. * Not acceptable: Students give the wrong big-oh analysis for the nested loops or multiply individual loop runtimes when finding the runtime of a series of sequential loops. ---++2. Design an algorithm to solve a given problem efficiently. * Suggested artifact for assessment: CSSE230 Exam question * Description: Students should be able to produce an algorithm that correctly solves a given problem efficiently using the design conventions specified in the course. * Example: Given two sets implemented as sorted arrays, the student can correctly write an algorithm to find the union of the two sets. Key ideas include incrementing the loop indices correctly to include all elements but avoid duplicates. The runtime should be linear in the size of the arrays. * Not acceptable: Not enough detail is provided about when to increment the loop indices. All the elements in one array that are greater than the largest element in the other array are ignored because the student terminates the loop improperly. Solution ignores the fact that the arrays are sorted, thus requiring a quadratic algorithm. ---++3. Given a detailed specification of a programming problem, implement that specification in an appropriate programming language correctly. * Suggested artifact for assessment: CSSE220 BigRational lab exercise * Description: Students should implement the abs, add, divide, multiply, negate, and subtract methods along with appropriate constructors. The implementations should be correct and follow the style conventions specified in the course. * Example: See the sample solution to the BigRational project. * Not acceptable: One or more of the implementations are seriously incorrect. Style has gross violations of the style conventions specified in the course. ---++4. Given a proposed implementation of a detailed specification of a programming problem, unit-test that proposed solution in an effective manner. * Suggested artifact for assessment: CSSE220 BigRational lab exercise * Description: Students should provide unit-tests of the abs, add, divide, multiply, negate, and subtract methods. The unit-tests should be provided by using a tool like JUnit. The unit-tests need not be exhaustive but, taken collectively, should demonstrate an understanding of covering a variety of cases including extreme cases. * Example: See the sample solution to the BigRational project. * Not acceptable: One or more of the methods/constructors is not tested at all. (But note that it is normal for a JUnit test of one method to be an effective test of several methods.) The unit tests fail to include any tests of extreme cases. The unit tests fail to include more than one test per method/constructor. -- Main.CurtClifton - 20 May 2006 - Tweaked formatting so BigRational doesn't show up as a WikiWord -- Main.MatthewBoutell - 19 May 2006 - Reordered and tweaked design criteria. -- Main.MatthewBoutell - 18 May 2006 - Added artifact for criteria #3, added criteria #4 on algorithm design. -- Main.DavidMutchler - 17 May 2006 - Reworded item 1 slightly, split original item 2 into two items and added details for those two items. -- Main.MatthewBoutell - 11 Apr 2006 - Added skeleton for criteria #2 -- Main.MatthewBoutell - 05 Apr 2006 - Added content -- Main.MarkArdis - 04 Apr 2006 - created page