Monday, September 19, 2016

Starting a Database

The first step I saw fit to take for my project was making a database of topics and review videos for those topics. I started with one of the best homework review sites out there, so you are probably not surprised that I chose Khan Academy.

There is a big gap between the content on Khan Academy and a JavaScript program inside a Chrome extension, so I need to bridge that gap with a database that a JavaScript program can easily parse, AKA read and extract usable data from.

Luckily Khan Academy already has an organized database on their website (khanacademy.org/library), depicted below. Each subject brings you to a page with different topics, and within those topics are subtopics, and then finally are individual videos.

The next step is to create a list of every video in the Khan Academy library, organized into topics. Easy! Just start with individually copying the link to each of the 4,293 math videos...

Just kidding! That would be tedious beyond imagination. Instead I wrote a computer program to put all of the information into a file. I had many different options to choose for accomplishing this, but I decided to use the programming language I am most familiar with, Java (not the same as JavaScript), with a Java editor called Eclipse. Now skip this next sentence if you don't want to get any more technical: I used the Apache HTTP Client to connect to the webpages in the Khan Academy library, along with an HTML parser to extract the data from the website, such as the URL to a video or the title of a topic.

That process takes a while, simply because the program has to connect to the webpage for all 384 topics in the Khan Academy library, not to mention I have to figure out how to solve all the problems with the program before it works correctly (nothing ever goes right the first time with a computer program).

The end result is four XML files, one for each major subject on Khan Academy (math, science, humanities, and economics). XML is just a fancy, but also universally acknowledged data format that can be easily read in most programming languages. Here's what that looks like:
(this is a tiny fraction of the math topics XML file)

One unfortunate factor in the way I chose to work on this part of the project is the fact that the KhanAcademy website is constantly changing. I made this list initially a few months ago, but recently, Khan Academy added more content. That should have been easy to add, but they also changed the naming scheme of the HTML elements that define the topics and their respective URLs. Long story short: I had to rewrite half of the program. It would be crazy to think that won't happen again in the near future, but there's nothing I can do about that. However, there are many different directions this project can take me in, and this is only one small part of it.

Sunday, September 11, 2016

What is "Academist?"

A wise old man once said: “Do. Or do not. There is no try.” So if you completely forgot from today's math lecture how to find the derivative of 9001x², you should not try it without knowing what you are doing. You should find a way to learn out how to do it, or it is not worth doing it at all.

I am working on a project that will encourage students to review specific topics on their homework so that they always understand the topic that they are learning in class.

It is a fact that students often complete their homework without fully understanding what they are doing. They merely try, but that is not an option worth taking. This is very evident with math. Students turn their homework into guesswork and come to school the next day with a million questions for the teacher. But it does not have to be this way.

Of course, teachers are there to help, but that does not mean there isn’t value in teaching yourself. There are incredible resources on the internet that make topics more understandable, but students don’t take advantage of them nearly as much as they should. I am going to change that at my high school, Sage Creek, and potentially at other schools as well.

I am going to do it with a single piece of software, which I am calling "Academist." It has one primary function, which is to provide you with links to internet resources to help you with your homework.

It will automatically tailor to your needs by using keywords that appear in your School Loop page, such as “derivatives,” and search for learning tools that explain that topic. For example, Khan Academy.

There are also some great YouTube channels for reviewing class topics, such as Bozeman Science, which has an abundance of videos explaining, chemistry, physics, and biology topics.

I am planning to focus on videos for learning resources, because I believe they are the easiest way to learn and understand a topic, since they combine both audio and visual learning. I will still want to get feedback from students about what kinds of resources they like to use.

The hope is that by providing these resources in an automated way, students will be more likely to access them if they don’t understand their homework.

The software will be a Google Chrome extension, which will allow it to automatically alter what you see on your School Loop page when you visit it on your computer. This has many advantages over a standalone application. Students don’t have to change how they access School Loop, and I don’t have to reinvent the wheel by creating a brand new user interface for a service that already has a relatively good one. This will allow me to focus on the more important, yet hidden aspects of the project, which include developing efficient search algorithms to find relevant online learning resources based on the words that appear in School Loop.

I see this app working mainly with math and science, because the their curriculums are relatively formulaic. But history also has potential, since students may want to review certain chapters without just reading through them twice in the textbook.

Of course, no software is complete without a logo. This is currently what I am using, simply a combination of a couple clip art images:

The reason I have decided to take on this project is because I have a lot of experience with developing software, and this would be a chance for me to develop software that is truly useful and will have an impact on my peers.

So far, I have done a fairly limited amount in developing Academist. What I have done is created a formatted list of every topic in Khan Academy that can be easily used by a computer program. I've also begun programming the Chrome extension to add a button under every assignment in School Loop.

I have mentor, Robert Nance, a software engineer at Qualcomm, who will be giving me advice as I develop this project. He teaches me in computer programming every week and has helped me a lot in my programming projects in the past.

The biggest obstacle for Academist is the potential for keywords in School Loop to be few and far between. For example, a test on derivatives may be titled by a teacher simply “Chapter 1 test” in School Loop, and homework assignments are often posted in the form of textbook page numbers. However I can use page numbers and chapter numbers to my advantage.

For all the textbooks at Sage Creek, I can convert the table of contents into a readable format for Academist, and Academist can then match a page number with a topic using the table of contents, and finally look for that topic in online learning resources. I have made some progress in making this happen by taking pictures of the table of contents of nearly all the math, science, and history textbooks at Sage Creek. I will convert the table of contents into a readable format for Academist using a combination of OCR and tedious spreadsheet writing.

Because of its useful tools, I believe Academist has the potential to be very integrated in the academic lives Sage Creek students, and the hope is that it will increase the degree to which students self-teach to review tough topics. In any case it will greatly increase the efficiency by which students can get homework help.
Below is a video about Academist that I used as a visual aid when I pitched it last June at my Sage Creek. The video lacks the verbal presentation that I delivered during the pitch, but it may add some depth to this blog post, as it has some visuals of what the Academist will actually look like.