NFL turnover differential analyzer

This project is about football.  More specifically, it is about turnovers in
football.  A turnover in football is when
one team mistakenly gives the football to the other team.  There are two basic ways this happens:  a player with the ball drops it and the other
team jumps on top of the loose ball, or a pass is caught by the other
team.  The value (number of turnovers by the
losing team minus number of turnovers by the winning team), is "turnover
differential" or "turnover margin."



We will provide a data file in which
each line, for our purposes, is

int turnoverDiff String otherStuff


The data is from every NFL game played
in the 2013 season.


The program will read the data file and
present a Swing GUI with the following major parts:


An "underlying data" part that shows the dataset's low value,
high value, and number of data points.


A "user section," that lets the user enter floor and ceiling
values, and shows the number of data points in that subset.  Floor and ceiling values will be inclusive.


A “results” section that shows the number of games below the floor, in
between the floor and ceiling, and above the ceiling.


Some possible questions this UI could
shed light on are

1.       number of games in which turnover differential had no affect on the
outcome:  floor = 0, ceiling = 0.

2.       number of games where the winner had a positive turnover
differential (floor = 1, ceiling = data set high value) versus the number of
games with a negative turnover differential (floor = data set low value,
ceiling = -1).


Design constraints:

Students should separate the Swing UI
from the data analysis engine.  The data
store (DataSet) keeps the data, supplies the low and high values, and the
number of data points above, below and in between the floor and ceiling.  It has no user knowledge or interaction at


The Swing UI uses this data store for its
analysis without (much) understanding that we're talking about football games
verses "high temperatures for days in January."  (Maybe the text labels will be different, but
not the data manipulation.)
Powered by