Senior Thesis Information

General Guidelines

Life with a senior thesis is so much nicer if 1) we're doing something we're both interested in and 2) we already have some expectations as to how the advisor/advisee relationship will go. So, in general, to work with me you should:
  • Have taken a class with me before, and
  • Be interested in software engineering, software reliability, databases, agile development, or computer science education
Possible Topics

I'm certainly open to your ideas for a project, but do you need some thoughts? Here's some ideas that I've got:

Program Change/Defect Visualization - There's already some research out there on mining software repositories (CVS, SVN, etc) and using that info to see exactly how development is progressing. I would love to have someone use so pre-existing code that I have and build on it to pull down software change records and then graphically show things like defect density, change velocity (how much parts of the software is changing), and where code is stagnant. This could also drill in and out to and from file and component levels.

Singular Value Decomposition to Analyze Software Change - Do you like math? Well, if so, I'd like someone to continue on with my dissertation work in using singular value decomposition to look at how software changes and to analyze software artifacts.

Privacy in Tracking Student Grades - Does it ever bother you when profs leave out stacks of paper with people's names and grades all over it? What are the privacy concerns here? How can we improve the situation? This project would also probably involve the creation of an app to allow students to register a "secret ID" for the use of protecting their privacy.

PairEval - I would like for work to continue on PairEval, improving the system and also improving the methodology for matching up students with potentially good partners. The system should allow students to rate the performance of the other students in the group. The system will tie into either NetBadge and/or Collab (I have some code that will help you do this). What types of students tend to work well together? This project will require the student to do some research into learning styles and issues in Computer Science to try to find ways to automatically pair students together.

Open Courseware Systems - The academic community is looking more and more to open courseware systems to allow everyone (not just students in a course) to benefit from the materials presented. This project would involve a literature review of the open courseware systems available and would analyze the the mission of each, commenting on the effectiveness of these systems.
Previous Senior Theses

2008-2009

Web-based Software Configuration Management of Source Control Repositories and Users - Jeffrey Gaither
Version control has become an invaluable tool for software development projects. However, many computer science programs neglect the use of version control, even when giving students group projects. We introduce a web-based client that facilitates the creation and tear down of many Subversion repositories at once. This structure is to follow the rapid formation of new teams for student projects commonly found in computer science courses, providing instructors with an easy and straightforward way to administrate the repositories for their classes. Once students are regularly using version control throughout their coursework, they will be able to collaborate more effectively in group projects and obtain a skill set necessary in the industry today.

An Analysis of Static Metrics in Open-Source Software Projects - Michael Miller
Though documentation is a key component of any software project, the quality and amount of documentation in a given project is affected by a number of different factors. Our research analyzes static software metrics to determine how factors such as additional features, bug counts and code base size affect the amount of documentation produced for a project.

UVaCollab: Compliance with the Family Educational Rights and Privacy Act of 1974 - Ben Plunkett
The UVaCollab system at the University of Virginia is an implementation of the Sakai Collaboration and Learning Environment. The open source course management system is available for use by all members of the university’s academic community. During the fall of 2008, violations of the Family Educational Rights and Privacy Act of 1974 were discovered within the system. The resulting investigation aided UVa in repairing the system and making it more secure for students and faculty.

Compatibility of Partnered Students in Computer Science Education - Joshua Sennett
This paper details the results of an investigation into the compatibility of partnered computer science students. The study involved approximately 290 students at the University of Virginia (UVA). This study builds on the work of researchers at North Carolina State University (NCSU). NCSU researchers have conducted a number of studies on the compatibility of pair programmers. We examined many of the factors that the NCSU researchers explored in their studies (including personality type, learning style, skill level, programming self esteem, work ethic, and time management choices) in order to determine whether the conclusions of the research at NCSU also hold true at UVA. Consistent with the NCSU studies, we found that skill level continues to be the most important factor in student compatibility.

2007-2008

A New Paradigm for Tutoring at the School of Engineering and Applied Science at the University of Virginia - Eric Bradbury
In this project, researchers found ways to simplify and increase participation in the tutoring system at SEAS, motivated by the fact that numerous studies have demonstrated its effectiveness in raising student achievement. This research examines the lack of participation in tutoring and proposes ways in which the system can be improved through the use of an online system for helping students find tutors and other help in classes.

Automated Fix Generator for SQL Injection Attacks - Fred Dysart
A critical problem facing today's internet community is the increasing number of attacks exploiting flaws found in Web applications. Our work specifically targets input validation vulnerabilities found in SQL queries that may lead to SQL Injection Attacks (SQLIAs). We introduce a tool that automatically detects and suggests fixes to SQL queries that are found to contain SQL Injection Vulnerabilities (SQLIVs). Testing was performed against phpBB v2.0, an open source forum package, to determine the accuracy and efficacy of our software.

Web-based Kennel Management System using PHP and MySQL - Maureen Maughn
For this project a software application with an algorithm was designed that preemptively assigns the placement of incoming dogs so as to avoid stress through behavioral conflicts between neighboring dogs. The algorithm uses simple behavioral metrics such as "aggressive", "nervous", and "calm" to determine whether dogs may be placed adjacently. The system keeps a record of occupied and reserved runs in the facility, based upon current attendance and incoming dogs, and uses the algorithm to communicate to kennel staff the appropriate placement of new arrivals. Preemptive placement of dogs has the potential to reduce the stress experienced during a stay at the kennel. This would result in happier, healthier dogs upon leaving the facility, which would in turn result in more satisfied customers. The organization of daily activities could also reduce the stress experienced by kennel staff.

Integrated Querying in C# using Microsoft LINQ - Danny Shih
The most costly phase in software engineering is maintenance, which typically involves source code reviews by programmers other than the original author. Therefore, code readability and debuggability are very important measures of software quality. This project assesses the readability and debuggability of Microsoft Language Integrated Query (LINQ), pronounced "link." LINQ adds querying facilities to languages such as C#. Its syntax closely resembles that of SQL. Fundamentally, LINQ represents a novel blend of two programming paradigms: imperative and functional. Imperative programming languages such as C# emphasize the exact steps required to achieve some result. In contrast, SQL, which has strong functional programming aspects, focuses on what composes the final result. This project conducts programmer surveys to compare LINQ solutions against purely imperative and functional approaches to identical problems. The results should provide an assessment on how LINQ affects code readability and debuggability.