Having all served as tutors, teaching assistants, and supplemental instructors, we are all too familiar with the difficulty of finding instructive, beneficial resources for students. There are, of course, websites that give access to free resources, but the quality, quantity, and diversity of material is sometimes questionable. Creating one's own resources, while possible, is extremely time consuming and nearly impossible on a consistent basis. With this in mind, we wanted to create a place where instructors--teachers, tutors, assistants, etc.--can connect and share resources that they have created.
What it does
Our project is a prototype for a service that acts as an economy for teacher resources, namely worksheets. Users can browse and rate the worksheets that other users have created, or they can create their own. To add an aspect of gamification to our project, users are rewarded tokens every time they create a new sheet and for every positive rating of one of their sheets! These tokens, in turn, permit a user to 'buy,' or download, worksheets (this feature is not implemented in the demo).
Our GUI permits new user sign up and current user sign in. Once logged in, users can browse the sheets of all other users in the data base and rate the sheets. The rating they give to a sheet is added to that sheet's total, which is stored in a file.
How we built it
We built our entire project in Python, coordinating code over a Github repository. Crucial to our project is, of course, the backend code. This is the code that manages the filesystem of our project, saving user and sheet information to text files so that it is saved across logins. Using Python's Tkinter module, we created the front end GUI of our project. By importing the backend code, back.py, we called upon this logic when users create buttons. For example, when a current user attempts to sign in, the "Submit" button calls upon the checkPassword() function of the backend code to make sure the user's password is correct. We employ this same model of calling backend filesystem-managing code when a button is clicked to develop most of the functionality of the project.
In order to create a mock environment of instructors and resources, we a) used Python's bs4 module to scrape a well known worksheets website called Kuta software for Calculus worksheets and b) created a small script in which we called upon our createUser() function to generate users from random choices of sets of names, passwords, and other account attributes. We then randomly assign each sheet to a user to display what the backend file system of our application looks like: in a "users" directory is a subdirectory for each user, where there is a text file for each sheet. The websites that we scraped pre-populate the GUI with hundreds of websites.
Challenges we ran into
Communication and code alignment difficulties, centralized idea for the project given our virtual state, giving ourselves enough time to work on the project, not being able to implement any networking capabilities despite it being a network-driven app.
Accomplishments that we're proud of
File and rating system, sheet displays, uploading sheet system, GUI.
What we learned
Entirely virtual collaboration is difficult! 48-hours is a lot of time to put into a project and I think that next time our team will use the time allotted more efficiently.
What's next for Sheet Share
Networking capabilities! Right now we just have a local framework built with different users on the same computer being able to log in and upload sheets and view other sheets from the same users on the computer. In the future, we'd like to set up a server so that different people on different computers can access our app over the internet and upload their sheets that way.
Also, our token/gamification is not fully built out yet. We plan on forcing users to have tokens in order to download or access other sheets. Right now, anyone can access any sheet regardless of tokens, which you gain by uploading sheets of your own