We started out the studio by fooling around with Python, the language we would be using to code, and learning about probability. Once we had a feeling for Python, we broke off into groups and started brainstorming what we wanted to make for a project.
I paired up with Alexandra and Zach, and we decided we wanted to make something to help organize student’s study time. We wanted to make something that would help with having a bunch of tests in a week, and the eventual stress of finals, by giving you a study plan for the week.
We first went about this by coming up with a plan on how to program the Smart Chart. We didn’t want to jump right into programming it, because that would just get way too crazy without knowing exactly what mathematical outcomes we were looking for. For example, we first had to figure out how the Smart Chart would calculate how much study time was needed per subject.
It is a little difficult to explain in writing how we planned for it to work, but I’ll give it a shot. You input how long you have to study in total, the day of the test, and your current grade in that class. Then the Smart Chart creates a number we call priority level. Each day is assigned a number. The numbers descend as they get farther away from the present day. The priority level is a number made by taking your current grade in the class, and subtracting it from 100, then adding the number of the day that the test is on. For each test, the priority number is calculated, keeping in mind that as the test approaches, the priority number increases.
Next we take all the tests with their priority numbers, and prioritize them based on their priority number. Ironic. Once we have the priority number of each test, we then can compare them and find the percentage of time you should be studying on that subject. The percentage is different for each day. For instance, if something has a high priority number, you will to spend 70% of your study time on that subject, and only 30% on the rest of the subjects.
Once we had a plan for how all the math would work, we started writing the code to create our project. Writing the code was very frustrating. We had several iterations of the code. Some of them worked, a lot of them didn’t. To make a study schedule for one day was fairly simple, it just took a lot of time. It started to get really tricky when we had to make a schedule for the entire week.
To make a schedule for the entire week, we had to program the Smart Chart to think for seven days. Because the priority levels change for every test per day, we had to program the Smart Chart to think of every day as if it was today, how poetic. It was very tedious to get the Smart Chart to think ahead. That was one of our biggest struggles. We probably went through five iterations of code until we programmed it right.
Once we had the math and code right, we were left with numbers. We then had to think about how we wanted to visualize the data. We did this by getting code for graphs from Matplotlib, which is a website that has open source code for graphs. Once we got the code, we fiddled with it so that the graphs would work for our data.
We first made a pie graph. The pie graph was a simple experiment to get to know the Matplotlib code. We made the pie graph so that it would display one day’s worth of information.
We knew we didn’t ultimately want the Smart Chart to be a pie graph, so we looked for another way to display the information. We then found a bar graph on Matplotlib, that looked promising. The graph we found was good, but didn’t do exactly what we wanted it to, so we had to fiddle with the code to make it right for our purposes.
In the code, we added a fixed height to the bars in the graph, so that it looks less like a graph and more like a schedule. We also made it so that the graph can take the numbers straight from the Smart Chart’s calculations, turn the number into a percentage, and graph it. The original graph was a fixed graph, so you couldn’t change the information with out reprogramming it. Now the graph is based on how long you need to study, and the user can easily change the values based on there study time, without having to reprogram it.
Once we had the graph, we had to combine it with our other program that does all the math. This was tricky. Both of the programs worked great alone, but we ran into problems when we tried to combine them. It was simple things like sorting out different variable names. It became very tedious work.
Once we did this, we still had a little more time left, so we thought, “Hmm what can we do to make this even more awesome?” We decided we should add an email function. Now when you create a Smart Chart for the week, our program will email you the chart so you can access it from anywhere.
Ironically, I have no use for the Smart Chart seeing as I don’t have exams at this stage of my education.