Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Describe the final design of your interface. Illustrate with screenshots. Point out important design decisions and discuss the design alternatives that you considered. Particularly, discuss design decisions that were motivated by the three evaluations you did (paper prototyping, heuristic evaluation, and user testing).

Implementation

Describe the internals of your implementation, but keep the discussion on a high level. Discuss important design decisions you made in the implementation. Also discuss how implementation problems may have affected the usability of your interface.

Our user interface runs in-browser using Silverlight, and is implemented using C#. It uses Silverlight's layout system to organize the widgets (which are from the Silverlight SDK), and is therefore resizable. One problem that we had to circumvent was the long draw time of the word search in the left side bar. In spite of the clipping stage of the renderer, due to the shear sheer volume of off-canvas things that needed to be drawn, the GUI would block for long periods of time if using stock widgets and layouts. We had to implement therefore implemented an algorithm that reduced the amount of processing of off-screen clipping (by computing the visible contents based on scrollbar position and adding only those widgets to the layout).The server-side backend is written using ASP.NET scripts which communicate with a MySQL database instance. Initially, our original computer prototype simply read the sentence and word databases from built-in text files instead of communicating with the server, so we did not support user accounts until late in the implementation stage. However, with the exception of the login screen, this did not pose a problem for testing most of the functionality of the user interfacethe visible contents based on scrollbar position and adding only those widgets to the layout), which alleviated this issue.

With regards to our sentence segmentation code, we use a lexicon-based segmentation approach. Thus, if a user contributes a new sentence, then provided that the words are in the lexicon, the sentence will be properly segmented, and the sentence can be found by making any of those words it is segmented into the study focus. Because our lexicon is extremely large and comprehensive (several megabytes), then the words in a sentence are usually found in the lexicon, so the sentence is properly segmented. Additionally, this means that when a user contributes a sentence, he doesn't need to segment the sentence himself, or provide any tagging for the words - he simply inputs the sentence, and it is automatically segmented and annotated with its vocab words. However, this automatic lexicon-based segmentation and word extraction also prevents users from being able to use out-of-lexicon terms in their contributed sentences (they can use them, but they will not be annotated with that vocab word).

The server-side backend is written using ASP.NET scripts which communicate with a MySQL database instance.

One design decision we made to simplify implementation was that all information - namely, the list of sentences, the words, and their translations and romanizations - would be retrieved from the server at login time. This was meant to ensure that no latency from communicating with the server would be seen once the user has been logged in and is using the main interface. However, one usability issue which resulted was that login times tend to be long due to all the downloading that is taking place. We managed to alleviate this by having shared portions of the data that would need to be downloaded by all the users (for example, the word database) be downloaded in the background while the user was still entering his login credentials at the login screen. Additionally, we have a loading screen with an animated progress bar to provide feedback for the user while the page is loading. Another issue which results from our decision to download all data from the server at login time is that if other users contribute a sentence, then the sentence won't be observed until the next time the user logs in.

...