# 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 () 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.