A personal learning repository focused on practical Python development through small, incremental projects.
This repository serves as a sandbox to practice core Python concepts, reinforce programming logic, and build confidence by solving problems hands-on. Each mini-project is isolated in its own branch to allow focused experimentation and versioning without cluttering the workspace.
The main goals of this repository are to:
- Develop solid programming logic using Python
- Practice problem-solving through repetition and variation
- Strengthen understanding of Python fundamentals in isolation
- Build habits of writing, running, debugging, and refining code
- Progress from simple scripts to slightly more structured programs
This is not a showcase repository. It is a learning workspace. Branches are used to separate mini-projects for clarity and experimentation.
Each mini-project is organized in its own branch to maintain isolation and clear progression:
calculator— arithmetic operations, input handling, and basic validation
Projects in this repository intentionally focus on:
- Core Python syntax
- Control flow (conditionals, loops)
- Functions and decomposition
- Data structures (lists, dictionaries, sets)
- Basic state management
- Error handling and edge cases
At early stages, projects avoid:
- Frameworks
- Databases
- Complex architectures
- Overengineering
Structure and organization are introduced gradually as learning progresses. Branches allow isolated development of different concepts and mini-projects.
- Small scope
- Single responsibility
- Executable scripts
- Emphasis on clarity over cleverness
- Refactoring happens after correctness
- Isolated experimentation per branch
- Versioning via Git tags for key milestones
Some projects may appear simple or repetitive by design — repetition is intentional to reinforce learning and logic development.
As proficiency increases, later exercises may introduce:
- Basic modularization
- Simple folder-based separation of concerns
- Light architectural patterns (when justified)
Tags can be used within branches to mark stable versions or milestones.
- Keep each mini-project isolated in its branch
- Commit frequently to capture progress
- Use descriptive commit messages, e.g.,
chore(calculator): add input validation - Use tags for marking important versions, e.g.,
calculator-v0.1 - Avoid merging unrelated mini-projects into the same branch
Code quality, style, and solutions may vary across projects, reflecting different stages of learning and experimentation.
This repository is a personal learning tool, not a professional product.
This repository is for educational purposes.
Use, adapt, or reference freely.