I heard about the Trie data structure because of this project. I was trying to figure out how we would do reactive suggestions, and the Trie solved the issue perfectly. From this assignment, I learned how to write a generic Trie data structure. I spend a lot of time on it and I got good practice with recursive function calls and tree traversal. This was the most complicated tree-like structure I have made to date. I also learned how to work with the NCURSES terminal-GUI library, which is surprisingly easy to use. I also learned how important encapsulation is in a fairly large and/or complicated project. There were may working and moving parts to this program, so keeping everything contained in classes for Posts or Users or Tries was very useful and educational.
I had several valuable contributions to this project. I worked mainly on the Trie, User, and Post classes, and I spend most of the time for this project working on and perfecting those classes. I wrote many test cases for both to ensure that they all work in a variety of cases. Closer to the end of the project, I began assisting with the GUI class, as it turned out to be much longer and more complex than any of us expected. I helped to integrate the user, trie, and map with the strings obtained through the GUI input fields. I also made sure that we always wrote "good" code.
What is the safest way to store user passwords? We have considered giving users passwords, however we figured out that we did not know how to safely store them inside the program or to a file. I know for sure that you need to safe the final input string as a hashed string, however I have read that that is not even safe because there is only a single hash function, it can easily be cracked. What is the safest way to store a password both inside the program, and how to safely write it to a file so that no one can simply edit the file to change the hashed password to to get the hash from the file and crack it?
We may have chewed off more than we should have, but I think we pulled everything off successfully. There may be some very minor bugs, however we wrote expected usage in the README.md so that anyone should know how to use the program through the GUI.