Skip to content

Commit 858c2d0

Browse files
committed
first commit
0 parents  commit 858c2d0

20 files changed

+3585
-0
lines changed

.github/workflows/autograding.yml

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
name: GitHub Classroom Workflow
2+
3+
on:
4+
push:
5+
branches: [ main, master ]
6+
pull_request:
7+
branches: [ main, master ]
8+
9+
permissions:
10+
checks: write
11+
actions: read
12+
contents: read
13+
14+
jobs:
15+
run-autograding-tests:
16+
runs-on: ubuntu-latest
17+
18+
steps:
19+
- name: Checkout code
20+
uses: actions/checkout@v4
21+
22+
- name: Set up Python
23+
uses: actions/setup-python@v4
24+
with:
25+
python-version: '3.9'
26+
27+
- name: Install dependencies
28+
run: |
29+
python -m pip install --upgrade pip
30+
pip install -r requirements.txt
31+
32+
- name: Basic Python Questions Tests (20 points)
33+
id: basic-python
34+
uses: classroom-resources/autograding-command-grader@v1
35+
with:
36+
test-name: Basic Python Questions (Q1-Q5)
37+
setup-command: ''
38+
command: python -m pytest tests/test_basic_python.py -v --tb=short
39+
timeout: 10
40+
max-score: 20
41+
42+
- name: Intermediate Python Questions Tests (25 points)
43+
id: intermediate-python
44+
uses: classroom-resources/autograding-command-grader@v1
45+
with:
46+
test-name: Intermediate Python Questions (Q6-Q10)
47+
setup-command: ''
48+
command: python -m pytest tests/test_intermediate_python.py -v --tb=short
49+
timeout: 15
50+
max-score: 25
51+
52+
- name: Advanced Python Questions Tests (30 points)
53+
id: advanced-python
54+
uses: classroom-resources/autograding-command-grader@v1
55+
with:
56+
test-name: Advanced Python Questions (Q11-Q15)
57+
setup-command: ''
58+
command: python -m pytest tests/test_advanced_python.py -v --tb=short
59+
timeout: 20
60+
max-score: 30
61+
62+
- name: Backend Development Questions Tests (25 points)
63+
id: backend-development
64+
uses: classroom-resources/autograding-command-grader@v1
65+
with:
66+
test-name: Backend Development Questions (Q16-Q20)
67+
setup-command: ''
68+
command: python -m pytest tests/test_backend_development.py -v --tb=short
69+
timeout: 25
70+
max-score: 25
71+
72+
- name: Autograding Reporter
73+
uses: classroom-resources/autograding-grading-reporter@v1
74+
env:
75+
BASIC-PYTHON_RESULTS: "${{steps.basic-python.outputs.result}}"
76+
INTERMEDIATE-PYTHON_RESULTS: "${{steps.intermediate-python.outputs.result}}"
77+
ADVANCED-PYTHON_RESULTS: "${{steps.advanced-python.outputs.result}}"
78+
BACKEND-DEVELOPMENT_RESULTS: "${{steps.backend-development.outputs.result}}"
79+
with:
80+
runners: basic-python,intermediate-python,advanced-python,backend-development

ASSESSMENT_SUMMARY.md

Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,223 @@
1+
# Python Backend Developer Assessment - Complete Summary
2+
3+
## Overview
4+
This comprehensive assessment contains **20 progressively difficult questions** designed to evaluate Python programming skills and backend development capabilities.
5+
6+
**Total Points: 100**
7+
**Recommended Time: 3-4 hours**
8+
9+
---
10+
11+
## Question Breakdown by Category
12+
13+
### 🟢 Basic Python (Questions 1-5) - 20 Points Total
14+
15+
| Q# | Question | Points | Topic | Difficulty |
16+
|----|----------|--------|--------|------------|
17+
| 1 | Sum of Numbers | 3 | Basic algorithms, list processing | Easy |
18+
| 2 | Find Largest Number | 3 | List operations, edge cases | Easy |
19+
| 3 | Reverse String | 4 | String manipulation, algorithms | Easy |
20+
| 4 | Count Vowels | 5 | String processing, case handling | Easy-Medium |
21+
| 5 | Fibonacci Sequence | 5 | Recursion/iteration, mathematical sequences | Medium |
22+
23+
### 🟡 Intermediate Python (Questions 6-10) - 25 Points Total
24+
25+
| Q# | Question | Points | Topic | Difficulty |
26+
|----|----------|--------|--------|------------|
27+
| 6 | Bank Account Class | 5 | Object-oriented programming, encapsulation | Medium |
28+
| 7 | Safe Division | 5 | Error handling, exception management | Medium |
29+
| 8 | Word Frequency Counter | 5 | Dictionary operations, text processing | Medium |
30+
| 9 | JSON File Operations | 5 | File I/O, JSON handling, error management | Medium |
31+
| 10 | Advanced List Manipulation | 5 | Data structures, filtering, sorting | Medium |
32+
33+
### 🟠 Advanced Python (Questions 11-15) - 30 Points Total
34+
35+
| Q# | Question | Points | Topic | Difficulty |
36+
|----|----------|--------|--------|------------|
37+
| 11 | Timing Decorator | 6 | Decorators, function wrapping, timing | Hard |
38+
| 12 | Fibonacci Generator | 6 | Generators, memory efficiency, yield | Hard |
39+
| 13 | File Context Manager | 6 | Context managers, resource management | Hard |
40+
| 14 | Thread-Safe Counter | 6 | Threading, locks, concurrency | Hard |
41+
| 15 | Advanced Data Processing | 6 | Data analysis, filtering, grouping, sorting | Hard |
42+
43+
### 🔴 Backend Development (Questions 16-20) - 25 Points Total
44+
45+
| Q# | Question | Points | Topic | Difficulty |
46+
|----|----------|--------|--------|------------|
47+
| 16 | REST API Creation | 5 | Flask, REST endpoints, HTTP methods | Expert |
48+
| 17 | Database Operations | 5 | SQLite, CRUD operations, SQL | Expert |
49+
| 18 | Authentication System | 5 | Password hashing, JWT tokens, security | Expert |
50+
| 19 | API Testing Suite | 5 | Testing, HTTP requests, validation | Expert |
51+
| 20 | Deployment Configuration | 5 | Environment variables, config management | Expert |
52+
53+
---
54+
55+
## Skills Assessment Matrix
56+
57+
### Core Python Skills
58+
-**Data Types & Operations** (Q1, Q2, Q10)
59+
-**Control Structures** (Q3, Q4, Q5)
60+
-**Functions & Algorithms** (Q1-Q5, Q15)
61+
-**Object-Oriented Programming** (Q6, Q14)
62+
-**Error Handling** (Q7, Q9)
63+
-**File Operations** (Q9, Q13)
64+
65+
### Advanced Python Concepts
66+
-**Decorators** (Q11)
67+
-**Generators** (Q12)
68+
-**Context Managers** (Q13)
69+
-**Threading & Concurrency** (Q14)
70+
-**Advanced Data Processing** (Q15)
71+
72+
### Backend Development Skills
73+
-**REST API Development** (Q16)
74+
-**Database Management** (Q17)
75+
-**Authentication & Security** (Q18)
76+
-**API Testing** (Q19)
77+
-**Configuration Management** (Q20)
78+
79+
---
80+
81+
## Grading Scale
82+
83+
| Score Range | Grade | Performance Level |
84+
|-------------|-------|-------------------|
85+
| 90-100 | A | Excellent - Ready for senior roles |
86+
| 80-89 | B | Good - Solid backend developer |
87+
| 70-79 | C | Satisfactory - Junior/mid-level ready |
88+
| 60-69 | D | Needs Improvement - Requires training |
89+
| Below 60 | F | Unsatisfactory - Significant gaps |
90+
91+
---
92+
93+
## Technical Stack Requirements
94+
95+
### Core Technologies
96+
- **Python 3.9+**
97+
- **Flask** (Web framework)
98+
- **SQLite** (Database)
99+
- **pytest** (Testing framework)
100+
101+
### Libraries & Tools
102+
- **bcrypt** (Password hashing)
103+
- **PyJWT** (JSON Web Tokens)
104+
- **requests** (HTTP client)
105+
- **pandas** (Data processing)
106+
- **numpy** (Numerical operations)
107+
108+
---
109+
110+
## GitHub Classroom Integration
111+
112+
### Autograder Features
113+
-**Automatic Testing** - Runs all test suites on push/PR
114+
-**Point Allocation** - Accurate scoring based on test results
115+
-**Detailed Feedback** - Shows which tests pass/fail
116+
-**Time Limits** - Prevents infinite loops
117+
-**Secure Execution** - Safe testing environment
118+
119+
### Setup Instructions for Instructors
120+
1. Import this repository to GitHub Classroom
121+
2. Configure autograding using the provided workflow
122+
3. Set assignment deadline and late policy
123+
4. Distribute assignment link to students
124+
125+
### Student Workflow
126+
1. Accept GitHub Classroom assignment
127+
2. Clone repository locally
128+
3. Install dependencies: `pip install -r requirements.txt`
129+
4. Implement solutions in `questions/` directory
130+
5. Test locally: `pytest tests/`
131+
6. Push to GitHub for automatic grading
132+
133+
---
134+
135+
## Question Distribution Strategy
136+
137+
### Progression Design
138+
The assessment follows a carefully designed progression:
139+
140+
1. **Foundation Building** (Q1-Q5): Establishes basic Python competency
141+
2. **Practical Application** (Q6-Q10): Tests real-world programming scenarios
142+
3. **Advanced Concepts** (Q11-Q15): Evaluates mastery of complex Python features
143+
4. **Professional Skills** (Q16-Q20): Assesses backend development readiness
144+
145+
### Cognitive Load Management
146+
- Each category increases in complexity
147+
- Point values reflect difficulty and importance
148+
- Time allocation scales with question complexity
149+
- Clear documentation reduces cognitive overhead
150+
151+
---
152+
153+
## Assessment Validity
154+
155+
### Content Validity
156+
- Questions mirror real backend development tasks
157+
- Covers essential Python and web development concepts
158+
- Progressive difficulty matches learning curve
159+
- Industry-relevant technologies and practices
160+
161+
### Construct Validity
162+
- Tests both theoretical knowledge and practical application
163+
- Balances algorithmic thinking with framework usage
164+
- Evaluates code quality, not just functionality
165+
- Assesses professional development practices
166+
167+
### Reliability
168+
- Comprehensive test suites ensure consistent grading
169+
- Automated testing eliminates human bias
170+
- Multiple test cases per question increase reliability
171+
- Clear success criteria reduce ambiguity
172+
173+
---
174+
175+
## Instructor Resources
176+
177+
### Provided Materials
178+
- ✅ Complete question set with detailed specifications
179+
- ✅ Comprehensive test suites for all questions
180+
- ✅ GitHub Classroom autograder configuration
181+
- ✅ Sample solutions (in separate repository)
182+
- ✅ Grading rubrics and performance indicators
183+
184+
### Customization Options
185+
- Modify point allocations per question
186+
- Add/remove questions based on course focus
187+
- Adjust time limits in autograder
188+
- Customize grading scale
189+
- Add additional test cases
190+
191+
---
192+
193+
## Success Metrics
194+
195+
### For Students
196+
- **Completion Rate**: % of questions attempted
197+
- **Accuracy Score**: Points earned / Total points
198+
- **Category Performance**: Strength/weakness identification
199+
- **Code Quality**: Adherence to best practices
200+
201+
### For Instructors
202+
- **Class Performance Distribution**: Grade distribution analysis
203+
- **Question Difficulty Analysis**: Pass/fail rates per question
204+
- **Time Management**: Completion patterns
205+
- **Common Mistakes**: Error pattern identification
206+
207+
---
208+
209+
## Recommended Usage
210+
211+
### Course Integration
212+
- **Mid-term Assessment**: After covering Python fundamentals
213+
- **Final Project Alternative**: Comprehensive skill evaluation
214+
- **Interview Preparation**: Practice for technical interviews
215+
- **Placement Testing**: Skill level assessment for new hires
216+
217+
### Professional Development
218+
- **Skill Gap Analysis**: Identify areas for improvement
219+
- **Career Readiness**: Backend developer competency check
220+
- **Certification Preparation**: Python/Web development certifications
221+
- **Team Training**: Standardized skill assessment
222+
223+
This assessment provides a comprehensive, fair, and automated way to evaluate Python backend development skills across multiple competency levels.

0 commit comments

Comments
 (0)