first working version
This commit is contained in:
381
learning_plans/python/02_INITIAL_ASSESSMENT.md
Normal file
381
learning_plans/python/02_INITIAL_ASSESSMENT.md
Normal file
@@ -0,0 +1,381 @@
|
||||
# Python Initial Assessment
|
||||
|
||||
## 🎯 Purpose
|
||||
|
||||
This assessment will help determine your current Python proficiency level and create a personalized learning path.
|
||||
|
||||
## 📋 Assessment Structure
|
||||
|
||||
### Part 1: Self-Assessment Questionnaire
|
||||
### Part 2: Practical Coding Challenges
|
||||
### Part 3: Knowledge Gap Analysis
|
||||
|
||||
---
|
||||
|
||||
## Part 1: Self-Assessment Questionnaire
|
||||
|
||||
Rate yourself honestly on each topic using the mastery levels:
|
||||
- **Level 0:** Never heard of it / Don't understand
|
||||
- **Level 1:** Heard of it / Basic awareness
|
||||
- **Level 2:** Can use with documentation
|
||||
- **Level 3:** Can use confidently without docs
|
||||
- **Level 4:** Can teach others / Expert level
|
||||
|
||||
### Python Basics
|
||||
| Topic | Current Level (0-4) | Notes |
|
||||
|-------|---------------------|-------|
|
||||
| Variables & Data Types | | |
|
||||
| Operators | | |
|
||||
| Control Flow (if/else) | | |
|
||||
| Loops (for, while) | | |
|
||||
| Lists | | |
|
||||
| Tuples | | |
|
||||
| Dictionaries | | |
|
||||
| Sets | | |
|
||||
| String manipulation | | |
|
||||
| Basic I/O | | |
|
||||
|
||||
### Functions & Modules
|
||||
| Topic | Current Level (0-4) | Notes |
|
||||
|-------|---------------------|-------|
|
||||
| Function definition | | |
|
||||
| Parameters & arguments | | |
|
||||
| *args and **kwargs | | |
|
||||
| Lambda functions | | |
|
||||
| Scope (local/global) | | |
|
||||
| Importing modules | | |
|
||||
| Creating modules | | |
|
||||
| Standard library usage | | |
|
||||
|
||||
### Object-Oriented Programming
|
||||
| Topic | Current Level (0-4) | Notes |
|
||||
|-------|---------------------|-------|
|
||||
| Classes & objects | | |
|
||||
| __init__ method | | |
|
||||
| Instance vs class variables | | |
|
||||
| Inheritance | | |
|
||||
| Multiple inheritance | | |
|
||||
| Method overriding | | |
|
||||
| Encapsulation | | |
|
||||
| Polymorphism | | |
|
||||
| Abstract classes | | |
|
||||
| Magic methods (dunder) | | |
|
||||
|
||||
### File & Exception Handling
|
||||
| Topic | Current Level (0-4) | Notes |
|
||||
|-------|---------------------|-------|
|
||||
| Reading/writing files | | |
|
||||
| Context managers (with) | | |
|
||||
| try/except | | |
|
||||
| Raising exceptions | | |
|
||||
| Custom exceptions | | |
|
||||
| JSON handling | | |
|
||||
| CSV handling | | |
|
||||
|
||||
### Advanced Concepts
|
||||
| Topic | Current Level (0-4) | Notes |
|
||||
|-------|---------------------|-------|
|
||||
| List comprehensions | | |
|
||||
| Dict comprehensions | | |
|
||||
| Generators | | |
|
||||
| Decorators | | |
|
||||
| Iterators | | |
|
||||
| Closures | | |
|
||||
| Type hints | | |
|
||||
| Properties (@property) | | |
|
||||
|
||||
### Expert Topics
|
||||
| Topic | Current Level (0-4) | Notes |
|
||||
|-------|---------------------|-------|
|
||||
| Metaclasses | | |
|
||||
| Descriptors | | |
|
||||
| Context manager protocol | | |
|
||||
| Threading | | |
|
||||
| Multiprocessing | | |
|
||||
| Async/await | | |
|
||||
| Memory management | | |
|
||||
| Performance optimization | | |
|
||||
| Design patterns | | |
|
||||
| Testing (unittest/pytest) | | |
|
||||
|
||||
---
|
||||
|
||||
## Part 2: Practical Coding Challenges
|
||||
|
||||
### Challenge 1: Basic Python (Beginner)
|
||||
```python
|
||||
# Write a function that takes a list of numbers and returns:
|
||||
# - The sum of all even numbers
|
||||
# - The product of all odd numbers
|
||||
# Example: [1, 2, 3, 4, 5] -> (6, 15)
|
||||
|
||||
def process_numbers(numbers):
|
||||
# Your code here
|
||||
pass
|
||||
|
||||
# Test
|
||||
print(process_numbers([1, 2, 3, 4, 5])) # Should print: (6, 15)
|
||||
```
|
||||
|
||||
**Can you solve this?** ☐ Yes ☐ No ☐ With hints
|
||||
|
||||
---
|
||||
|
||||
### Challenge 2: Data Structures (Beginner-Intermediate)
|
||||
```python
|
||||
# Write a function that takes a string and returns a dictionary
|
||||
# with character counts, but only for characters that appear more than once
|
||||
# Example: "hello" -> {'l': 2}
|
||||
|
||||
def count_duplicates(text):
|
||||
# Your code here
|
||||
pass
|
||||
|
||||
# Test
|
||||
print(count_duplicates("hello")) # Should print: {'l': 2}
|
||||
print(count_duplicates("programming")) # Should print: {'g': 2, 'r': 2, 'm': 2}
|
||||
```
|
||||
|
||||
**Can you solve this?** ☐ Yes ☐ No ☐ With hints
|
||||
|
||||
---
|
||||
|
||||
### Challenge 3: OOP (Intermediate)
|
||||
```python
|
||||
# Create a BankAccount class with:
|
||||
# - Private balance attribute
|
||||
# - deposit() method
|
||||
# - withdraw() method (check for sufficient funds)
|
||||
# - get_balance() method
|
||||
# - Transaction history tracking
|
||||
|
||||
class BankAccount:
|
||||
# Your code here
|
||||
pass
|
||||
|
||||
# Test
|
||||
account = BankAccount(100)
|
||||
account.deposit(50)
|
||||
account.withdraw(30)
|
||||
print(account.get_balance()) # Should print: 120
|
||||
```
|
||||
|
||||
**Can you solve this?** ☐ Yes ☐ No ☐ With hints
|
||||
|
||||
---
|
||||
|
||||
### Challenge 4: Decorators (Advanced)
|
||||
```python
|
||||
# Create a decorator that measures function execution time
|
||||
# and caches results for same arguments
|
||||
|
||||
def timing_cache(func):
|
||||
# Your code here
|
||||
pass
|
||||
|
||||
@timing_cache
|
||||
def fibonacci(n):
|
||||
if n < 2:
|
||||
return n
|
||||
return fibonacci(n-1) + fibonacci(n-2)
|
||||
|
||||
# Test
|
||||
print(fibonacci(10)) # Should cache intermediate results
|
||||
```
|
||||
|
||||
**Can you solve this?** ☐ Yes ☐ No ☐ With hints
|
||||
|
||||
---
|
||||
|
||||
### Challenge 5: Generators (Advanced)
|
||||
```python
|
||||
# Create a generator that yields prime numbers up to n
|
||||
|
||||
def prime_generator(n):
|
||||
# Your code here
|
||||
pass
|
||||
|
||||
# Test
|
||||
primes = list(prime_generator(20))
|
||||
print(primes) # Should print: [2, 3, 5, 7, 11, 13, 17, 19]
|
||||
```
|
||||
|
||||
**Can you solve this?** ☐ Yes ☐ No ☐ With hints
|
||||
|
||||
---
|
||||
|
||||
### Challenge 6: Async Programming (Expert)
|
||||
```python
|
||||
# Write an async function that fetches multiple URLs concurrently
|
||||
# and returns their content lengths
|
||||
|
||||
import asyncio
|
||||
|
||||
async def fetch_all_lengths(urls):
|
||||
# Your code here
|
||||
pass
|
||||
|
||||
# Test
|
||||
urls = [
|
||||
"https://example.com",
|
||||
"https://python.org",
|
||||
"https://github.com"
|
||||
]
|
||||
# Should fetch all URLs concurrently and return their lengths
|
||||
```
|
||||
|
||||
**Can you solve this?** ☐ Yes ☐ No ☐ With hints
|
||||
|
||||
---
|
||||
|
||||
## Part 3: Knowledge Gap Analysis
|
||||
|
||||
### Based on Self-Assessment
|
||||
|
||||
**Count your scores:**
|
||||
- Topics at Level 0: ___
|
||||
- Topics at Level 1: ___
|
||||
- Topics at Level 2: ___
|
||||
- Topics at Level 3: ___
|
||||
- Topics at Level 4: ___
|
||||
|
||||
**Total topics assessed:** ___
|
||||
|
||||
### Based on Coding Challenges
|
||||
|
||||
**Challenges solved:**
|
||||
- Challenge 1 (Basic): ☐
|
||||
- Challenge 2 (Data Structures): ☐
|
||||
- Challenge 3 (OOP): ☐
|
||||
- Challenge 4 (Decorators): ☐
|
||||
- Challenge 5 (Generators): ☐
|
||||
- Challenge 6 (Async): ☐
|
||||
|
||||
**Total solved:** ___ / 6
|
||||
|
||||
---
|
||||
|
||||
## 📊 Assessment Results & Recommendations
|
||||
|
||||
### Proficiency Level Determination
|
||||
|
||||
**If you scored:**
|
||||
|
||||
#### Absolute Beginner (0-20% Level 2+)
|
||||
- **Recommendation:** Start with Phase 1 (Foundations)
|
||||
- **Timeline:** 3-4 months for Phase 1
|
||||
- **Focus:** Master basics before moving forward
|
||||
- **Study Time:** 2-3 hours daily
|
||||
- **Resources:** "Python Crash Course", Real Python beginner tutorials
|
||||
|
||||
#### Beginner (20-40% Level 2+, 1+ challenges solved)
|
||||
- **Recommendation:** Review Phase 1, focus on Phase 2
|
||||
- **Timeline:** 1 month review + 3-4 months Phase 2
|
||||
- **Focus:** Strengthen foundations, build intermediate skills
|
||||
- **Study Time:** 2-3 hours daily
|
||||
- **Resources:** "Fluent Python" chapters 1-5, Python documentation
|
||||
|
||||
#### Intermediate (40-60% Level 2+, 3+ challenges solved)
|
||||
- **Recommendation:** Skip to Phase 2-3
|
||||
- **Timeline:** 2 months Phase 2 + 4-5 months Phase 3
|
||||
- **Focus:** OOP, decorators, generators, async basics
|
||||
- **Study Time:** 2-4 hours daily
|
||||
- **Resources:** "Effective Python", "Python Cookbook"
|
||||
|
||||
#### Advanced (60-80% Level 2+, 4+ challenges solved)
|
||||
- **Recommendation:** Focus on Phase 3-4
|
||||
- **Timeline:** 2 months Phase 3 + 3-4 months Phase 4
|
||||
- **Focus:** Metaclasses, async, performance, design patterns
|
||||
- **Study Time:** 2-4 hours daily
|
||||
- **Resources:** "High Performance Python", Python source code
|
||||
|
||||
#### Expert (80%+ Level 3+, 5+ challenges solved)
|
||||
- **Recommendation:** Phase 4-5 (Specialization)
|
||||
- **Timeline:** 2 months Phase 4 + ongoing specialization
|
||||
- **Focus:** Deep expertise, contribute to open source
|
||||
- **Study Time:** 1-2 hours daily (maintenance + specialization)
|
||||
- **Resources:** PEPs, CPython source, advanced talks
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Personalized Learning Path
|
||||
|
||||
### Your Starting Point
|
||||
**Based on assessment:** _______________ (Fill after completing)
|
||||
|
||||
### Recommended Phase to Start
|
||||
**Phase:** _______________
|
||||
|
||||
### Topics to Review First
|
||||
1. _______________
|
||||
2. _______________
|
||||
3. _______________
|
||||
|
||||
### Topics to Skip (Already Mastered)
|
||||
1. _______________
|
||||
2. _______________
|
||||
3. _______________
|
||||
|
||||
### Weak Areas to Focus On
|
||||
1. _______________
|
||||
2. _______________
|
||||
3. _______________
|
||||
|
||||
### Estimated Timeline to Advanced Level
|
||||
**From your starting point:** ___ months
|
||||
|
||||
---
|
||||
|
||||
## 📝 Action Items
|
||||
|
||||
### Immediate Next Steps (This Week)
|
||||
1. ☐ Complete this assessment
|
||||
2. ☐ Review recommended phase in Master Plan
|
||||
3. ☐ Set up development environment
|
||||
4. ☐ Join Python community (Reddit, Discord)
|
||||
5. ☐ Schedule daily study time
|
||||
6. ☐ Create first week's study plan
|
||||
7. ☐ Take first module quiz
|
||||
|
||||
### First Month Goals
|
||||
1. ☐ Complete ____ modules
|
||||
2. ☐ Build ____ small projects
|
||||
3. ☐ Read ____ chapters from recommended book
|
||||
4. ☐ Contribute to ____ discussion/question online
|
||||
5. ☐ Take monthly comprehensive exam
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Reassessment Schedule
|
||||
|
||||
- **Week 4:** Quick review of progress
|
||||
- **Month 3:** Comprehensive reassessment
|
||||
- **Month 6:** Mid-journey assessment
|
||||
- **Month 12:** Full reassessment
|
||||
- **Month 18:** Expert level assessment
|
||||
|
||||
---
|
||||
|
||||
## 📚 Additional Assessment Resources
|
||||
|
||||
### Online Assessments
|
||||
- Python.org's Official Quiz
|
||||
- Real Python Quizzes
|
||||
- HackerRank Python Certification
|
||||
- LeetCode Python Track
|
||||
|
||||
### Practice Platforms
|
||||
- Codewars (Python kata)
|
||||
- Exercism.org (Python track)
|
||||
- Project Euler
|
||||
- Advent of Code
|
||||
|
||||
---
|
||||
|
||||
**Date Completed:** _______________
|
||||
**Next Reassessment:** _______________
|
||||
**Notes:**
|
||||
_______________________________________________
|
||||
_______________________________________________
|
||||
_______________________________________________
|
||||
|
||||
Reference in New Issue
Block a user