Skip to content
This repository was archived by the owner on Dec 6, 2023. It is now read-only.
/ letshwit Public archive

A homework scheduler based on evolutionary genetics.

Notifications You must be signed in to change notification settings

lemoment/letshwit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Let's HW It

One of the most challenging tasks about college is scheduling. Between classes, extra-curriculars, sleep, and time with friends, figuring out how and when you need to complete your assignments becomes an enourmous task. To help mitigate some of that stress, we designed and implemented an intelligent homework scheduling application. Accepting students' weekly schedules and a list of their assignments, Let's HW It makes use of a homebrew genetic algorithm to find and suggest an agenda that works for a user.

If you want to read more about the design process and implementation details, feel free to skim through (or read) our more comprehensive report here.

Features / Design Principles

  • Robust to a wide variety of schedules and inputs
  • Simple to understand and use
    • Data is imported via CSV
  • Modular to allow seamless integration into existing applications via a stable API
  • Nice to look at in a terminal
  • Tunable to fit individual needs
    • Runtime parameters (like time intervals, fitness weights, and mutation probabilities) can be tweaked

Installation

Prerequisite

By design, Let's HW It is cross-platform and environment independent. There are only two prerequisites before you can get it up and running on your local machine:

  • Python 3.8+
  • Poetry (or a compatible Python environment manager)

Downloading and Running

Once you've installed the prerequisites, simply clone this repository, install the dependencies, and run the program. You can do all of that via:

  $ git clone https://github.com/lemoment/letshwit.git
  $ cd letshwit/src
  $ poetry install
  $ poetry run python cli.py

Tweaking

You can adjust the schedule and assignment inputs by adjusting the CSVs in the data directory. In the future, inputting your own data will be as simple as syncing with Google Calendar or Outlook Calendar.

If you're finding that your proposed solutions could be better, feel free to tweak the algorithmic paramters in src/tunables.py. Make sure you know what you're doing though! Changing things like TOURAMENT_SIZE can have unintended (and often negative) consequences.

License

This work is licensed under the Creative Commons Attribution-NonCommercial 4.0 International License by Elias Gabriel and Dieter Brehm. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.

About

A homework scheduler based on evolutionary genetics.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published