Skip to content

Grading Rubric

Total Points: 100 + 10 Bonus


Part 1: Basic RPC Implementation (30 points)

Criterion Points Requirements
Protocol Buffer Definition 5 - Correct syntax and structure
- All 4 operations defined
- Proper message types
Server Implementation 10 - All operations work correctly
- Proper return values
- Server starts without errors
- Handles concurrent requests
Error Handling 5 - Division by zero handled
- Appropriate gRPC status codes
- Error messages clear and helpful
Client Implementation 5 - Successfully connects to server
- Makes RPC calls correctly
- Displays results properly
Code Quality 3 - Clean, readable code
- Proper naming conventions
- Basic documentation
Demo Video 2 - Shows all operations
- Includes error cases
- Clear narration

Part 2: Failure Handling (35 points)

Criterion Points Requirements
Timeout Implementation 8 - Configurable timeout (2s default)
- Properly propagated to RPC calls
- Logged appropriately
Retry Logic 12 - Exponential backoff implemented
- Jitter added (random 0-1s)
- Maximum 3 attempts
- Each retry logged
Failure Simulation 5 - Server simulates crashes
- Server simulates delays
- Configurable failure rates
Retry Selectivity 5 - Only retries timeout errors
- Does NOT retry invalid input
- Proper error categorization
Logging 3 - Clear retry messages
- Timestamps included
- Easy to follow flow
Demo Video 2 - Shows timeout scenarios
- Shows retry succeeding
- Shows all retries failing

Part 3: Idempotency (20 points)

Criterion Points Requirements
Request ID Generation 4 - Uses UUIDs
- Generated before first attempt
- Same ID for all retries
Deduplication Logic 8 - Server caches processed requests
- Detects duplicates correctly
- Returns cached results
- Flags duplicates in response
Cache Management 3 - Size limit enforced
- TTL implemented
- LRU eviction working
Testing 3 - Normal operation tested
- Duplicate detection tested
- Retry scenario tested
- Multiple clients tested
Demo Video 2 - Shows duplicate detection
- Shows retry not double-incrementing
- Clear explanation

Part 4: Circuit Breaker (15 points)

Criterion Points Requirements
State Transitions 5 - CLOSED → OPEN working
- OPEN → HALF_OPEN working
- HALF_OPEN → CLOSED working
- Proper state logging
Failure Detection 3 - Tracks consecutive failures
- Opens after threshold (3 failures)
- Resets counter on success
Recovery Testing 3 - Half-open after timeout (5s)
- Tests recovery with single request
- Reopens if test fails
Thread Safety 2 - Uses locks properly
- No race conditions
- Safe for concurrent access
Demo Video 2 - Shows all state transitions
- Shows fast-fail behavior
- Shows recovery

Bonus: RPC vs REST (+10 points)

Criterion Points Requirements
REST Implementation 3 - Working REST API
- Same operations as gRPC
- Proper HTTP methods
Benchmark Script 3 - Measures latency correctly
- Measures throughput
- Fair comparison methodology
Performance Data 2 - Valid measurements
- Multiple iterations
- Statistical analysis
Analysis Report 2 - Insightful comparison
- Trade-offs discussed
- Use case recommendations

Code Quality (Throughout)

Code quality is assessed across all parts:

Excellent (90-100%)

  • Clean, well-organized code
  • Comprehensive docstrings
  • Type hints throughout
  • Proper error handling
  • Follows PEP 8
  • Easy to understand

Good (75-89%)

  • Generally clean code
  • Some documentation
  • Basic error handling
  • Mostly readable
  • Minor style issues

Acceptable (60-74%)

  • Works but messy
  • Minimal documentation
  • Basic error handling
  • Harder to follow
  • Style inconsistencies

Poor (<60%)

  • Difficult to read
  • No documentation
  • Poor error handling
  • Doesn't follow conventions
  • Hard to understand

Report Quality (Throughout)

The written report is assessed on:

Content (60%)

  • Correctness: Answers are accurate and demonstrate understanding
  • Depth: Shows deep thinking, not just surface-level answers
  • Analysis: Provides insights, not just descriptions
  • Examples: Uses concrete examples from implementation

Presentation (40%)

  • Clarity: Easy to read and understand
  • Organization: Logical structure and flow
  • Formatting: Professional appearance, proper citations
  • Writing: Grammar, spelling, punctuation

Demo Videos (Throughout)

Videos are assessed on:

Content (70%)

  • Completeness: Shows all required scenarios
  • Correctness: Demonstrates features working properly
  • Clarity: Easy to follow what's happening

Production (30%)

  • Audio: Clear narration, good microphone quality
  • Visual: Screen is readable, good resolution
  • Length: Within suggested time limits
  • Pacing: Not too fast or too slow

Deductions

Common reasons for point deductions:

Issue Deduction
Code doesn't run -20 to -50 points
Modified proto file -10 to -20 points
Missing required component -5 to -15 points
Plagiarism detected 0 points + academic integrity violation
Late submission (per policy) Variable
Missing test cases -2 to -5 points
Poor code quality -3 to -10 points
Incomplete documentation -2 to -5 points
Video issues (broken links, etc.) -2 to -5 points

Grade Scale

Points Grade Description
95-110 A+ Outstanding work, bonus completed
90-94 A Excellent work, all requirements exceeded
85-89 A- Very good work, most requirements exceeded
80-84 B+ Good work, all requirements met well
75-79 B Solid work, all requirements met
70-74 B- Acceptable work, most requirements met
65-69 C+ Passing, some requirements not fully met
60-64 C Minimum passing
<60 F Does not meet minimum requirements

Self-Assessment Checklist

Before submitting, rate yourself honestly:

Part 1

  • [ ] All operations work without errors
  • [ ] Error handling is comprehensive
  • [ ] Code is clean and documented
  • [ ] Demo shows all features

Part 2

  • [ ] Timeouts work correctly
  • [ ] Retry logic includes exponential backoff and jitter
  • [ ] Only appropriate errors are retried
  • [ ] Demo shows various failure scenarios

Part 3

  • [ ] Request IDs generated correctly
  • [ ] Duplicate requests are detected
  • [ ] Counter only increments once despite retries
  • [ ] Demo clearly shows idempotency

Part 4

  • [ ] Circuit breaker transitions between states
  • [ ] Fast-fail behavior works
  • [ ] Recovery testing works
  • [ ] Demo shows complete state cycle

Overall

  • [ ] All code runs without errors
  • [ ] All videos are accessible
  • [ ] Report answers all questions thoroughly
  • [ ] Submission is complete and organized

Feedback Categories

You will receive feedback in these areas:

Technical Implementation

  • Correctness of core functionality
  • Error handling robustness
  • Code efficiency and design

Understanding

  • Depth of concept understanding
  • Quality of analysis in report
  • Ability to explain trade-offs

Presentation

  • Code readability and organization
  • Documentation quality
  • Video clarity and completeness

Professionalism

  • Meeting deadlines
  • Following submission requirements
  • Overall quality and polish

Example Grade Breakdown

Student A (Total: 95/100)

Part Earned Possible Notes
Part 1 28 30 Missing some docstrings (-2)
Part 2 33 35 Jitter implementation unclear (-2)
Part 3 19 20 Cache TTL not tested (-1)
Part 4 15 15 Perfect implementation
Total 95 100 Excellent work overall

Student B (Total: 82/100)

Part Earned Possible Notes
Part 1 26 30 Error handling basic (-4)
Part 2 30 35 No jitter in backoff (-3), logging sparse (-2)
Part 3 16 20 No cache size limit (-2), testing incomplete (-2)
Part 4 10 15 Half-open state buggy (-3), no thread safety (-2)
Total 82 100 Good work, room for improvement

Getting Full Credit

To maximize your grade:

  1. Start early - Don't leave everything to the last minute
  2. Test thoroughly - Make sure everything works before submitting
  3. Document well - Explain your design decisions
  4. Ask questions - Use office hours if confused
  5. Watch requirements - Follow submission guidelines exactly
  6. Proofread - Check for typos and errors
  7. Test submission - Verify all links work and files are included

Questions About Grading?

  • Review detailed part rubrics in each Part's documentation
  • Attend office hours for clarification
  • Email instructor/TA with specific questions