Giter Site home page Giter Site logo

nusynth / glidecli Goto Github PK

View Code? Open in Web Editor NEW
4.0 2.0 0.0 17.88 MB

Glide implements calculations from scientific research on the forgetting curve, to present study material at the right time.

License: GNU General Public License v3.0

C# 100.00%
forgetting-curve forgettingcurve learning study memory dotnet-core dotnetcore dotnet-cli mono

glidecli's Introduction

Update Dec 27th 2022: Users can now make a weekly schedule of days off from studying, and the program should still accurately predict the completion date. (The predicted date of completion is dependent on the average difficulty for each topic completed, so the predicted completion date does change a little as the user works through the topics.)

About

Glide allows people who use it to study more efficiently, and learn at a very fast rate.

GlideCLI now does these things:

  • display number of topics left
  • allows user to switch topics
  • exit from menu
  • Change number of total questions on first study of a topic
  • Predicts the date a course will be completed by.
  • Allows the user to make a weekly study schedule.
  • Now allows user to change the current date back to the previous, in case the study session starts after midnight. I also use this for debugging.

GlideCLI is a command line interface application: (You might need to modify the size of your command line window to see everything in the Study HUD, until the graphical user-interface version is ready.)

Screenshots

Main Menu In Use

The Study HUD In Use

New Date changing feature In Use

To Install:

GlideCLI MIGHT run on MacOS now. It WILL now run on Windows, Linux, and Docker: (I don't have a mac, but if someone with a mac wants to try it, please tell me if it works. I am only guessing that macOS uses a Unix directory structure.)

Making a course for GlideCLI:

Making a course for GlideCLI is tedious. The two programs that are going to replace GlideCLI will be far easier to add a course in. Although the user interface looks different, since it displays a lot more information now, the instructions for adding a course are the same as before this update. The instructions are in this manual I made, which I will update at a later time to be more like a regular manual.

Here is the link: https://github.com/Dartomic/GlideCLI/blob/master/Docs/Manual.pdf

Difference between this software, and the research

The research currently used by most scientists for the calculation of difficulty, which is used to calculate the interval length between study sessions, it is also used in the calculation of engram stability, and it is also used in the calculation of the forgetting curve, is inaccurate. The research I am referring to, for this currently accepted calculation of difficulty can be found here: https://github.com/Dartomic/GlideCLI/blob/master/Docs/easinessFactor.pdf

I explain how the currently accepted calculation is innaccurate in the document: https://github.com/Dartomic/GlideCLI/blob/master/Docs/Differences.md

If you look at the pdf file that I linked in the about section (https://github.com/Dartomic/GlideCLI/blob/master/Docs/Manual.pdf), I go into detail to explain how the calculation of difficulty is performed in this software.

Since I realized that I am not using anyone elses research for the calculation of difficulty, and since the researchers gave a name to their calculation of difficulty in the journal article I linked to (which I mentioned is not accurate, and is therefore not used in my program), then maybe I should name the calculation of difficulty in GlideCLI. It does not exactly feel right to do this, because I am just using the Slope-Intercept formula. But I decided to give it a name anyway, to distinguish this way of calculating difficulty from the way that it is calculated by the researchers. I'm naming it "Spacing Multiplyer".

The name Spacing Multiplier is not mentioned in the source code yet, because after I have been using it for three years, I just realized that I should name it. I'll edit the name in the source code to reflet this in the next update I give to the program, with a couple of additional features for enhancing the completion date prediction algorithm.

The Forgetting Curve

GlideCLI does calculate the forgetting curve, and uses the formula from this research:

https://github.com/Dartomic/GlideCLI/blob/master/Docs/5535.pdf

Other than calculating the forgetting curve, and storing the result in a file, this calculation, and the result that it produces, is not actually used for anything yet.

glidecli's People

Contributors

nusynth avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

glidecli's Issues

Update questions is broke

I need to fix the updating functionality for the number of questions/problems of a topic section.

Time log

Log the start and end times for each new topic, and each third repetition on a topic. This may later be used for even more accurate date prediction, in case a person needs to change the amount of hours he or she can dedicate to studying each week.

Scheduling Profile

Allow user to set up an scheduling profile.

Allows users to select:

  1. Holidays that they will not study on.
  2. Common vacation breaks that they will not study on (like Christmas vacation, spring break, etc.)
  3. Custom annual vacations (like a yearly family vacation)

Allows users to cancel planned time off from study, or schedule unplanned off time from study.

Allows users to select days of the week that study will not occur, and will apply for every week (like weekends off, for example).

Allows users to change which days of the week they will not have available to study. This feature will greatly alter the projected study completion date for every topic.

Days off

Give the user option to let the program know how many days off per week study sessions are not going to be performed. Also allow the user to schedule which days of the week these days off will occur, if the user knows which days each week these are going to be.

repetition compensator

If retreival decays to 50% due to missing repetitions:

This algorithm is just the basic idea. It can be condensed a little to save computation time, if the simulation portion is performed 1 time, instead of 2. But the explanaition of the algorithm is more to clarify the idea of what needs to be done, and can still be used according to the algorithm written below.

Once the repetition is finally completed by the user:

  1. Simulate the study from the date it has as first being studied, up to the current date of finally completing the late topic.
  2. Count the number of repetitions that were simulated.
  3. Subtract actual number of repetitions from the simulated cycle of study sessions.
  4. Subtract ONE from that result, store in variable: int repResult;

'5. IF (repResult > ZERO) {'
'6. START LINE 5 IF'
'7. int index = ZERO'
'8. List String [] dates; '
'9. date [index] = "imm/dd/yyyy OR dd/mm/yyyy"; // Initial start date, format depends on region of user.'
'10. string tempDate;'
'11. int repCount = ZERO;'

'12. WHILE (repCount < repResult) { '
'13. START LINE 12 WHILE'
'14. simulate one repetition from date[index];'
'15. store next calculated date into tempDate;'
'16. index = index + ONE;'
'17. date[index] = tempDate;'
'18. repCount = repCount + ONE;'
'19. } END LINE 12 WHILE'

'20. string tempDateTwo;'
'21. int dateCounts = ZERO'
'22. index = indexTwo = repCount = ZERO;'

'23. WHILE (repCount < (repResult - ONE)) {'
'24. START LINE 24 WHILE'
'25. tempDate = date[index];'
'26. index = index + ONE;'
'27. tempDateTwo = date[index];'
'28. dateCounts = dateCounts + (tempDateTwo - tempDateOne);'
'29. repCount = repCount + ONE;'
'30. } END LINE 24 WHILE'

'// date to string conversions left out of this example algorithm'
'31. string currentDate = "mm/dd/yyyy" OR "dd/mm/yyyy" // The current date in the correct regional format'
'32. dateTime newStartDate = currentDate - dateCounts;'
'33. string newStartString = newStartDate;'
'34. indexTwo = SizeOf(date) - ONE;'
'35. string nextDate = date[indexTwo];'

'36. START WRITE TO FILE '
'37. newStartString as the initial study date'
'38. nextDate as the date of the next repetition.'
'39. END WRITE TO FILE'

'40. } END LINE 5 IF'

'41. ELSE {'
'42. START LINE 42 ELSE'
'43. START WRITE TO FILE'
'44. Today's date as initial study date'
'45. Tomorrow as next study date'
'46. Study repetition = 1'
'47. END WRITE TO FILE'
'48. } END LINE 42 ELSE'

Cram study

Include an option that allows for cram study of the rest of the course for a week.

This would have to take into account the number of hours available to study each day, along with the days off per week, with a recommendation of no days off if this option is used.

It can only be made available if the program calculates that the rest of the course can be completed within this 7 days.

This feature would halt all reviews, except for second repetition reviews, until the 7 days are over. At that point, the option can become available again after the user catches up on all of the repetitions.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.