Files
lnet_tutor/learning_plans/python/02_INITIAL_ASSESSMENT.md
2025-10-22 20:14:31 +08:00

9.1 KiB

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)

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

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

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

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

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

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

Phase: _______________

Topics to Review First




Topics to Skip (Already Mastered)




Weak Areas to Focus On




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: