Skip to content

Michela999/Python-Projects

Repository files navigation

 # Python-Projects

To-Do List App (Python)

Description:

This project is a simple to-do list application built using Python. The goal of this project was to practice my Python skills, work on organizing code into functions, and get hands-on experience with basic data structures, file handling, and application flow control.

What I Learned:

  • Python Fundamentals: Enhanced my understanding of Python syntax, control flow (loops, conditionals), data structures (lists, dictionaries), and file handling (reading/writing data).
  • Data Structures & Algorithms:
    • Lists: Used Python lists to store tasks dynamically. Implemented basic operations like adding, removing, and displaying tasks.
    • Dictionaries: Applied dictionaries to manage task attributes (e.g., task name, completion status, etc.), enabling efficient access and modification.
    • Sorting Algorithms: Incorporated basic sorting techniques (using sort() and sorted()) to display tasks in priority order.
    • Search Algorithms: Implemented a simple search functionality to find tasks based on keywords.
    • Time Complexity Awareness: While building the project, I kept in mind the time complexity of common operations like searching (O(n)) and sorting (O(n log n)) for future scalability.
  • File Handling: Gained hands-on experience working with file input/output to persist to-do items even after the program terminates. Managed reading from and writing to text files:
    • Stored tasks as a list of dictionaries in a file, using Python’s json module to serialize and deserialize data.
  • Software Development Practices:
    • Organized my code into smaller, manageable functions to improve readability and maintainability.
    • Followed the DRY (Don’t Repeat Yourself) principle to avoid redundant code by creating reusable helper functions (e.g., for adding, removing, and viewing tasks).
    • Used simple error handling (try-except blocks) to manage common input/output errors like invalid file paths or user input errors.
    • Ensured the program remained modular, allowing easy updates in the future (e.g., AI integration or web interface).
  • Version Control: Became proficient in Git and GitHub for version control. Learned to handle commits, branches, merges, and resolving conflicts.
  • Problem Solving: Applied problem-solving techniques to implement features like task filtering, sorting, and categorization. Focused on breaking down larger tasks into smaller, more manageable sub-tasks.
  • Testing & Debugging: Used Python's built-in debugging tools (like print statements and simple tests) to troubleshoot issues and ensure the correctness of the application.
  • User Interface Design (Future Consideration): Though the application is terminal-based, I have planned for future versions that may involve a user interface:
    • Potential web interface with Flask or Django.
    • User authentication and data persistence with databases.
    • Integration of AI-based features for task prioritization and reminders.

Technologies Used:

  • Python: Core programming language for building the app.
  • Git: Used for version control and tracking changes.
  • GitHub: Hosted the repository to showcase my work.
  • JSON: Used to serialize task data and save it to a file for persistence.

Future Enhancements:

  • AI Integration: Plan to integrate an AI component that will analyze user behavior and predict the priority of tasks. It could suggest tasks based on urgency or provide reminders based on user activity.
  • Machine Learning: Explore machine learning algorithms that can suggest tasks or reminders based on user patterns (e.g., which tasks they tend to do at certain times of day).
  • Web Interface: Add a simple web interface using Flask or Django, allowing users to interact with the to-do list from a browser.
  • Task Scheduling: Implement a scheduling feature that will allow tasks to be marked with due dates and times. It could send notifications to remind users of pending tasks.

Relevance to My Career:

This project is part of my journey to become an AI Engineer. The technical skills I’ve learned, such as working with Python, data structures, version control, and algorithms, are foundational for more complex AI-based applications I aim to build. For example, in AI-driven task management systems, I might use Natural Language Processing (NLP) for voice-based task input or build personalized task suggestions with machine learning.

Through this project, I’ve strengthened my problem-solving abilities and deepened my understanding of key programming concepts. These skills are critical for my future career in AI and software engineering.

About

My Python learning projects

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published