...

| Selecting Students - Users can dynamically select groups of students, by toggling the icon box on the far left for a particular student. Originally each box consisted of only the name of a student but from the feedback we got during the paper prototyping, we decided to add the student’s picture to make the interface easier to learn. We also used to have a button called "Class", that would select all the class. But from the feedback we got we decided to change it to a small selection box which selects/unselects the entire class.
- From our paper prototype testing we also learned that users were having trouble understanding who they were communicating with, so we decided to add a context window to the left of the tabbed frame, displaying the pictures of the selected students.
- Hovering over a student’s profile picture in the context window, provides extra information about the student.
- After the heuristic evaluation we thought it was important to add a message icon beside a student’s name in the left menu when a teacher had a new message from that student’s parents.
|

| Messages - This page allows teachers to have different conversations with parents or groups of of parents.
- Originally, it wasn’t divided into conversations. When the user would select several students, all the messages related to those students would appear in the window. With those students selected, the user could send a message to those student's parents, which they would receive individually, without knowing who the other recipients were. This seemed to be very hard to learn, so we decided to divide messages into conversations.
- Now, when several students are selected all the conversations appear listed at the left of the messages window. The top conversation is that corresponding to the selected students.
- Hovering over a conversation provides extra information about the student.
- From the user testing, we learned that it is still hard to understand how the conversations are related to the selected students. To solve this we will add a title to the list of conversations, to clarify what they are. We have also decided that we will add the ability of labeling conversations so it is easier for teachers to remember what each group is (study group, team, etc). Finally, we are also going to edit the page so that when the user clicks on a notification, the new conversations (that triggered the notification), appear first in the list of conversations, and so the notification button disappears when the conversations are read (and not when the notification is button is pressed).
|
 
| Calendar - The calendar page allows teachers to post events. Originally, it was designed so that teachers would also post their availability. However, we learned from the paper prototype testing that users have their own calendar platforms for keeping track of their events and their availability. We therefore decided to limit this page to a page where teachers would post events they want parents to see (exams, excursions, meetings, etc )
- The user can create a new event for the selected students by clicking on a day. A popup form appears, where the user must specify an event title, and can determine a start date/time and end date/time. The user can also further details for the event such as reminder times and event details.
- By default, the date displayed in the date fields is the day the user clicked on. And the time fields are also populated if he created the event from the week or day view.
- A user can edit attributes of an event by simply clicking on it. The user can modify any field and then click ‘Save’ to make the changes. No matter what students are selected that moment, the event continues to have the same participants as before being edited. When the form displaying the event details is open, the user can click ‘Delete’ to delete the event. The event is deleted for all the participants.
- By putting his mouse over an event the user can see the pictures of the event attendees.
- There is a legend at the bottom of the page which explains what the color of an event represents. We decided to add this after the feedback we got from the heuristic evaluation. We designed it is so that you can hide it (experienced users who already know what the colors mean do not want to see the legend any more).
- Lastly, we still rarely experience an error where the calendar doesn’t load. Simply refreshing the page takes care of the problem.
|
 | Grades
- The grade page allows teachers to quickly see all of the grade entries, scores, and overall letter grades for each student. Although outside the scope of this project, this would ideally be imported from an external gradebook source.
- Users can send grade reports to the parents of the students selected by clicking on "New Grade Report". This brings up a form where the user can specify the assignments he wishes to send, add comments to the report, and add SMS or email as additional means to submit the report.
- Users can also edit the grade book in line see what letter grades correspond to what numeric scores by clicking on the help icon, providing information to supplement the numberic/letter meanings of grades.
- Users can edit the grade book in line by clicking on the score they score they want to change. This makes it more efficient than having to go to an external page to correct input grades and safer as the teacher can correct grades she entered wrong/changed.
- Originally the table colors, fonts, and font sizes were different, but after the feedback we got from the heuristics analysis we decided to change them and to add a legend to the page. We also made the design of the reports form use Bootstrap's table styling because of its simplicity and readability.
- Originally, sending grades did not allow for user customization and automatically send grades to the parents of whoever was selected. We designed the grade report form to be internally consistent with the calendar form.Finally, after our last testing, we are looking forward to adding some extra features that provide more feedback to the user, such as a button that shows all the reports the user has submitted, using a modal that allowed for a message to be included and treats each grade like a file attachment in email.
- After sending grade reports, the user is provided with a success message to indicate whether or not their message has been sent. This displays above the grade book table in a thin horizontal ribbon, which is similar to gmail.
|
Implementation
Implementation:
The implementation of check mark is based on a few key technologies that help string everything together. The backend is deployed on top of node.js. We use socket.io for a web sockets transport layer and the jade templating language to dynamically render html. On the client side, our javascript code is built ontop of the jQuery framework and we bring in a couple of other libraries. The calendar is primarily implemented through the FullCalendar library and there is an additional DatePicker library that we use to help with event creation and editing. The entire interface is supported by Twitter's Bootstrap which we use to establish the layout, a lot of the styling and iconography, and some small javascript based animations. Our server is hosted on the AppFog platform.
The implementation of data transportation is slightly peculiar. All objects are stored as javascript classes which are utilized by both the front end and the backend. However, to transport the classes from the backend to the front end, we convert the classes to json objects--which strips all function calls. This JSON representation is then passed to the frontend and the frontend parses this and adds all of the data back to the new classes on the front end. Although unconventional, the advantages of this are obvious. We have 1 easy to use class file for each type of object used in our implementation, both for the backend and the front end. Updates to this one file are seen on both sides. We simply had to write very general data parsing -> class creation functionality and the rest worked seemlessly.
The implementation of CheckMark is based on a few key technologies that help string everything together. The backend is deployed on top of node.js. We use socket.io for a web sockets transport layer and the jade templating language to dynamically render html. On the client side, our javascript code is built on top of the jQuery framework and we bring in a couple of other libraries. The calendar is primarily implemented through the FullCalendar library and there is an additional DatePicker library that we use to help with event creation and editing. The entire interface is supported by Twitter's Bootstrap which we use to establish the layout, a lot of the styling and iconography, and some small javascript based animations. Our server is hosted on the AppFog platform.
...