Senior Projects

Senior projects by academic year


Marin A. Abernethy `14
Advisor: John Ridgway
Acquire Online cohesively incorporates the economic strategy of the classic board game, Acquire, in a web based multiplayer version of the game. As a authenticated user, one can enjoy as many games with as many friends as desired. Acquire was designed by Sid Sackson and first published by 3M in 1962. The objective of the game is to earn the most money by developing and merging corporations. When a larger corporation acquires a corporation in which a player owns stock, players earn money based on the size of the acquired corporation. At the end of the game, all players liquidate their stock in order to determine which player has the most money. This economic simulation game is consistently rated one of the best economics board games, however, people these days turn to their technological devices for entertainment rather than sitting around a game board. This projects aims to convert the fun of the board game to the Internet. While there are two notable, existing online versions of this game – NetAcquire and Game Table’s Acquire – they require the user to download their software or pay a fee to play others. Acquire Online requires neither and allows the user to play from their local web browser. This application is built in Ruby on Rails, a server-side web framework, alongside front-end web languages such as HAML (HTML Abstracted Markup language), and SASS (CSS Compiler). Additionally, Ember.js, a client-side JavaScript framework helps to make the game dynamic, with its Handlebars templates that update automatically when the underlying data changes. The design is simple so that gameplay is easy and enjoyable. 

Vlad S. Burca `14
Advisor: Takunari Miyazaki
Graphs are mathematical objects that are comprised of nodes and edges that connect them. In computer science they are used to model concepts that exhibit network behaviors, such as social networks, communication paths or computer networks. In practice, it is desired that these graphs retain two main properties: sparseness and high connectivity. This is equivalent to having relatively short distances between two nodes but with an overall small number of edges. These graphs are called expander graphs and the main motivation behind studying them is the efficient network structure that they can produce due to their properties. We are specifically interested in the study of k-regular expander graphs, which are expander graphs whose nodes are each connected to exactly k other nodes. The goal of this project is to compare explicit and random methods of generating expander graphs based on the quality of the graphs they produce. This is done by analyzing the graphs’ spectral property, which is an algebraic method of comparing expander graphs. The explicit methods we are considering are due to G. A. Margulis (for 5-regular graphs) and D. Angluin (for 3-regular graphs) and they are algebraic ways of generating expander graphs through a series of rules that connect initially disjoint nodes. The authors proved that these explicit methods would construct expander graphs. Moreover, the random methods generate random graphs that, experimentally, are proven to be just as good expanders as the ones constructed by these explicit methods. This project’s approach to the random methods was influenced by a paper of K. Chang where the author evaluated the quality of 3 and 7-regular expander graphs resulted from random methods by using their spectral property. Therefore, our project implements these methods and provides a unified, experimental comparison between 3 and 5-regular expander graphs generated through explicit and random methods, by evaluating their spectral property. We conclude that even though the explicit methods produce better expanders for graphs with a small number of nodes, they stop producing them as we increase the number of nodes, while the random methods still generate reasonably good expander graphs.

Liam F. Doran `14
Advisor: John Ridgway
Note-taking is an incredibly common practice that, for many people, hasn't changed much since the advent of personal computing. Physical notes are severely limited by their medium, and for the most part, digital notes suffer many of the same weaknesses. As a result, they can be difficult to maintain, and even more difficult to study from. To resolve this, I created Noteworks, a web application designed to let users take cleaner, better organized, and more usable notes. The application works by allowing a user to type in notes with a simple markup language I designed. The backend then parses these notes, breaks them down, and allows the frontend to present the user with a graph of their data, which is generated by a force-directed graph drawing algorithm. The user is able to interact with this graph by moving its elements around as necessary, and can update it in real time by simply modifying the notes that they've taken. The computation for the app was written in Ruby (with the Ruby on Rails web framework) on the backend and JavaScript on the frontend. Noteworks works, turning notes that may have otherwise been unusable into an easy to engage with, dynamic, and well organized network of information.

Zachary S. Freedman `14
Advisor: Takunari Miyazaki
The goal of this software package is to predict companies’ future performances based off of current momentum factors. Our goal is to look at a company’s growth over the past yearlong period, and based on that growth, project how the company’s share price will be valued one year from our current date of examination. The predictive classifiers chosen for this machine learning task are decision trees, which perform attribute tests on data objects to classify the objects into predefined classes. To complete this task, the project was broken up into three distinct modules: data scraping performed through Python using BeautifulSoup, data preprocessing written in R, and, also programmed in R, decision tree growth and model valuation. First, financial statement data and pricing history are scraped from NASDAQ and Yahoo Finance, respectively, into .csv files indexed by the companies’ ticker symbols. Once data is collected and organized, the .csv files are read into the data preprocessing module, where key attributes can be analyzed, refined, and selected for dimensionality reduction. After choosing the key attributes that truly define financial growth and momentum, data is rewritten to .csv files to be fed into the predictive model for decision tree growth, testing, and valuation of predictive classification accuracy. The predictive model produces a 60% predictive accuracy for a binary classification of Buy and Sell, and a 40% predictive accuracy for a ternary classification of Strong Buy, Buy, and Sell.

Christina M. Lipson `14
Advisor: John Ridgway
As a longtime musician, I have accumulated a list of tools that I believe would help me in my musical endeavors. For the culmination of my studies in Computer Science and Music at Trinity College, I wanted to make these tools a reality. The web application I have developed provides a space with a cohesive set of tools for users to train themselves in various musical skills, create their own music, analyze music, and reference musical information. These four components (Train, Create, Analyze, Reference) act as categories and each contain different musical functions. The “Train” category improves the user’s musical brain by letting them practice interval training, pitch training and sight singing. The “Create” category provides the user with a creative outlet through the “note playground”, which contains a grid of music that they can design. The “Analyze” category gives the user the ability to turn live audio input into a musical score. The “Reference” category contains chord chart generation and a musical dictionary to help the user with musical diagrams and terminology. The application was built using Ruby on Rails and other assisting web development languages. Since most of the application consists of temporary audio and visual generation, much of my coding was done in the front-end, with back-end storage used in cases such as storing musical terms as objects in the database. I utilized open source code for the sound and visual components of my application in order to move quickly and effectively through all of the material I wanted to cover. Using a real-time audio JavaScript library and a music notation rendering API as my building blocks, I created algorithms for advanced chord generation, interval generation/classification, live audio analysis, and optimal audio-visual connection. The resulting application is a space with musical functions that incorporate the visual and auditory components of music.

Nathaniel S. Maynard `14
Advisor: John Ridgway
Event advertisement is difficult on college campuses, the main media being Facebook and flyers. These can often be ineffective with people not stopping to read the flyers or ignoring the event requests component of Facebook. The goal of the SocialMiniMap is to be a tool that students can use as a public posting board for events. The project uses the open source web application framework Ruby on Rails in combination with the Google Maps JavaScript API v3 to display upcoming events, your location and the location of your peers on a map that helps the user gain a better perspective. Ruby on Rails uses a Model-Views-Controller software pattern that allows for the creation of many different objects that add functionality to the map. Users will log in and be able to manage their connections to friends and send messages along with all the Google Maps functionality. Three of the major components in this project are the Users, Events and Locations on the map. These Ruby models work with the JavaScript via Embedded Ruby where Ruby expressions can be inserted in to the JavaScript. User and Event models store information such as names and location data that are used with the Google Maps API to help display the information that the user is looking for. Location models hold data used to create Google Maps latitude and longitude bounds objects. These are then used with click listeners that notify the user when a new event location is in the area of a predefined building or dorm. Information is only useful when readily available, with my app I hope to take flyers out of the trash and make them more appealing on a phone.​

Tanya D. Nongera `14
Advisor: Ralph Morelli
Mobile phone quiz apps are commonly being used as a studying tool by students, and their use as language learning tools is no exception to this trend. Hence, the mobile phone application proposed, to help students grasp the Chinese language, specifically by improving their vocabulary recall. Nuli Xuexi permits a user to create multiple quizzes, and retrieve them if and when they want to test their knowledge of learned vocabulary. The ultimate goal is to aid them in committing the new vocabulary to long term memory in an attempt to obtain a better grasp on the language. With the use of App Inventor, a database created that stores this information for each user, and due to the importance of communication when learning or studying a language, Nuli Xuexi incorporated features that allow communication between users via email or text. Additionally, it contains a voice recognition tool that provides a platform for users to practice their intonation of different words as they work through the quiz; an extremely useful tool for mastering the Chinese language, as the meaning of a word can change if incorrectly pronounced.

Jamie Ray-Anthony Recas `14
Advisor: John Ridgway
WhatsOn is a web application, built with Ruby on Rails that suggests movies on redbox (a movie rental kiosk) and in theatres to its users based on their calculated preferences.  It accomplishes this using user-user (K-NN) collaborative filtering. K-NN collaborative filtering is a straightforward algorithmic interpretation of the core premise of collaborative filtering.  Collaborative filtering is the grouping of similar users and using their average ratings for a particular item as an indicator of the expected rating for other similar users. K-NN collaborative filtering was implemented by creating a vector for each user that corresponds to their ratings of an ordered set of movies.  Using this vector as a position in space, the K-Means algorithm then clusters similar users together according to Euclidean Distance: users whose positions are close to each other are said be similar because they rate movies similarly. To generate a movie rating for a user j and movie k the recommendation algorithm is run. This searches within the cluster that j belongs to and finds all the users that have rated movie k. The algorithm then uses a weighted average (weighted on similarity) of all the ratings of movie k, within the cluster, as the projected rating for user j. WhatsOn manages to predict, with reasonable accuracy, the expected ratings for users of the application. It does, however, suffer from the “cold starting” problem that plagues many collaborative filtering applications and the K-Means algorithm needs to be optimized. On the other hand, these problems diminish as the number of users of the application increase.

Lauren B. Yianilos `14
Advisor: John Ridgway
For my senior project I’ve created a website for athletes, more specifically rowers, to document their workouts and track their progress. Athletes will be able to join their team, e.g., the Trinity College Women’s Rowing Team, and record their workouts. There are two places where a user can record information: on the team page and on their personal page. The team calendar will consist of workouts that its members have deemed ‘public.’ If a user chooses to make a workout ‘private’ it will only be visible on his/her personal calendar. In other words, a public workout will be visible on both calendars, whereas a private workout will only show up on the user’s personal calendar. Users can choose to be notified by text, email, or both about certain information. My project is implemented using Ruby on Rails. The two main models in my project are ‘Exercise’ and ‘Calendar.’ To update the calendar, the user can pick from a list of exercises. The user inputs information about their workout in these tables and the information is displayed on a calendar with the help of the ruby gem. To track progress, the user can compare a current workout to one completed a week, a month, or a year ago.

Alexandre X. Zhang `14
Advisor: Takunari Miyazaki
Over the last few decades sabermetrics and statistics have infiltrated into the world of professional sports. Many baseball organizations have begun employing mathematicians to analyze their team data in order to increase their chance of winning games. The most notable example is Moneyball: the art of winning an unfair game by Michael Lewis. This project focuses on the analysis of hockey statistics because there has been a limited amount of advanced statistical research done and the statistics which are currently talked about are usually ignored when piecing a team together.

The overall goal of this senior project was to develop a model using a support vector machine and to use this model to successfully predict more than 50% of NHL game winners. This was accomplished using two key resources, Web Scraper, a Google Chrome extension, and libsvm, a support vector machine library package. The overall architecture of this project begins with data collection using the Web Scraper extension from, followed by data preprocessing to alter the data into values acceptable by libsvm. The majority of the data set is then used to train a model, through which the rest of the data will be tested to determine the accuracy of the model.

The results of different models will be presented. The model based on goals per game and goals against per game was determined to be the best at 68% accurate, 18 percentage points greater than the target value.


Rahul S. Chatterjee `13
Advisor: Madalene Spezialetti
WarBot is an Online-Multiplayer-Battle-Arena with support for up to 10 players simultaneously. It allows friends to team up as robots and fight an opponent team and to reap the benefits with an in-game gold system that allows the purchasing of upgrades for your weapons to further bring about the enemy’s demise.  

The aim of this project will be to emulate an industry standard Multiplayer Flash Game with all the necessary implementations required to make it a viable competitor in a real-world market. The tools used in this project will also be that of industry standard IDEs such as Flash from Adobe’s Creative Suite and the popular java IDE Eclipse. The features of the game will include multiplayer support, an achievement system, chat rooms to serve multiple clients, robust gameplay and a certain degree of character progression all of which are expected in today’s multimedia.

Nyi M. Htet `13
Advisor:  Ralph Morelli
This project is a cross platform mobile application that addresses the issues of customizable data collection, and data visualization in one application package. The goal of this project is to provide an easy way to create and share custom data forms in order to perform data collection as an individual or group project, and integrate the data visualization component into the data collection process. With just a smart phone or tablet, and a free Google Cloud storage account, data collection can be performed through customizable forms, and the collected data can be saved on the device. The collected data is then sent to the cloud, and connected to the cloud based data visualization tools. The visualized data can be shared among the users or downloaded and saved onto the device.

Pauline H. Lake `13
Advisor:  John Ridgway
The Computer-Technology Helper is a digital repository that allows educators to view, edit, create, upload, and comment on teaching materials related to Computer Science and Technology.  More importantly, it provides a social space in which educators can collaborate and share teaching ideas. The application also includes membership management that allows for differentiation in user roles and user access. Since there is a lack of Computer Science and Technology in K-12 schools, having a website like the Computer-Technology Helper is a great way to provide educators with access to Computer Science and Technology teaching resources and provide a support system for non-Computer Science educators. The Computer-Technology helper was created using Ruby on Rails along with HTML and CSS.

William M. Laughlin `13
Advisor:  Madalene Spezialetti
Help Me Now is a help website where users can post jobs, request help, or even make money by helping others.  Will Laughlin began Help Me Now about 9 months ago as his senior project and has since developed it into the website it is now.

Willem van Daalen `14
Advisor: John Ridgway
The Internet has revolutionized content consumption in the twenty-first century for people around the world. One of the challenges the people now face when attempting to find information is not that the information does not exist, but rather that it is located in too many sources, some more trustworthy than others. Additionally, the process of data discovery and recovery has become increasingly time consuming, often negating the benefits gained from the easy access to data provided by the Internet.

Muse is a web application designed to help resolve this problem in the field of music; it provides a single live-feed of new songs customized to each user’s preferences. Specifically, muse works by parsing through a wide variety of user-specified websites and extracting song information which is then presented to the user in their feed. Muse also allows users to specify content filters based on song metadata, allowing users to exercise fine-grain control over the songs that appear in their feed. Lastly, muse uses Jaccardian similarity and memory-based collaborative filtering to provide custom recommendations for each user based on trends in their likes and dislikes.


Sheena Elveus `12
Advisor:  Madalene Spezialetti
The ‘A Walk Down Memory Lane’ Website allows members of Trinity community to interact with others, regardless of when time was spent here, and reminisce over memories involving the Trinity campus. Users can go through galleries of images and mark them with their recollections, big and small. They can send messages to their friends, upload photos, and just catch up with people they knew. As a computer science major and architectural studies, this project combines the technological with the visual. This website is designed to be used by all Trinity members, including students, faculty, and alumni.

Benjamin M. Hartung `12
Advisor:  Peter A. Yoon
Social media platforms offer a large amount of data that can be used to find and plan events, but currently, there are no applications to view all the available event data from multiple platforms. Using the Android operating system as a development platform, an application was created to allow users to view information about events occurring at and nearby Trinity College by gathering data from their social media accounts and from public event announcements. Using the Facebook API , the application draws  data about events published by friends. Additional information about events is collected using  RSS feeds containing details about events planned around Trinity College. Posts made with Twitter are used as another source of events and are retrieved with the Twitter API, sent to a a server and stored in a database. Once stored these posts are filtered by means of a support vector machine and separated into two categories: those that contain event data and those that do not. Any posts containing event details are sent back to the user. Details about public events are collected using the information available from the APIs of five public event announcement websites: Patch,, Eventful, Eventbrite, and Upcoming.  Having collected this data, the application displays the events in two formats. The first format invovles a series of filterable lists containing event titles which could be expanded to display details about each event. The second centers around a map interface that displays the location of events in the selected region. With the increased use smartphones, there is a growing audience for easier mobile  event identification. Further work will focus on making the application more appealing by improving the user interface and increasing the accuracy of the filtering for Twitter posts.

Richard Sung `12
Advisor:  Ralph A. Morelli
In the past few years, Twitter has become a major social networking service with over 200 million tweets made every day. With this newfound source of expanding information, can people stay up to date with what others are posting? Along with the increasing processing power of computers, is there a way computing can analyze tweets on a large scale? Moreover, can computers understand what people think based on what they post? This senior project explores this question by determining the positive or negative sentiment of twitter posts by using a machine learning algorithm called Support Vector Machines. Based on a labeled dataset of tweets, a parser then extracts present features in the text to create a vector. Once a collection of vectors is compiled, data is trained and tested to create a working model, which can then be evaluated to determine the effectiveness of the classifier. Based on a dataset of 359 tweets and 329 features, a model can accurately classify tweets as high as 74.84% using a linear classifier.

Gregory P. Vaughan `12
Advisor:  Madalene Spezialetti
In the last five years, casual gaming has exploded into the video game market. With the promise of products that have a social component, are easy to learn, and are easy to play, casual gaming  attracts many who previously would have never considered playing video games. Ka-Boom! seeks to develop a browser based video game, modeled after the well known Bomberman series, that is simple and focuses on player vs. player competition. Since the goal of Ka-Boom! includes multiplayer interaction, a client-server networking model is adopted so that players can interact with the game, as well as each other, over the internet. To develop this model Java is used for the server while the client consists of Flash and Actionscript. Players visit the site hosting Ka-Boom! (, create a user account, play games against other users, and view their in-game statistics. Ka-Boom! is one of first multiplayer video games that is free, simple, and available over the web.


Prasanna Gautam `11
Advisor:  Timothy Richards
Distributed Hash Tables (DHT) is a storage system that provides a hash-table interface distributed over many individual devices on the network. Commonly used by Bittorent applications and network providers for redundancy, in both cases the nodes can come in and out of the network unpredictably. This is analogous to Mobile Ad-hoc networks in mobile devices where devices communicate without a common network provider. Project Thor was developed to simulate these DHTs over Adhoc networks. Since the existing network simulators were focusing on low level link or network layer, Thor was developed to study DHTs at a higher abstraction level using Clojure - a functional programming language running on Java Virtual Machine (JVM). A domain specific language called Hammer was written to facilitate this task. Hammer is evented and allows for Clojure functions in the simulation which provides concise and expressive syntax. Upto 10,000 nodes were simulated running DHT on Adhoc network and time, power degradation and network performance were measured.

Dimitar V. Gochev `11
Advisor:  Peter Yoon
This project explores the area of General Purpose Graphics Processing Unit (GPGPU) programming with nVidia's CUDA technology. More specifically, it concentrates on the Convex Hull problem, which has various applications in computer visualization, pattern recognition, geographical information systems, statistics and other fields. The experiment tries to determine whether a parallel Convex Hull algorithm running on the nVidia Tesla GPU can achieve better runtime performance than a conventional CPU implementation. It is known that this problem cannot be solved faster than sorting, and has a computational complexity of O(n log n) in the general case. Parallel solutions to the problem have a higher level of complexity, but make up for it by utilizing multiple processing cores simultaneously. Runtimes are compared for different-sized inputs to see if this new technology is more suitable for solving this problem.


Vinit Agrawal '10
PGP (Pretty Good Privacy) is an email encryption service which provides cryptographic privacy and authentication. Although PGP has been already implemented in most of the email-systems for desktop environments, it has still not been implemented in most mobile and embedded devices. So the project entails an open-source solution of providing PGP Support in Android phone. The functionality has been achieved by successfully integrating java API for Open PGP, Bouncy Castle in Android. The future goal of the project is to integrate PGP with the native email client available in Android- K9Mail.


Christopher A. Fei `10
POSIT (Portable Search and Identification Tool) is an Android application written by students with the Humanitarian FOSS Project. The application helps aid search and rescue efforts by allowing the transmission of data recorded in the field to and from a central server. Data is typically sent to and from an Android device via a WiFi connection or cellular data network such as 3G. However, when POSIT is deployed to help relief efforts in a disaster situation, there is no way we can rely on the existence of such wireless infrastructure. Thus, POSIT and the Android platform need a way to allow devices to communicate directly with one another, without employing a central server. That is, we need a way for Android devices to form an ad-hoc network. We have implemented ad-hoc communication as a module in POSIT by using the Random-Walk Gossip (RWG) protocol, developed at the Real Time Systems lab at Linkoping University in Linkoping, Sweden. The protocol functions with reasonable latency and with no knowledge of the rest of the network, making it suitable for mobile devices. POSIT's ad-hoc communication functionality currently supports sending and receiving text-based message. I report results of field experiments testing the limits of both my implementation and of the protocol itself.

Rachel A. Foecking, `11
This project is an attempt at integrating two free and open source software systems related to disaster management: POSIT and Sahana. Sahana is an all-purpose, one stop disaster management system. It is a web based collaboration tool that addresses the common coordination problems during a disaster: managing aid and supplies, finding missing people, managing volunteers and the victims themselves. POSIT is a portable, open source tool written on the Android platform for use with mobile devices that aids search and rescue efforts by enabling them to transmit field data between users and central servers. This project establishes a basis for communication between Sahana and mobile phone software like POSIT. Sahana administrators and users would benefit from on-site information that mobile devices can provide by giving them more awareness of the situation out in the field. The POSIT project (a small, homegrown effort) will benefit by being associated with a well-known FOSS project, which might spark contributions from newly interested developers.

Christopher I. Hawley `10
Physicians spend a non-trivial amount of their time calling in prescriptions to pharmacies, resulting in a net loss of time that they can be helping patients. Innovations as simple as the “waiting room in the doctor’s office” have helped to decrease this time loss. Example: A doctor’s time, as a skilled professional, is relatively more valuable than the average person. Therefore, as a society, we should try to maximize their time by enabling them to always have a patient to help. By having a waiting room full of queued patients, while the doctor is working, he/she always has someone to help- i.e. no wasted time. A further solution to this problem would be to minimize the time doctors are dealing with clerical work. My project’s solution is to create a secure online system where doctors can prescribe medicine for patients, pharmacies can receive the prescriptions, and patients can adjust the prescription at their convenience. This is an improvement in efficiency for both the doctor’s office and the pharmacy, an improvement in patient convenience and a victory for the environment by removing much of the paper involved in this process.

Dana A, Merrick `10
Have you ever wished you could remote control your computer? With portable computers getting smaller and more powerful, the role of the desktop is shifting towards a media center. Many smartphones come with tools to control your media library, but not everyone uses one. My goal was to design a piece of software that would allow me to control my desktop from a device that I do use -- Amazon's Kindle™ ebook reader. Many things had to be considered, including feature set, security implications, and application design, in addition to many Kindle-specific problems, such as working around limitations on the display, processor, and most importantly the ability to run third party applications (for which the Kindle does NOT have support). The result was a series of clever design choices that led to the Kindle remote, a personalized remote control for the desktop.


Paul D. Mertens​ `10
Consider the following situation: you have a text written in a language you are very familiar with. You wish to translate it into a language you are not familiar with. You want the translation to be accurate, but once translated, you have no way of verifying whether the translation is accurate or not. Regardless of how the text gets from one language to another, you want to be reassured that it the meaning of the text is faithfully upheld. The goal of this project was to design and create a program that would translate from one language to another with perfect accuracy under these conditions. Time, speed, memory usage and overall convenience come secondary to the primary goal of Accuracy. For the context of this project, I chose two languages that I am personally familiar with: English and Latin. In operation, the user inputs text and identifies the grammatical structure of the text manually. Given this information, the program then converts the grammatical structure of the source language into a corresponding grammatical structure in the destination language. It then translates the individual words into their new form. A database was used to store a subset of the vocabularies and grammatical structures of the English and Latin languages as well as the relationships between the two. The program uses Java to manage the application logic, Apache Derby to manage the database logic, and Apache Tomcat to manage the server logic and provide an interface for the user. The eventual product was a web application presented to the user through JavaServer Pages.

Jessica A. Tait `10
College athletes play for schools that are often far from their homes, families and friends. Therefore, it is often difficult for those people to see the games in which their loved ones compete in person. This can make it difficult for fans to keep up with the team. One solution to this problem is to broadcast the games online through statistics. This idea is similar to the program that Major League Baseball uses to broadcast its games online called Gameday. The Trinity Play-by-Play web application is comprised of two parts: an administrator page and a viewer page that are written mainly in Actionscript, Javascript, mySQL and html, among other programming languages. The administrator page includes buttons that someone watching the game in person can use to record the events of the game. These events are uploaded to a web server where the viewer page can access them so that anyone at home can go to the viewer webpage and be able to follow along with the game. The main statistics that are recorded are ball, strike and out counts, the type of play that occurs, the scores, as well as the names of the teams playing, their players and the player’s statistics.

Sarah R. Thayer `10
The Writers Workshop Website ( is a forum-based website aimed at helping writers receive constructive feedback from fellow writers. Many other writing websites require intensive registration forms before the user is allowed to view creative pieces. Most do not prompt constructive comments, so writers struggling with a work do not get help to improve upon it. The Writers Workshop Website does not require any registration to view the forums. This transparency allows potential users to get a feel for what the forums are like before joining the community. Multiple literary genres have been included in the forums, and additional comment fields encourage helpful feedback. Implementation of this project initially included database configuration and server setup with the aid of phpMyAdmin and MySQL. For software, (an open-source Content Management System) was used in conjunction with modified PHP code and CSS to achieve desired functionality and design. Additional technologies used include FileZilla, BBCode, Facebook, MeetUp, LinkedIn, and VastHTML. Results have been positive: the website launched on March 17, and after just over 5 weeks, total views were up to 747 and there were 18 users, 18 posts and 15 topics on the forums. The Writers Workshop Website also includes forums dedicated to writing prompts and site feedback, as well as mobile-friendly viewing, automatic broken link checks, and a constantly-updated “Tips and Tricks” page for users.

Keith van Stolk-Riley `10
Most musical compositions are formed using a set of rules, namely Music Theory, to form a guideline of what will please an audience. These rules dictate which chords to play in backing a certain melody and which notes can be written within a certain key, for instance. Music Theory’s rule set was used to help create an application meant to aid an aspiring songwriter in writing a composition. The user is prompted to begin a new composition and given a choice between starting from a chord progression or a melody. Each musical chord has specific member notes which make up the chord. This relationship is used to generate the complement of whichever aspect of the composition the user has chosen to input. The output is then written to a text file using ABC notation. ABC notation is a standard for writing notated music using plain text characters, so it can be opened in any text editor and easily read by the user. There also exist many free and open-source utilities which read ABC notation and convert the document into other formats; like PostScript for viewing the notation on a musical staff, or MIDI for listening to how the document sounds. Since the explosion of Web 2.0 and user-generated content on the internet, the streamlining of content generation for the user in any form is very important. Future work will focus on expanding the scope and musical complexity of the program beyond its current limitations of one key and a subset of defined chords, as well as refining the generation of complements to the user’s input.

back to top