The following table summarizes the performance of this semester's final project software. Apart from Team ZERO, whose sad story is told below, the Team IDs were generated randomly.
The table is sorted by the program's reliability on part 8 of the test script. That reliability was calculated by subtracting the number of false positives and false negatives and half the number of inaccurate offsets from the number of correctly reported matches, and dividing that result by the number of matches that should have been reported. In the table, negative reliabilities are shown as zero.
Ties were broken by sorting with respect to the software's time efficiency on the stress test (part 10), which is the second most important measure of software quality shown in the table. Programs that took more than 30 minutes to complete the stress test are sorted by their time efficiency on part 8.
Three projects completed the stress test very quickly because they threw an exception. Those projects are listed as failing the stress test.
One team submitted source code
(and an executable program) that had been configured to create
temporary files in a particular team member's personal directory
instead of the /tmp
directory. As you might expect,
that software performed miserably, failing almost every test we
used for grading (because we, like Dan Wear and other users of
the software, did not have permission to create
files in that student's directory).
The program's source code looked fine to the naked eye,
however, so I spent some time debugging it. It turns out that
correcting just one line of code would have reconfigured that
software to use the /tmp
directory, and the reconfigured
program would have performed the best of all programs submitted
instead of being one of the worst. The performance of that
corrected program is shown in the line for Team ZERO.
It might be interesting to compare this table to a similar table for the graduate course on software development.
Team ID | Primary Language |
LOC | Reliability on part 8 |
Time (part 8) | Time (part 10) |
ZERO | Python | — | 100% | 89s | 273s |
993 | Scheme | 1354 | 100% | 76s | 579s |
720 | Python | 330 | 100% | 167s | 921s |
326 | Python | 563 | 100% | 326s | 934s |
710 | Java | 1449 | 100% | 304s | 1394s |
652 | Python | 792 | 100% | 579s | > 1800s |
959 | Python | 653 | 92% | > 1800s | > 1800s |
934 | Python | 947 | 90% | 276s | > 1800s |
756 | Python | 209 | 87% | 786s | > 1800s |
197 | Python | 538 | 85% | 204s | 639s |
349 | Python | 397 | 75% | 769s | > 1800s |
683 | Python | 793 | 72% | 250s | > 1800s |
182 | Python | 1003 | 30% | > 1800s | > 1800s |
933 | Python | 543 | 0% | 171s | 487s |
940 | Python | 779 | 0% | 709s | > 1800s |
648 | Python | 554 | 0% | 859s | > 1800s |
990 | Python | 1226 | 0% | 205s | (failed) |
222 | Python | 553 | 0% | (failed) | (failed) |
910 | Python | 859 | 0% | (failed) | (failed) |
Last updated 12 December 2014.