Files
lnet_tutor/exam_system/NEW_EXAM_CREATED.md
2025-10-22 20:14:31 +08:00

170 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# New Exam Created: Python Easy 15 Questions
## Summary
**User data cleared successfully**
- Removed all data from `data/attempts/`
- Removed all data from `data/output/`
- Removed all data from `data/progress/`
- Reset manifest users to empty object
**New exam created: `python-easy-15q-v1`**
## Exam Details
- **Exam ID:** `python-easy-15q-v1`
- **Title:** Python Fundamentals - Easy Level (15 Questions)
- **Subject:** Python
- **Difficulty:** Beginner (Easy)
- **Duration:** 30 minutes
- **Passing Score:** 70%
- **Total Points:** 95 points
- **Total Questions:** 15
## Question Type Breakdown
| Type | Count | Total Points |
|------|-------|--------------|
| single_choice | 6 | 30 points (5 each) |
| true_false | 5 | 25 points (5 each) |
| multiple_choices | 4 | 40 points (10 each) |
## Question List
### Section 1: Python Basics (5 questions)
1. **[Single Choice, 5 pts]** What is the correct way to create a variable in Python?
- Answer: B (x = 5)
2. **[True/False, 5 pts]** Python is a case-sensitive language.
- Answer: True
3. **[Multiple Choices, 10 pts]** Which of the following are valid Python data types?
- Answers: A (int), C (float), D (bool)
- Partial credit enabled
4. **[Single Choice, 5 pts]** Which keyword is used to define a function in Python?
- Answer: B (def)
5. **[True/False, 5 pts]** In Python, indentation is used to define code blocks.
- Answer: True
### Section 2: Data Structures (5 questions)
6. **[Multiple Choices, 10 pts]** Which of the following are mutable data structures in Python?
- Answers: A (list), C (dict), D (set)
- Partial credit enabled
7. **[Single Choice, 5 pts]** How do you create an empty list in Python?
- Answer: B (list = [])
8. **[True/False, 5 pts]** A tuple in Python can be modified after creation.
- Answer: False
9. **[Single Choice, 5 pts]** What is the output of: print(type([1, 2, 3]))
- Answer: B (<class 'list'>)
10. **[Multiple Choices, 10 pts]** Which methods can be used to add elements to a list?
- Answers: A (append()), C (insert()), D (extend())
- Partial credit enabled
### Section 3: Control Flow (5 questions)
11. **[True/False, 5 pts]** The 'elif' keyword in Python is used for else-if conditions.
- Answer: True
12. **[Single Choice, 5 pts]** Which loop is used to iterate over a sequence in Python?
- Answer: B (for)
13. **[Multiple Choices, 10 pts]** Which statements are valid loop control keywords in Python?
- Answers: A (break), B (continue), C (pass)
- Partial credit enabled
14. **[True/False, 5 pts]** Python supports switch-case statements like C or Java.
- Answer: False
15. **[Single Choice, 5 pts]** What does the 'range(5)' function return?
- Answer: B (A range object representing 0 to 4)
## Features Enabled
**"I Don't Know" Option**
- All questions have `allowIDK: true`
- Students can select "I don't know" to avoid guessing
- IDK responses score 0 points (no penalty for honesty)
**Multiple Choices with Partial Credit**
- All multiple_choices questions have `partialCredit: true`
- Scoring formula: `(correct_selected - wrong_selected) / total_correct × points`
- Minimum score is 0 (no negative points)
**Automatic Scoring**
- Exam contains only auto-gradable question types
- Score is calculated immediately upon submission
- No manual grading required
## File Location
```
/Volumes/data/tutor_system/exam_system/data/input/python/2025-10/python-easy-15q-v1.json
```
## Manifest Update
The exam has been added to `data/manifest.json` and published:
```json
{
"examId": "python-easy-15q-v1",
"subject": "python",
"month": "2025-10",
"path": "python/2025-10/python-easy-15q-v1.json",
"published": true,
"version": "1.0.0"
}
```
## Next Steps
### To Deploy (when Docker Hub connectivity is stable):
```bash
cd /Volumes/data/tutor_system/exam_system
docker-compose down
docker-compose up --build -d
```
### To Test:
1. Open http://localhost:4200
2. Register/Login as a user
3. You should see the new exam: "Python Fundamentals - Easy Level (15 Questions)"
4. Start the exam and test:
- Single choice questions with IDK option
- Multiple choices with checkboxes and IDK option
- True/False with IDK option
- Selecting IDK in multiple_choices clears all other selections
5. Submit and verify:
- Automatic scoring works
- Partial credit is awarded correctly
- Result page shows all options with color coding
- IDK selections show yellow notice
## Known Issue
⚠️ **Docker Hub connectivity is currently unstable**
- Connection resets when pulling node:18-alpine and nginx:alpine images
- This is a temporary network issue
- The exam server (Python) container builds successfully
- Retry the docker-compose command when network is stable
## Previous Exams Still Available
The following exams remain published in the system:
- `python-easy-v1` (original easy exam)
- `python-intermediate-v1` (50 questions, intermediate level)
- `python-easy-15q-v1` (new 15-question exam with multiple_choices)
All three exams are available in the exam list.