first working version
This commit is contained in:
169
exam_system/NEW_EXAM_CREATED.md
Normal file
169
exam_system/NEW_EXAM_CREATED.md
Normal file
@@ -0,0 +1,169 @@
|
||||
# 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.
|
||||
|
||||
Reference in New Issue
Block a user