Skip to content

CS50P Final Project - An interactive flashcard application designed to enhance learning and memory retention.

Notifications You must be signed in to change notification settings

Riannus/CS50-Flashcards-v1.0

Repository files navigation

Flashcards

Video Demo: Watch Here

Overview

Flashcards is a Python-based application developed as the final project for CS50’s Introduction to Programming with Python. The app enables users to create, manage, and interact with flashcard decks, designed for learning and reviewing information effectively.

Features

  • Custom Decks: Create flashcard decks by defining terms and corresponding definitions.
  • Deck Browser: View, edit, or delete existing flashcard decks.
  • Game Mode: Play a "guessing game" with random flashcards from a selected deck. Players have 3 lives to correctly match all terms and definitions.
  • Study Mode: A relaxed mode where users can go through their flashcards without penalties. Cards can also be edited directly in this mode.
  • CSV-Based Storage: Flashcard decks are stored in easily accessible CSV files for management and sharing.
  • Default Deck: Includes a preloaded math deck for immediate gameplay.

Design Decisions

  • CSV for Data Storage: Chosen for its simplicity and ease of use, given the small scale of the project.
  • Command-Line Interface: A terminal-based menu system ensures a straightforward user experience without requiring additional dependencies for graphical interfaces.
  • Error Handling: User inputs are validated to ensure a smooth experience, including standardized inputs for terms and definitions to avoid case-sensitivity issues.

Future Features

Planned enhancements include:

  1. Database Integration: Replace CSV storage with a more robust database system.
  2. Graphical User Interface (GUI): Add a user-friendly graphical interface.
  3. Deck Enhancements:
    • Rename decks.
    • Mark decks as favorites.
    • Delete individual cards from decks.
  4. Game Mode Settings:
    • Match either terms or definitions.
    • Add a time limit for answers.
    • Enable or disable case-sensitivity.
  5. New Game Modes: Implement a memory game (e.g., matching pairs).

Project Structure

  • flashcards.py: Core application logic, including menu navigation, deck management, and gameplay.
  • README.md: Documentation for the project.
  • requirements.txt: List of dependencies (if any).
  • test_flashcards.py: Unit tests for key functionality.

How to Use

Installation

  1. Clone the repository to your local machine:
    git clone https://github.com/your-username/CS50-Flashcards-v1.0.git
    cd flashcards
  2. Install the required Python libraries:
    pip install -r requirements.txt
  3. Run the application using Python:
    python flashcards.py
    

Licensing

This project is open source and distributed under the MIT License. Feel free to use, modify, and distribute it as long as the original license is included.

About

CS50P Final Project - An interactive flashcard application designed to enhance learning and memory retention.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages