The Inspiration
As students learning a variety of foreign languages, we were wondering how we could create some sort of vocabulary tool to assist us in our studies. For many languages, knowing the meanings and origins of some of the more common affixes (prefixes, suffixes, root words) can improve one's ability to quickly recognize words and infer their meanings. In addition, we wanted to create something that would be relevant to the field of journalism.
The Goal
Our goal was to create a program that was capable of breaking down words into affixes and providing definitions for each one (as well as for the original word). A program with this functionality would allow international journalists to enhance their understanding of foreign words and terms. This understanding is essential in choosing precise words to use in news articles, and also helps a writer to provide easy-to-understand definitions of foreign terms for the reader.
The Challenges
This idea posed many challenges from the moment of its conception. For example, although we are all studying different languages, English is the only one that we each speak fluently. In addition, it would take a troublesome amount of time and resources to compile an exhaustive list of affixes and dictionary definitions from scratch. And to further complicate things, our logic would have to account for the many spelling and grammar rules and exceptions possessed by the English language.
The Plan
In response to these challenges, we decided to do our best to prove that our program could function properly for the English language. If we could achieve our desired functionality with just one language, then, with more time and resources, the project could be scaled to cover any and all languages. We generated a dictionary to handle definitions of root words, and we created lists of the most common prefixes and suffixes in the English language for use in our logic. We also conducted research to determine which spelling and grammar rules would be the most important to implement, and which ones could wait until we had achieved basic functionality. After analyzing our goal and designing our approach to completing it, we gave our project the name Affixr (because it divides a word into affixes and defines them) and began to implement our solution.
The Workflow
Another new challenge was the way we chose to work as a team. Each member of our team had participated in two previous Hackathons, but our typical approach in the past had consisted of taking turns working on one feature at a time. For this project, we decided to divide up the tasks so that we could all work individually and simultaneously. Sometimes, one person would have to wait for another person to finish coding a feature before they could do their job, and there were occasional issues with integrating parts and features. Overall, however, this workflow proved to be extremely effective, and resulted in achieving desired functionality far sooner than we had expected.
The Result
In the end, we successfully used Java to create our own unique algorithm to divide and define words, and we were able to implement it as an extension for Google Chrome (a format which was new to all of us) using Javascript and front-end languages (HTML, CSS, jQuery). In working together on this project, each of us was able to gain some insight into the collaborative strategies that are used widely throughout the industry today.
The End?
Affixr still has a lot of room for growth. Because our code is open source, programmers who have a background in linguistics (or can speak other languages fluently) can add support for other languages. The code could be ported from a Chrome extension to a website or mobile application to make it more accessible to students, educators, and journalists across the world. Support can be added for voice input and output, both for convenience and for the benefit of the visually-impaired. We are proud of our project's potential, and we are hopeful that it will one day possess all these features (and more)!

Log in or sign up for Devpost to join the conversation.