> Source URL: /demos/cs1-path/projects/project-1.rubric
---
project: project-1
title: Data Explorer Rubric
total_points: 100
---

# Project 1: Data Explorer - Rubric

This rubric is used to evaluate [Project 1: Data Explorer](project-1.spec.md).

## Correctness (40 points)

Does the program produce correct results?

| Criterion              | Points | Description                                                             |
| ---------------------- | ------ | ----------------------------------------------------------------------- |
| Average calculation    | 10     | Correctly calculates and displays the average temperature               |
| Highest/lowest finding | 10     | Correctly identifies the highest and lowest temperatures AND their days |
| Day classification     | 10     | Correctly classifies each day as Hot (>75), Mild (70-75), or Cool (<70) |
| Category counting      | 10     | Correctly counts hot days and cool days                                 |

### Deductions

- -5 points for off-by-one errors
- -3 points for minor calculation errors
- -2 points for rounding issues

## Code Quality (30 points)

Is the code well-structured and readable?

| Criterion         | Points | Description                                                           |
| ----------------- | ------ | --------------------------------------------------------------------- |
| Loop usage        | 10     | Uses loops effectively to process data (not 7 separate if-statements) |
| Variable names    | 10     | Uses meaningful, descriptive variable names                           |
| Code organization | 10     | Code is logically organized and easy to follow                        |

### Examples

**Good variable names (full credit):**

```python
total_temperature = 0
highest_temp = temperatures[0]
hot_day_count = 0
```

**Poor variable names (reduced credit):**

```python
t = 0
h = temperatures[0]
x = 0
```

### Deductions

- -5 points for hardcoded repetition instead of loops
- -3 points for confusing variable names
- -3 points for overly complex logic when simpler approach exists

## Output Format (20 points)

Is the output clear and well-formatted?

| Criterion       | Points | Description                                                |
| --------------- | ------ | ---------------------------------------------------------- |
| Daily breakdown | 8      | Shows each day with temperature and classification         |
| Summary section | 8      | Shows all required summary statistics                      |
| Readability     | 4      | Output is easy to read with appropriate labels and spacing |

### Expected Output Structure

```
=== Weekly Weather Report ===

Daily Breakdown:
[Day]: [Temp]°F ([Classification])
...

Summary:
- Average temperature: [X.X]°F
- Highest: [X]°F on [Day]
- Lowest: [X]°F on [Day]
- Hot days (>75°F): [N]
- Cool days (<70°F): [N]
```

### Deductions

- -4 points for missing section headers
- -2 points for missing degree symbols or units
- -2 points for poor spacing/alignment

## Documentation (10 points)

Is the code documented?

| Criterion       | Points | Description                                         |
| --------------- | ------ | --------------------------------------------------- |
| Header comment  | 3      | Includes name, date, and project description at top |
| Inline comments | 7      | Key sections of code have explanatory comments      |

### Example Header

```python
# Project 1: Data Explorer
# Name: [Student Name]
# Date: [Date]
# Description: Analyzes weekly weather data and generates a report
```

### Deductions

- -3 points for no header comment
- -2 points for no inline comments
- -1 point for comments that don't explain anything useful

## Bonus Opportunities (+5 max)

- +2 points: Handle edge cases gracefully (empty data, all same temperature)
- +2 points: Add additional interesting statistics (median, temperature range, etc.)
- +1 point: Exceptionally clean and elegant code

## Common Issues to Avoid

1. **Hardcoding instead of looping**: Don't write 7 separate print statements
2. **Integer division**: Make sure average is a decimal, not rounded to integer
3. **Off-by-one in classification**: Check boundary conditions (is 75 hot or mild?)
4. **Missing the day name**: Finding 80°F is not enough—also track WHEN it occurred
5. **No comments**: Even simple code benefits from a brief explanation

## Feedback Format

When providing feedback, reference this rubric by section:

```
Correctness: XX/40
- Average: [feedback]
- Highest/lowest: [feedback]
- Classification: [feedback]
- Counting: [feedback]

Code Quality: XX/30
- [specific feedback]

Output Format: XX/20
- [specific feedback]

Documentation: XX/10
- [specific feedback]

Total: XX/100

Strengths:
- [what worked well]

Areas for Improvement:
- [specific suggestions]
```


---

## Backlinks

The following sources link to this document:

- [Rubric](/demos/cs1-path/index.path.llm.md)
- [Project 1 Rubric](/demos/cs1-path/feedback/ax7k-project-1.feedback-harness.llm.md)
- [Project 1 Rubric](/demos/cs1-path/projects/project-1.spec.llm.md)
