Coding Exercises Repository - boredom becomes code
A collection of coding exercises, challenges, and mini-projects I work on for fun. I take simple problems and turn them into more educational, visual, or interactive versions.
| Project | Description | Stack |
|---|---|---|
| pin_extractor | A positional word-length cipher algorithm with a PyQt6 step-through visualizer | Python, PyQt6 |
| number_generator | A function that returns a string of numbers from 1 to n separated by spaces | Python |
| med_data_validator | Medical data validation utility | Python |
| isbn_validator | ISBN-10 and ISBN-13 validation utility | Python |
| config_manager | User configuration manager for managing settings like theme and notifications | Python, PyQt6 |
| instrument_inventory | FreeCodeCamp instrument inventory project | Python |
| planet_class | Planet class demonstrating OOP with validation | Python |
| email_simulator | OOP email system simulator with users, inboxes, and message management | Python |
| budget_app | Budget tracker with OOP, mutation testing, and interactive learning CLI | Python |
| salary_tracker | Employee salary tracker with level-based tiers (In Progress) | Python |
| game_char_stats_tracker | Game character stats manager with property validation | Python |
| media_catalogue | Movie and TV series catalogue with validation, filtering, and PySide6 GUI | Python, PySide6 |
| mutant_assistant | Mutation testing helper with test generation CLI (In Progress) | Python |
| discount_calculator | Discount calculator using Strategy Pattern with ABC | Python |
| player_interface | Game player movement with ABC and inheritance | Python |
| polygon_area_calculator | Shape calculator with Rectangle/Square inheritance (methods version + properties version) | Python |
| linked_list | Singly linked list implementation with add and remove operations | Python |
| hash_table | Hash table with collision handling using nested dictionaries | Python |
| binary_search | Binary search algorithm (TODO) | Python |
| bisection | Square root calculator using bisection method (binary search for continuous values) | Python |
| quicksort | Divide and conquer sorting: pick pivot, split smaller/larger, recursively sort | Python |
| selection_sort | Find minimum in unsorted portion, swap with first unsorted element, repeat | Python |
| screenshot_organizer | Scans Mac desktop for screenshots, moves them to a folder, and optionally deletes them | Python |
| web_scraper | Extract data from websites using CSS selectors (CLI + PyQt6 GUI) | Python, PyQt6 |
| Lesson | Description | Stack |
|---|---|---|
| algorithms | Big O, data structures (list vs deque), maps, hash maps, and sets | Python |
| classes_objects | Classes, objects, methods, attributes, inheritance, name mangling, ABCs, polymorphism, and dataclasses | Python |
| error_handling | Debugging and exception handling examples | Python |
Each lesson folder includes an interactive_lessons/ directory with a PySide6 app for visual, hands-on learning.
# Algorithms - hash tables, Venn diagrams, list vs deque visualization
cd python/lessons/algorithms/interactive_lessons && python main.py# Classes & Objects - class diagrams, inheritance visualization, attribute inspector
cd python/lessons/classes_objects/interactive_lessons && python main.py# Error Handling - try/except flowcharts, debugger simulator
cd python/lessons/error_handling/interactive_lessons && python main.pyStructured practice with lessons, practice problems, and interactive visualizations.
View all problems & progress →
| Problem | Description | Difficulty |
|---|---|---|
| two_sum | Find two numbers that add up to a target using a hashmap | Easy |
| add_two_numbers | Add two numbers represented as linked lists in reverse order | Medium |
| longest_substring | Longest substring without repeating characters | Medium |
Interactive PyQt6 application for visualizing algorithms step-by-step.
cd python/leetcode && python launch_learning_labs.pyThis is my "I'm bored" repository. When I find an interesting coding problem or exercise, I like to:
- Solve the core problem
- Add detailed comments and educational versions
- Build visual tools to understand the algorithm
- Over-engineer it for fun
Each project has its own README with documentation, usage instructions, and explanations.