Lately I’ve been working on a few projects that will ease up all the housekeeping work that I need to do as a teacher. Things like checking the attendance of students and checking the works of students.
When I started working as a teacher, I used a spreadsheet to monitor attendance. There’s a column for the name of the student and a column for meeting days. That’s about 36 columns for the laboratory, where I meet them 2 times per week. And then 18 columns for the lecture, where I meet them once per week. What I do is to put an A in the cell where the student and the day intersects if the student is absent. And when a student accumulates 2 of those A’s in the laboratory, then they’re ripe for dropping. And for the lecture, they only need one. When I say drop, it means dropping the class card of the student to the Student Affairs Office. I won’t dive in too much with the details but this process is implemented so the students wouldn’t want to be absent too often. Because its really a pain to claim class cards.
Going back to my old process in monitoring attendance, here’s what the spreadsheet that I used for monitoring looks like:
Well, guess what. This quickly turned into a headache. Because there’s no way to monitor which students are currently dropped, which one’s are ripe for dropping and which one’s has already returned their class cards to me.
As a programmer, I always want to make my work easy. Make the computer do most of the work as much as possible. So I decided to work on this project which I now call as Absentist. It’s an attendance monitoring app which is custom built for my current needs. The way it works is simple. First, the teacher creates a class and adds the students. This part asks for the details such as the name of the class, some additional details that the teacher wants to enter, the number of absences needed before dropping the class card, the meeting days, then the start time and end time for each meeting day. Since the school already has a system for accessing class details. All I needed to do was to export it to a spreadsheet and then copy-paste it to a textarea. Then in the back-end, I simply parsed the pasted data so I can extract the ID Number, First Name, Last Name, Middle Initial and the gender of the student.
Once a class has been created, it is listed in the classes page. This page has the links for updating a class, viewing students that are ripe for dropping and students that are already dropped.
Here’s what the interface for dropping looks like:
From here, the teacher can do two things: first is to mark the class card as dropped. This should be done once all the class cards has been dropped. Currently there’s no button for dropping everything with a single click but this would do for now. There should only be a few clicks needed. Next is the absences link, this shows all the days that the student was absent.
Next is the page for viewing class card that has already been dropped. From here, the teacher can click on the claim button to mark that the student has returned their class card. When this button is clicked, the absences counter for that student goes back to 0.
But how is the attendance actually updated you ask? It is through the attendance page. This uses the days and time that has been entered on the class settings. When the attendance page is accessed in a time between the start time and end time that was entered and the day matches. Then it will automatically show a list of students in the class. From there, the teacher can call on the students one by one. If a student is absent but is not excused then the absent button beside that student is clicked. If excused then the excused button is clicked. The only difference between the 2 is that excused absences aren’t counted as an actual absence. Its just there for the sake of recording.
Once the roll call is done, the teacher can then filter the list to only show the students who are absent or excused. This is useful for verifying if all the students in the list are really absent or excused. If not then the absent or excused button is clicked again to remove the student from the list. Once that’s done, the update attendance button is clicked to commit the changes to the database. This increments the absences counter for the student if they are absent. Or marks the student to be dropped if the absences counter becomes equal to that of what was added to the class settings.
Future plans for this project includes the following:
- Adding students one at a time. This would be useful for when a student comes in late or for instances where there’s no available spreadsheet export for student data.
- Different start and end times for each meeting day.
- User Documentation
That’s it! If you want to use this project or contribute to it, you can download it on Github.