diff --git a/assignment/socket_chat--patterns-and-testing.md b/assignment/socket_chat--patterns-and-testing.md index 6b7e04f152e54e1b05af56ede76fe5dac1f65adf..a0b9bcbfef96450ea9d4b0146e63188bfd17e149 100644 --- a/assignment/socket_chat--patterns-and-testing.md +++ b/assignment/socket_chat--patterns-and-testing.md @@ -75,6 +75,30 @@ git commit --author="Herbie Husker <herbie@huskers.unl.edu>" project, so you can follow your IDE's instructions to import a Maven project. +## Issue Tracker + +We have pre-populated your repository's Issue Tracker with issues for the +various parts of the assignment that need to be completed. **We do *not* +guarantee that the pre-populated issues are complete; this document is the +authoritative source of requirements.** + +- A good way to coordinate who is working on which parts of the code is to + use the [web interface](https://docs.gitlab.com/ee/user/project/issues/index.html#issue-page) + to "assign" an issue to a team member. +- You may [add more issues](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#create-a-new-issue) + to the Issue Tracker if you wish. This is common when you discover more + tasks that need to be accomplished or when you want to divide an existing + issue into finer-grained tasks (the original issue would still exist, but + the finer-grained issues may make it easier to divide the work). +- When you have completed a task, [close the corresponding issue](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues). + You can do this through the issue tracker, or you can do it through a + commit message. + - To close an issue through a commit message, include a keyword such as + `closes #12` in a commit message. You cannot create a commit message + only to close an issue; this must be a commit message for adding/ + changing/removing files or for a merge. See <https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#default-closing-pattern> + for keywords that will close an issue. + ## Assignment Look over the starter code, view @@ -124,7 +148,7 @@ code. Since the basename we're using is "socketchat", the file with the English- language strings is `socketchat_en.properties`. - The repository includes what may appear to be a file simply named - `socketchat.properties`. **Do not edit this file**. + `socketchat.properties`. **Do not directly edit this file**. Notice that some of the value strings have numbered arguments such as `{0}` and `{1}`. When combined with `MessageFormat.format()`, this allows us to create @@ -304,6 +328,12 @@ We will use a parameterized factory. the second argument. Write enough tests to attain *statement coverage* of `createCipher(String, String[])`. + - You can confirm that you have statement coverage by generating a + coverage report. + - Eclipse: <https://www.eclemma.org/userdoc/importexport.html> + - Instructions at the bottom of that page. Export as HTML. + - IntelliJ IDEA: <https://www.jetbrains.com/help/idea/generating-code-coverage-report.html> + That's it. That's your Simple Factory. Now it's time to use it. @@ -385,7 +415,7 @@ the correct repository, or that we cannot access, will not be graded.* ## Rubric -The assignment is worth **20 points**: +The assignment is worth **22 points**: - **4 points** for internationalization - 1 points for creating the properties file for the other language @@ -399,12 +429,30 @@ The assignment is worth **20 points**: - 1 point for delegating `encipher` and `decipher` - 3 points for writing the code to change cipher algorithms +- **3 points** for tests + - 1 point for testing `encipher` and `decipher` for your two classical + cipher algorithms + - 2 points for writing sufficient tests to attain statement coverage of + `CipherFactory.createCipher(String, String[])` + - **1 point** for making regular commits; *i.e.*, not waiting until the end of the project to make a massive commit. -- **3 point** for meaningful and well-formatted commit messages +- **2 points** for meaningful commit messages + +This assignment is scoped for a team of 2 students. If, despite your attempts +to engage your partner, your partner does not contribute to the assignment then +we will take that into account when grading. *If **at any time** your repository is public or has internal visibility then you will receive a 10% penalty. Further, if another student accesses your non-private repository and copies your solution then I will assume that you are complicit in their academic dishonesty.* + +## Contribution Rubric + +The contribution is worth **10 points**: + +- **1 point** for completing peer assessment +- **5 points** for equitable contribution based on peer assessments +- **4 points** for equitable contribution based on git history