Filosedu: How Does Filosedu Free Tutoring Center Work? How to Open a New One?


Filosedu is a software system built with the mission to improve K-12 education in Indonesia. Our long-term goal is to bring access to high-quality K-12 education into rural areas. The situation in Indonesian rural areas is disheartening. The lack of infrastructure and career-opportunity there makes it really hard to attract qualified K-12 educators to come and stay. As a shorter-term goal, we want to open up as many free K-12 tutoring centers as possible, targeted to help underprivileged-students. Our first blog post describes our goals and journey in a more detailed way: .

This post serves for two purposes. Firstly, if someone — maybe you? ☺ — is interested to open up a new free tutoring-center using Filosedu system, this post should guide them to understand our system. Secondly, I have been a freelancer for quite some time in order to bootstrap this project. Now that I am finally ready to go back for a full-time job, I’m writing this post to also be my software-engineering portfolio. And it is the reason why you’ll see a lot of “Engineering Notes” while reading this. If you’re not a software engineer, they might not be very relevant, so feel free to skip them.

How Does Filosedu Tutoring Center Work?

In a typical Filosedu Tutoring Center, there are several aspects to be prepared:
1. Teachers.
2. Students. Our system should allow for up to 1:12 teacher-to-students ratio. So if there are 3 teachers available, there can be up to 36 students.
3. Linux-based server to host the education materials.
4. Tablets/smartphones used by students for learning.
5. Tablets/smartphones/laptops used by teacher for easier access to student analytics/data.
6. Wireless router to connect the server and the gadgets.

In a Filos tutoring center, students study through watching lecture videos on their gadgets. After that, they do practice exercises related to the lecture they watched. The exercises can be done using pencil-and-paper, but the answers will have to be submitted back via their phones/tablets. On submission, the computer grades the answers and immediately returns the graded results. While the students are learning, the teachers can assist anytime to help out with their difficulties. For example, if a student doesn’t understand a lecture video, the teacher can elaborate or explain it in different ways. The teachers are also there to encourage and motivate the students. This can be done in any way the teachers see fit, such as giving games to play, giving physical activities to do, or even asking students to watch short fun movies. The idea is to let computers do the repetitious tasks so that the teachers can focus more on giving their students personalized attention.

In addition to helping students who explicitly ask for help, the teacher can also access to their students analytics data through their smartphones/tablets. Through this data, the teachers could get better ideas about their students learning progress. For example, they can see which topic a student is currently learning, how many practice exercises that student has done, and how is that student doing in terms of scores. The goal is to empower the teachers to better understand their students individually.

Once students finished with a learning session and leave the tutoring center, they can continue their study anywhere-anytime through Filosedu online access. For students who are especially concerning in terms of their competency, a tutoring center’s coordinator would work with their parents to encourage their kids to spend extra hours studying at home. In order to have students to be successful, we believe that their parents need to be closely involved and be supportive.

Application Detail — Overview

Filos web application consists of learning platform and content management system (CMS). Learning platform is the interface that students used to study. If you are familiar with such as , , or , Filosedu is similar to them. The CMS, on the other hand, is used internally for content-creating, administrative, and tutoring-support.

Technical Notes
Filosedu is a web-based application. The decision to go for web technology is due to several reasons:
1. Web application is much cheaper and faster to prototype than what a counterpart native application would. Since we are bootstrapped, self-funded, and had very limited resources, this path made much more sense to get started.
2. In our particular use cases, website is more convenient than app. Every week new students come to our tutoring center. With web application, they don’t have to download anything except web browser, making it easy for them to participate.
3. Website is supported pretty well even in older phones/tablets. On the other hand, properly supporting older devices with a native app is much more time-consuming and expensive. In our use cases, many of our target students — underprivileged kids — have older devices with very limited technical capabilities.

Application Detail — Learning Platform

This is portion of the web application that the students use for learning. On a tutoring center, we bring a laptop that acts as a data server that is accessed locally using WiFi. The reason we can’t rely only on Internet is because our students mostly have very limited Internet data-plan and watching videos would consume too much of them. In addition to that, Internet connectivity in Indonesia is still flaky and unreliable in a lot of areas. And since our long-term goal is to bring education to rural areas we just couldn’t rely on Indonesian Internet infrastructure just yet.

At the end of a tutoring session, the data on the local server (i.e. the laptop) is synced into the cloud server. This includes student learning progress and analytics data. Students can then continue their study anywhere else they have Internet. Furthermore, the analytics data are used to improve Filosedu curriculum, to better help our students, and also to create monthly progress reports for the students.

Student monthly report compiled from analytics data captured throughout learning.

Course Page

For now, we only have mathematics as the subject, but in the future we plan to have support for other subjects such as English and physics as well. For each subject, there are several components:

  1. Topic
    In the picture above, the topic is “Penjumlahan”, which is “Addition” in Indonesian. Topics are the first breakdown of a subject. A subject consists of multiple topics. In mathematics, for example, the topics would be “Addition”, “Multiplication”, “Subtraction”, etc. A topic is then broken down into numbers of subtopics. In our structure, we try to keep each topic to be of 5–12 subtopics.
  2. Review Exercise
    The blue Review button next to the topic title leads to topic exercise page when clicked. It is an exercise designed to test a student’s competency of a particular topic. If a student passes the exercise with good score within the allowed time limit, we assume the student is qualified to skip over a topic. For example, a 5th grader should’ve already mastered the topic of “Multiplication”, but to double check that he/she really did, we’ll have them to take the review test. If their score and time turned out to prove otherwise, we’ll have them to go through all of the subtopics in “Multiplication”. The reason we allow students to skip over topics is because having competent kids to repeat over topics they’ve already mastered can be boring and demotivating.
  3. Topic Badges
    These are the checkmark and time icons located next to the topic title. A student received a checkmark if they passed review exercise with score ≥ 80 and received a time badge only if they score 100 and the exercise is finished within the allotted amount of time. These badges are used a quantitative measure of students competency. They are used to help teachers to have easy access to understand their students.
  4. Subtopic
    Subtopics are what a topic breaks down into. A subtopic is composed of lecture video, written explanation, and exercises. We kept the video to be around 7–12 minutes because keeping it short makes it easier for students to digest. The exercise is directly derived from the lecture video in order to give students opportunity to practice what they have just learned.
  5. Sutbtopic Badges
    There are 3 different badges: video, star, and time. Video badge is received when a student finished watching a video lecture. Early on we didn’t have this badge, but later we learned that some students liked to skip over lecture video thinking they’ve already understood the material, but then struggled when it comes time to do the exercise. With the video badge, we can easily see if a student struggles because he/she hasn’t watch the lecture or because of any other reasons (i.e. the video doesn’t do a good enough job on explaining the material). A subtopic can have more than one exercise. Each exercise can have up to 4 star badges and 4 time badges. A star badge is received when a student finished an exercise with score ≥ 80, and time badge is received when they scored 100 and finished it within the allowed amount of time. We say that a student has mastered a subtopic if he/she has received 4 star and 4 time badges.

Subtopic Page

The blue “Latihan” button is “Exercise” in Indonesian. When clicked, it goes to the exercise page. The rest is pretty self-explanatory. The star and time badges are as described before. A star badge is received if score ≥ 80 and a time badge is received if score = 100 and time finish ≤ allotted amount of time.

Subtopic and Topic Review Exercise Page

Subtopic exercise and topic review exercise both share the same interface. The questions generated are randomized, which means different students should have different set of questions. The purpose is to prevent them from cheating. After a submission, the questions are re-generated with different random values, hence allowing the students to continue exercising until they feel good about it.

As the goal of an exercise, the students are asked to achieve 4 star badges and 4 time badges. A star badge is received when score ≥ 80, while time badge is given only when score = 100 and finish time ≤ goal time. The reason we have two similar measures is because we want to reward the students as they make progress, not only when the achieve the end result. Getting 4 star badges is the first easier milestone to achieve, while getting 4 time badges is a more challenging milestone to complete — the end goal.

One might ask, why do we need to measure the time? Isn’t getting good score good enough? Well, initially we thought so too. But after doing a pilot-testing we found out that students often used “wrong approach” to solve some exercises. For example, many early-grade kids tended to do finger-counting when solving addition problems. Finger-counting is fine in terms of getting correct answers, however it’s not the right way to do addition. The students are expected to memorize certain concepts in addition. For example, they have to know that 1 + 5 is 6 on top of their head without having to do finger-counting every single time. Time badge is a mechanism to ensure this.

Application Detail — Content Management System (CMS)

There are different sections of the CMS:

1. Course Management
This section is used to manage course-related information such as adding new topics and subtopics.

Interface to add/edit/delete topics and subtopics
Subtopic Editor

On Subtopic Editor page, content creator can upload a lecture video, add textual description (in HTML) and create computer-generated exercises by writing Javascript code.

Technical Notes
1. Lecture video is uploaded and stored both on the backend server and . On a local-server use case (i.e. tutoring center), the video are accessed through the backend server local filesystem with used as the caching layer. On the cloud server (i.e. Internet access), the videos are accessed through the CDN. I was pretty impressed when I first learned that a 2013 laptop with Ivybridge Intel Core i5 can serve up to 25 students watching videos just fine with NGINX as a cache!

2. The subtopic course description editor is a WYSIWYG HTML editor. We use a beautiful open-source project .

3. An exercise is defined by writing a Javascript code. Content creator needs to implement several functions:
-randomGeneratorFn() -> used to generate random set of questions
-isAnswerFn() -> used to check if a user answer is correct or not.
-printFn() -> used to create HTML presentation of the question. Math equation is supported through
-isEqualFn() -> used to ensure there’s no duplicated questions within a set of questions.

Moreover, there are also constant values to be set such as:
quantity -> how many questions should there be in this exercise?
idealTimePerQuestion -> how many seconds should it take to finish a question? This is used for the time-badge system
reviewQuantity -> how many of this kind of question should appear in topic exercise?

Whenever an exercise is requested, the code that content creator writes would be -ed by the NodeJS backend server. At the present stage, it is possible to write dangerous code that can stale the entire system (i.e. infinite loop). But since this is used only internally by us, I’m not really concerned about that case. Once needed, we can isolate the into a separate Linux process that can be killed if it takes too long to run. It would also be nice if the exercise generation process can be made more non-programmer friendly by using other programming language.

2. Account Managment
This section is used to manage student accounts such as add, edit, or delete accounts. This is especially important because early grade students easily forget their login information.

3. School Management
This section is used to add or remove information regarding a tutoring center. There’s no need to understand this in order to operate a tutoring center.

Technical Notes
At the moment, we are able to handle all the data on a single VPS. In the future though, when we have to do horizontal scaling, the easiest approach would be to shard based on tutoring centers. For example, data for tutoring centers 1–5 in server A, for centers 6–10 in server B, and so on. It would work out fine because there’s not much data-sharing between different tutoring centers, except for the student leaderboard.

4. Student Monitor
Used to view real-time student analytics data. This is specifically created to assist teachers in a tutoring center. Through this feature, the teachers can see their students individual progress. For example, they can figure out how many exercises each of them have completed, their scores, and their timeliness. We came up with this feature after seeing that there were students who seemed alright on the surface, but actually needed some help and/or attention.

Timeliness is measured by Time Finish / Ideal Time * 100%. So as long as it’s ≤ 100%, a student is doing fine. The Last 1-Hour Summary table averages all the exercise submissions from the last 1 hour.

Teacher should use Last 1-Hour Summary to quickly get a glimpse of their students situation. Here are several metrics to be aware of:
1. How many submissions have the students done? Make sure it’s not too low. Instead of studying, some students in the tutoring center sometimes do something else unrelated which can possibly distract the other students.
2. How is the average scores? Students who are doing fine should be getting close to 100, if not, the teacher should look into the the detail on the third table to figure out which subtopics the students are struggling with in particular, and then help accordingly.
3. How is the average timeliness? Ideally students should have it ≤ 100. The smaller it is, the better it is, but it’s fine as long as it’s ≤ 100. Otherwise, the approach to take should be the same as average scores: the teacher should look into the third table to figure out which particular subtopics the students are struggling with, and then help out accordingly.

5. Sync Management
This interface is used to synchronize a data from a local tutoring center server into the cloud, so that the students can continue studying studying at home without loosing any progress.

After a tutoring session is over, the tutoring center coordinator should access this interface and push the Sync button. It will add a new entry on the table with status Syncing. After sometime (can take up to 5–10 minutes, depending on how long ago was the last sync), the status will be updated to either Failed or Success. The table automatically reload once every 5 seconds, or if wanted, ‘Reload’ button can be pressed to reload immediately. A tutoring center should make sure the status updates to Success. If it turned to Failed try to do it one or two more times. If it still fails, notify Filosedu team for support.

Engineering Notes
Implementing synchronization mechanism was one of my most favorite aspect within this project. It reminded me a lot of distributed-system course I took back in college :)
Since a synchronization logic tightly depends on structure of the database, and that modifying a DB structure after an application is running could sometimes require a rewrite, I had to plan the database schema ahead of time, even before starting to prototype the application. I tried to come up with the simplest design I can. Here are some of key design:
1. Local Server -> Cloud Server synchronization is done through application-level logic (i.e. the CMS interface described above)
2. Cloud Server -> Local Server synchronization is done through database-level backup and restore mechanism executed through terminal commands. In particular, I use terminal application to create .sql backup of the database. I’d like to implement a more convenient application-level synchronization logic in the future, but for the current scale we’re in, dumping and restoring the whole database is fine.
3. Curriculum-related data is mutable only on the cloud server. Curriculum improvements/modifications for all the tutoring centers should be centralized in one place. Not only allowing different tutoring centers to have its own custom curriculum doesn’t make much sense in terms of operating procedure, it is also hard to implement — for example, if an exercise for subtopic “Single Digit Addition” is modified by multiple tutoring centers, which one should we choose when syncing? If a teacher of a tutoring center finds out problems in the curriculum that needs fixing, they should just tell Filosedu team to fix it for them. Once it’s fix on the cloud, the tutoring center should just sync to the latest cloud version to receive the fix.
4. Syncable data are append-only. To avoid having to resolve two modifications (i.e. think Git ), it is easier to design the portion of the database that needs syncing to be append-only.

If there’s interest, I plan to create a separate blog post to describe how the synchronization mechanism works in detail :)

The End

This is such a lengthy post. Thanks for taking some time to read. I hope this gives better understanding about how Filosedu platform can be used to create a free K-12 tutoring centers. We’re hoping there are more free K-12 tutoring centers in Indonesia, so that underprivileged kids can have a better future. And for that, we need your help!

Please feel free to contact us if you have any question, inquires, or interested to open a new tutoring center :)



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store