Rubrics
Students will be evaluated using rubrics. The criteria are always cumulative, i.e., to get an A you must fulfill all the previous criteria for C and B.
Problem Solving
Problem solving is essentially evaluated by the code passing the tests (either automated or manual).
- I: Code not submitted or not related to the problem;
- D: Code is somewhat related to the problem, but doesn't solve it;
- C: Code solves the basic cases;
- B: Solves all cases, but the solution is not optimal (time and/or space);
- A: Solution is optimal (time and space);
- A+: Handles possible input errors (e.g. input out of range, wrong input type, etc.).
Communication
It is expected that the interviewee speaks during the interview. They should describe their problem-solving process as much as possible. It must be clear to the interviewer what and how the interviewee was thinking through the whole process.
The steps below must be followed during the interview:
- Build an example(s);
- Solve the problem without code;
- Test the solution with the example(s);
- State the complexity (time and space);
- Write the code;
- Test the code with the example(s);
- Test corner and edge cases.
The following rubric will be used for communication:
- D: The interviewee didn't solve the problem (step 2) or solved partially, but couldn't go beyond step 2;
- C: Any of the options below:
- Skipped step 2 (started coding before solving the problem);
- Skipped steps 3, 4 or 6;
- Remained too quiet during the interview, so the interviewer could not follow the interviewee's problem solving process.
- B: Finished the interview, but had trouble with some steps;
- A: Performed well in the interview, and efficiently managed the time (e.g. after writing the full variable name, started refering to it with abbreviations to avoid rewriting everything);
- A+: Most of the thought process was clear to the interviewer. The interviewee spoke even while they were coding, describing what they were doing and why. You can think of this last part as a spoken code comment.
Code Quality
Code quality is important even during the interview. It is a way to show the interviewer that you care about writing maintainable code.
- I: Code not submitted or empty.
- D: Code contains syntax errors.
- C: Code without syntax errors, but contains at least one of the problems below:
- Doesn't use good variable names;
- Code isn't modular (if applicable);
- Code is not commented and is hard to understand.
- B: Code without syntax errors and doesn't contain any of the problems above.
- A: Code without syntax errors and doesn't contain any of the problems above. Also, uses idiomatic code (e.g. pythonic code) when it makes sense.