2007 TopCoder Collegiate Challenge
TCCC07 Header Links
Today is Friday, April 19, 2024
TCCC07 Sponsored by Eli Lilly

TCCC07 Event Patron - NSA

TCCC07 Sponsored by Deutsche Bank

PE is the new Component Development Champion!

Discuss this

Friday, November 2, 2007
by the Development Review Board
TopCoder Members



After three days of on-site finals, PE emerged as the winner of the 2007 TopCoder Collegiate Challenge Component Development competition, taking home the top prize of $15,000. lyt came in second, and serine took home the third.

Component Development Final Scores

Handle Total Points
PE 100
lyt 47
serine 37
enefem21 32
Yeung 24
catcher 22
fanse 22


Wednesday, October 31, 2007
Round 1: Subversion Path-Based Authorization Development
by cnettel

On the development side, the first component of this year's TCCC was very similar for .NET and Java. Although the .NET developers faced a few Java-isms in the UML docs, both designs fit well into their respective environment. Hence, the choice was totally a matter of developer preference, and maybe to some degree a desire to win the per-component prize. The fact that Java 5 is now used in many components also makes the differences smaller, with things like generics and enums.

The actual scope of the component was to provide an object model and convenient access to the contents of files for SVN authorization settings. For an SVN server handling multiple source code repositories and projects with granular security access, maintaining the associated flat text files of permissions and group structure can be a horror. The requirements and the design put a lot of effort into maintaining the specific structure of the file read, even when it contains semi-illegal or redundant information. Even whitespace should be preserved perfectly! Together with the fact that comments are allowed just about anywhere in the file, what might seem like a straightforward line-by-line read is suddenly far from trivial.

The real "killer" in this component, however, was another aspect: the huge and very flexible frontend for performing CRUD (create, read/retrieve, update, delete) operations on the basic entities of users, groups, and repository paths. The design also included indexing for faster lookups. All modifying operations need to be carefully implemented to update or rebuild the index properly, and also make sure that the index is in a consistent state, even if the operation should fail.

Yet, the main problem for several of the submitters was just the sheer number of similar, but not identical, methods to implement in the frontend. Several of those who did submit at all still had remaining rough edges, or even unimplemented methods. Personally, I'm reminded of the "Conversion Factory 1.0" component I did back in 2004 where the list of methods for the single main class needs to be zoomed out to 25 % to fit on a 1600x1200 display... The key to that component, as well as this one, was for the developer to figure out the best way to reduce the redundancy in the actual implementation.


Thursday, November 1, 2007
Round 2: Ant Dependency Versions / NAnt Dependency Versions
by dmks

The Ant (NAnt) Dependency Versions component is a custom Ant task (NAnt function) for finding the best fit version of a dependency jar file (dll file) within a specified path and a version expression. The version of the dependency file will be determined through a pluggable algorithm. Two implementations are provided: one that relies on the TopCoder directory structure, and one that determines version from META-INF/MANIFEST.MF for java archives or metadata in .NET assemblies. The best fit version will be selected by "last version" and "last build date" pluggable algorithms according the version expression. This component is very useful for the application to find the best fit Java archives (.NET assemblies) by build script automatically.

This component is the easiest of the three TCCC07 final development components. It had 5 submissions and almost all of them implemented the functionalities correctly. But the developers should pay special attention to the exception handling. They should consider the invalid/non-existing files, invalid version expressions, invalid version format of the files, etc. Two submissions did a good job on it and the others missed some required exceptions.


Friday, November 2, 2007
Round 3: Subversion Path-Based Authorization Web Interface
by Savior

The Subversion Path-Based Authorization Web Interface component provides a web-based GUI to a subset of API of the Subversion Path-Based Authorization component, which is the first project of development finals. The .NET version provides a WCF service.

To finish this project, developers have to write mock implementations for the Subversion Path-Based Authorization component, which is very large, contains lots of methods. Few people finished it in week 1. Fortunately, not all of them are required, but I believe it is still not an easy job. There was no submission in the .NET version. On the Java side, three developers submitted, but one of them is not completed.

The servlets in Java version and the panels in .NET version are not difficult to implement, the designs are rather clear, but in-container tests for them should be provided. And since this is a GUI component, a clear demo is also required.



Component Development: Scores & Wagers

  Subversion Path-Based Authorization Development
Java .NET
 
  Round 1  
Competitor initial score final score place wager points link rd1 total
catcher N/A N/A 5 20 4 N/A 4
enefem21 62.22 62.89 3 30 10 download 10
fanse N/A N/A 5 10 2 N/A 2
lyt 53.15 53.15 4 10 2 download 2
PE 88.17 89.15 1 60 60 download 60
serine 75.25 75.57 2 30 15 download 15
Yeung N/A N/A 5 10 2 N/A 2
 
  Ant Dependency Versions / NAnt Dependency Versions
Java .NET
 
  Round 2  
Competitor initial score final score place wager points link rd2 total
catcher N/A N/A 6 20 3 N/A 7
enefem21 75.48 75.6 5 10 2 download 12
fanse N/A N/A 6 30 5 N/A 7
lyt 93.48 95.47 2 30 15 download 17
PE 97.03 97.5 1 20 20 download 80
serine 85.89 87.13 3 60 20 download 35
Yeung 83.7 84.01 4 60 15 download 17
 
  Subversion Path-Based Authorization Web Interface
Java .NET
 
  Round 3  
Competitor initial score final score place wager points link complete total
catcher N/A N/A 4 60 15 N/A 22
enefem21 46.93 47.55 3 60 20 download 32
fanse N/A N/A 4 60 15 N/A 22
lyt 73.85 76.27 2 60 30 download 47
PE 91.55 92.68 1 20 20 download 100
serine N/A N/A 4 10 2 N/A 37
Yeung N/A N/A 4 30 7 N/A 24