Enabling Technology



My semester project for Comp 290 is “Big Words,” software that aims to break the second grade reading barrier. I have used Python, wxPython, and pyTTS to implement a basic “fill-in-the-blank” exercise to afford students some simple pattern matching with morphemes. This prototype will be built upon in my work on Big Words through NSF and with Dr. Bishop and Dr. Erickson in the coming year.

Problem Description:

According to the 24th Annual Congress Report, fifty-five million students attend national K-12 public schools, and nearly three million of those children have some form of learning disability. Several million students with disabilities require direct, systematic, sequenced instruction in order to learn the skills required to read polysyllabic words. These students are unable to demonstrate accurate word identification, fluency, and silent reading comprehension beyond the second grade level due to difficulty with applying letter-sound knowledge to read and spell words with more than one or two syllables. Older students with reading disabilities seem to have mastered knowledge of letter-sound correspondence, but fail to process all of the letters in the larger words and thus read inaccurately. These students benefit from instruction on strategies of chunking large words into morpheme components. Morphemes (prefixes, suffixes, roots) are important building blocks of reading that may be more easily understood as a result of their meaningful nature in isolation contrasted with phonemes (single sounds).

Project Audience:

“Big Words” is intended to provide instruction and practice with literacy skills for students who have difficulty breaking words into their morpheme components. This group of students can successfully identify phonemes, but struggle with word chunking.

Project Proposal:

My goal in development of “Big Words” is to target this audience of readers with the design, implementation, and evaluation of enabling technology developed for users with cognitive disabilities. In utilizing technology to provide additional morphological instruction, I aim to enhance a student’s language experience and reduce demand on teacher resources.

I hope to eventually equip “Big Words” with a component that will simulate the instructive feedback of human teachers, which provides an extension beyond the binary positive feedback of many existing rote drill software programs. Ultimately, feedback to build and reinforce appropriate problem-solving strategies must indicate to the student why his/her answer is correct or incorrect, equip the students with strategies for improvement, prevent repetitive errors, and expand knowledge. In this manner, “Big Words” can capture the teachable moment.

This semester, I aimed to create a demo that would prototype the “fill-in-the-blank” exercise modeled by existing literacy software.


I have utilized Python, pyTTS, and wxPython to create a simple GUI with TTS capability. I have currently implemented a “fill-in-the-blank” literacy exercise.

Project Design:

I first designed a “dictionary” which we can refer to as the MorphemeDictionary. The MorphemeDictionary is a Python dictionary which utilizes a morpheme (prefix, suffix, or root) as a key and then contains a list of all the words that are associated with that morpheme (i.e., contain it). I read the MorphemeDictionary from a file which is set up as:

key: chunk1, chunk2; chunk1, chunk2, chunk3.

The key is the morpheme to file the word by, next is a series of chunks separated by commas that form a word. Words are separated by semicolons, and the entry is ended by a period.

I have incorporated a feature in my GUI that allows a user to add words to the dictionary. By clicking on “File, Add Word,” the user will be prompted for the morpheme under which to file the new word (the key). The user will then enter the word with chunks separated by periods and ending the word with a semicolon. The word will be added to the MorphemeDictionary filed under the “key.”

I used pickle in Python to allow a user ability to save and load a dictionary. After a user has made changes to the dictionary, they can opt to save it through, “File, Save.” This only dumps out the MorphemeDictionary at this time. The user may also load a dictionary with “File, Load.” This will only load whatever is saved as “MorphemeDictionary.pickle” at this time.

I incorporated “Exit,” “About,” and “Instructions” options into the GUI menus. The user also has the ability to track their correct responses and exercises attempted with “File, Current Totals.”

Exercise Design:

A user will see a bank of 5 morphemes to select from, and objective, three blanks, and three options (“Next Exercise”, “Check My Answers”, and “Clear Blanks”) on the Big Words GUI.

If a user left-mouse-clicks on any of the text on the GUI, it will speak itself. Additionally, a morpheme piece is selected through a left click.

The user will then right click on the blank in which he/she feels the morpheme belongs. After placing a morpheme on a blank, the user can left-click on it again, and if it is correct, it will speak itself. If it is incorrect, it will provide the user with feedback that he/she has selected the wrong piece.

After at least one morpheme has been selected through a left-click, the user may elect to right click on any of the blue “commands.” Selecting “Next Exercise” will randomly select a new word from the MorphemeDictionary and construct a list of five new Morpheme Choices. Selecting “Check My Answers” will compare a user’s selections with the correct answer. The user will receive feedback about their selection. Finally, choosing “Clear Blanks” will clear all of the blanks. The user may move morpheme pieces among the blanks; however, once they are in a blank, “Clear Blanks” must be selected to move it back down to the word choices bank. This feature was incorporated to reward a student who is able to select the correct morpheme but who may not place it in the right blank. A blank may not contain more than one morpheme at a time.

Current Limitations:

In order to add ease in my dealing with the words in the dictionary, it is currently only implemented for three-syllable words. I will expand this in later versions to include words of any length.

Furthermore, I have incorporated some basic binary feedback which will be expanded to be more instructive in the next year.

I have only implemented a dictionary that contains 10 keys. I will continue to expand to the full “Nifty Fifty” as time goes on.

I currently have only worked with the “fill-in-the-blank” exercise, but look forward to expanding this to include variety that can benefit all students.

The presentation of content is currently random and not based on a student’s performance or teacher/parent’s preference. The next version of Big Words will incorporate intelligence in content presentation.

Unresolved Issues:

I need to consider more thoroughly my method of splitting word chunks. In some cases, it is intuitive to have a letter appear in two separate chunks, while in the real spelling of the whole word, the letter appears only once. I need to devise a good way to indicate a shared letter.

I am anxious to begin to tackle the issue of incorporating instructive feedback! This component will greatly enhance the novelty of this project. This issue will involve further investigation into natural language processing and consideration of an intuitive datastructure to hold the feedback components for synthesis and generation.

Domain Expert and Evaluation:

The Carolina Center for Literacy, and more specifically, Dr. Karen Erickson, will be my domain expert. Dr. Erickson has provided a good deal of preliminary information regarding morpheme components and instructive responses. The software should ultimately be evaluated by Dr. Erickson and potentially some of the students that she works with in the coming year.

Demonstrating Success:

I had proposed success as:

“I will consider this semester project a success if I am able to get a working prototype of this software completed. It will have to be limited in scope with regard to activity, word base, and possible feedback generated: however, it will be a good start for a larger scale project in the future. A successful project will be able to take advantage of some teachable moments and provide some instructive responses to student selections.”

I believe that I have mostly met my semester goals. I have implemented a working version of a basic literacy exercise. I have also laid the groundwork for expansions in incorporating instructive feedback, allowing users to add content, tracking a student’s progress, and maintaining a morphological database. I would consider this semester’s work a success, though merely a stepping stone to much bigger and better things in the coming year.


The main challenge that I incurred in this portion of the project was learning the Python. I feel extremely excited that I am beginning to harness the language, and I look forward to getting to apply what I’ve learned in the future of this project.

Another huge challenge for me in this project has been identifying and tackling small tasks. I have been very “big-picture” focused, and I believe that at first, that stalled my progress. However, I feel that after this semester, I am much more in the mindset of “small goals.”

One of the flaws in my program is that it doesn’t catch all errors. Some continue to be printed to with invalid clicks. I will incorporate more error handling/detection in future versions.

It seems that some times when generating a possible choice list, the program stalls. I have incorporated random selection with elimination of duplicates, so it seems that at times it takes a while to come across non-duplicates.

I decreased the refresh rate for this final submission to eliminate the flickering that my program demonstrated at the presentations a week ago. However, now the motion in displacement seems to be a bit choppy. I look to tweak this in future versions as well!



I have greatly enjoyed getting to be a part in this class! It was not only informative, but also inspiring! I am extremely excited to have begun making some progress on Big Words, and I look forward to getting to restructure and utilize this project in my work next year. Now that I have laid the groundwork for the basic features of the software, I can focus on adding some of the fancier features!