Codewalks
Codewalks attempt to meet the following goals
- Learn how to effectively communicate your solution, design and implementation to others.
- Learn how to discuss pros and cons of a solution, design and implementation.
- Evaluate and accept/reject feedback on your solution, design and implementation.
- Be constructively critical of work presented to/by you.
Presentation
Some recommendations for your presentation
- Present the problem you attempted to solve.
- Provide a simple explanation in English of the problem.
- Give examples providing inputs and outputs. Use these examples to nail down the problem.
- If there are special cases that require attention, state them and explain the reason why these cases require attention.
- Present an overview of your solution.
- Provide a clear mapping of the problem's information to data/classes.
- Provide an explanation of the role for each class.
- Use a diagram (Class Diagram).
- Provide a clear picture of the interactions between you classes.
- Provide an explanation of how interactions in your code achieve the desired outcome.
- Use an interactions/sequence diagram.
- Show how tests capture the cases (special or otherwise) that you covered at the start of your presentation.
Codewalk Public General Rubric
This rubric describes the common, general points that we will always consider for all codewalks.
For each week's codewalk there will be specific, problem related points that we will be looking for that will very with each assignment.
The goal of our codewalks are
- To train students to write well designed, well organized and well documented code.
- To train students in explaining their logical solution(s) to their peers.
- To train students in explaining how their design and implementation follows their logical solution.
- To train students in listening and answering questions about their logical solution/design/implenentation.
- To train students in discussing pros and cons of their logical solution/design/implementation and propose alternatives.
The goal of this rubric is to provide a set of areas/questions to consider both while you are preparing for your codewalk but also while you are listening to someone else's codewalk. These areas/questions attempt to focus on what we have found to be decisive characteristics of the solution/design/code that can expose flaws
Logical Solution
- Can the presenter explain their logical solution in English?
- Does the logical solution have clear steps?
- Is the order of these steps clear?
- Do the steps lead to a correct solution to the problem?
- Can the presenter show using an example how their logical solution leads to a correct answer?
Design
- Does the presenter clearly map information from the problem to data?
- Does the presenter clearly map steps/operations in their design?
- Does the design follow our design rules
- One class one responsibility
- One task one method
- Only talk to your friends
- Are pre-, post-conditions and invariants clearly stated? Are they correct?
- Can the presenter list pros and cons of their design? Can we do better?
- Were alternative designs considered? If so what lead to selecting the current design?
Implementation
- Does the implementation follow the design?
- Does the code map to the logical solution
- Each step is clearly mapped
- The presenter can walk through a concrete example and show how the code behaves
- Code follows our rules
- Meaningful names for class, fields, methods etc.
- Proper separation of Client code, implementation etc.
- No magic values
- Documentation is clear and the code does in fact behave as documented
- Cryptic methods
- Proper use of abstraction
- Can the presenter discuss the algorithmic complexity of their solution/implementation?
Presentation
- Can you hear the presenter when they speak?
- Do you understand the presenter when they speak?
- Does the presenter use the correct terminology?
- Does the presenter understand and answer the question asked?
Re-Grade Policy
If you believe we made a mistake when grading one of your problem sets, you may submit an re-grade request on Piazza. A re-grade request should be submitted within 7 days of receiving your grade
- Start a private Piazza thread visible to all instructors
- Have a subject line of the form re-grade request for Assignment N where N identifies the problem set whose grade is disputed
- State your full name
- state your CCIS ID
- link to your GitHub repository
- name your partner (if you have one for that problem set)
- describe the mistake(s)
- provide supporting evidence as necessary
Incomplete or improperly formatted re-grade requests may be ignored.
Our resolution of a re-grade request often forces us to take a closer look at your submission, and it is not unusual for that closer look to result in a lower grade instead of a higher grade for the problem set.