When I started college, one of the first things I noticed was the weight of each assignment in the classroom. Not having homework was great, but it also took away some “padding” from my final grade– in college, if I messed up one assignment, it would often be enough to drop my grade to a “B” (though I still would not ever go back to the days of highschool if given a chance). Last year, I decided to code a sloppy C# program to answer my biggest question as a student. What is the lowest grade I need to make to keep my target grade?
The problem with this question of course is that there are multiple factors in deciding one’s final average. It is pretty easy to calculate what one needs on their final exam to pull a certain grade. As a researcher, I wanted all the data though. I wanted to know the lowest grade I can make on each future assignment to maintain my grade. If I happen to score higher than this minimum… Great! The subsequent minima for the rest of the assignments would decrease to compensate. If I happen to score so low that it is impossible for me to attain my target score? Fine… At least I would know and not have any unrealistic hopes about my performance.
Time and time again my computer science knowledge from high school helps me out. While I completely disregard good programming practice for my personal programs, I was still able to code up a functional (albeit messy) C# program to do just what I was looking for. The program was made in Linux so it was able to utilize the pretty gnome-shell colors in the console window and was also able to keep track of my GPA (which in actuality was mostly hardcoded in). While it did the job, I began to get annoyed at having to pull out my laptop whenever I got a graded assignment back. Recalling that Android apps were coded in Java, I decided to try my hand at making an app of my own and for anyone else who might find it useful as well.
I started out by sketching how I would want the interface to look. At this point, I had no idea what an activity was and did not even have any sort of menu in mind. As I stumbled through the Android-specific java code, I eventually came up with a rough “mock-up” app that I was somewhat happy with. Because a lot of it was trial and error, the code at this point was an absolute mess– methods were rigged together, data was being passed in a sloppy manner, etc. Since I had a better idea about what to anticipate and how to go about coding the app, I started fresh and applied what I learned the first time around.
On starting the new iteration of the app, the first order of business for me was to decide on a name. While I could have been much, much more creative, I finally decided on Grade Possibilities for two main reasons. One, the name gave an idea about what the app would do, which would be useful when someone is searching for this type of app. Two, the name carried out this purpose without sounding too boring or generic like “Grade Calculator.” I admit that I wanted to name it something fancier like “Schoolwork Extrapolator” or something similarly verbose, but honestly… who would search for such terms on the market page?
Having decided the name, I began coding the app and was able to expand my horizons this time around to learn even more about the Android interface methods. Even this time around, there was quite a bit of trial and error because I wanted to try and make something somewhat presentable even though this was my first ever app to be published. While I always enjoyed coding the app, I would say that it was at this point that the project became “fun.” While progressing on the structure of the program, I decided I needed graphics for the user interface. I could have thrown together something from Google Images, but I really wanted to avoid any sort of infringement so I opted to have my own graphics created. I enlisted the help of my friend Balance to create my images since I recalled that he was studying to become a graphic designer. Once this “group work” aspect of the project formed, I began to enjoy the back and forth that comprised of him making something, me pointing out something, and him fixing something (or of course, the other way around for code-related problems).
While many of the images were straightforward to design, the application icon was of course something that required thought. Knowing that most “school-related” apps would have an A+ or an apple on their icon, I simply opted for a D+ on my icon. While strange, I figured some people would appreciate the slight humor and/or be consoled that their grade is (hopefully) not as bad as the icon! The original icon called for many more papers strewn around the notebook to emphasize asymmetry, but the size restrictions on the Android platform made it look bad when smaller. The next icon we tried had a bunch of scribbles and classroom doodles on the notebook (including one of GM Chii punching some numbers out of a math problem) but once again the resized icon made the icon look too busy. We finally went with a simple notebook sporting the D+ and, if one were to look really closely, red writing underneath saying “Failed! Not really!”
Once again, I was disappointed with simplification we had to go through to make the icon look presentable, but a higher resolution copy of the scrapped icon with the scribbling did make it into the final app as the splash screen.
Happy with the [somewhat] steady process on the graphics, I needed a few illustrations as well for the result screens. While I first approached an artist on deviantART, I thought she bailed on me after I told her what I needed! (Interestingly enough, a placeholder drawing from her can be seen in a screenshot of the Release Candidate 1 build!) A little annoyed, I found someone else willing to help me out and was delighted with how quickly she worked. The first artist eventually did get me my requested drawings however after the app was published, so as a result the second artist (Lil-Yy) ended up being the one who got published on the market. You snooze, you lose, I suppose! I might end up finding a use for these extra illustrations in the future however… Maybe for the next major version after I overhaul some aspects of the code?
I still remember that I published the app on April 27, right before a mock-interview in college that I was all suited up for. I really felt like some business person publishing it then running off, but hey I had a nice story for my interview! I had also set up a Facebook page a few weeks ago to somewhat track the process of creating the app.
I was hoping to spread the word, but things also change so quickly on Facebook that the word sometimes gets buried under tons of miscellaneous news. The app was mentioned on a post on Reddit however and that brought in a lot of traffic. Not even a week later, the app had 100+ active installs, meaning that somewhere in the world, there were 100+ people with the app installed on their phones. I was pretty impressed!
Now that the installs have kind of tapered off to 1-2 a day, I will be patching the app to fix many of the annoyances that I did not realize would emerge in practice. We were actually lucky to catch a gigantic bug that resulted in a crash when changing orientation on certain phones right before publishing! But hey, these things are minor and I am happy to fix them… I expected some stuff to pop up after all. In fact, I am even a little surprised that out of all the installs so far, there has been only one crash (which gets reported to me automatically)… and I am pretty sure the user did something crazy like yanking out the SD card while saving or something. The entire process has been fun though, and it is projects like these that encourage me to keep on creating.
Thank you to everyone who contributed, supported, and gave their input regarding Grade Possibilities. Please support us either by visiting our Facebook page or by giving our app a try… It’s been fun!