Ptt11 Hackathon

Logistics

The main development activity of the Hackathon takes place on 5th and 7th July 2011 during the lecture hours in the lecture hall.

Students work in teams with 3-4 members.

Teams pick topics as they register; see the list below.

Team registration is administered through a designated web site.

Registration site: https://userpages.uni-koblenz.de/~ptt/coursedb/index.php?cid=42112

Team registration is/was closed by July 5th, 10am, Koblenz timezone.

The joint development during the lecture hours serves the following purposes:

  • The team meets on Tuesday to get started with the project.
  • The team meets again Thursday to (nearly) finish the project.
  • Both on Tuesday and on Thursday, HIWIs try to help as good as they can.
  • HIWIs will interview teams to verify that teams are on the right track.
  • Teams that instantiate the same topic may also engage in discussions.

An attendance list of both days is produced.

The submission of the final solution is/was due on Friday, 8th July, End of Day, Koblenz timezone.

A designated svn area is provided for the Hackathon teams.

https://svn.uni-koblenz.de/ptt/ptt11/hackathon/<TEAMNAME>


Here is a link to the Hackathon-Wiki: http://101hackathon.wikidot.com/


Advice

Pick a topic that you consider interesting and that you are relatively familiar with.

In case of doubt, pick a topic for which you are motivated to work hard.

There is not much sense to rebuild the homework teams at this hackathon—-unless you share interests.

Register yourself with a team that does your chosen topic; if there is no such team yet; initiate one.

Make sure to do some thinking and planning ahead of the lecture slot on Tuesday.

Continue development on Wednesday.

Make sure to discuss the bulk of your project with the HIWIs during the lecture slot on Thursday.

You decrease odds of failing by leveraging the feedback that HIWIs can provide at the event.


Topics

The following list is subdivided into low-hanging fruits and other fruits.

A topic from the former list can be instantiated once.

A topic from the latter list can be instantiated twice.

(Further, low-hanging fruits may be less likely to lead to exceptional solutions.)

Depending on participation and other factors, the instantiation rules may be changed.

All of the following topics have been inspired by corresponding student proposals.

Reference to a student proposal in the following list does not imply that the specific proposal is directly recommended.

Instead, make sure to read and understand the "Idea" section for each list entry.


Low-hanging fruits


Access control, for example, with XACML

Id

xacml

Idea

Identify some functionality based on existing 101features that deserves access control.

Integrate XACML-based access control into an existing 101implementation.

This may be a GUI-based 101implementation, for example.

Related proposals

http://101hackathon.wikidot.com/proposal:xacml


Swing-based GUI with tree-based navigation

Id

swing

Idea

The existing 101implementation for Swing uses a very straightforward GUI.

It is interesting to represent the department hierarchy as a tree in the GUI.

Using the tree, one is able to unfold and unfold departments.

Nodes in the tree can be selected to edit properties such as names and salaries.

Related proposals

http://101hackathon.wikidot.com/proposal:matthias-bohleber


Sound recording for 101companies

Id

sound

Idea

No comment; see proposal.

Related proposals

http://101hackathon.wikidot.com/proposal:sound


Foreign-language binding with Perl

Id

perl

Idea

The idea is to add define part of the 101companies functionality in Perl while some other part of the functionality is provided in a different language, for which binding to Perl is available. For instance, a basic object model can be set up in Java, and operations for Cut and Total can be implemented in Perl.

Related proposals

http://101hackathon.wikidot.com/proposal:perl


Graph-based visualization of companies

Id

graph

Idea

The company structure is visualized with OpenGL, OpenJGraph, or another library/technology.

Additional gestures are appreciated. For instance, the visualization can be coupled with a simple GUI.

Related proposals

http://101hackathon.wikidot.com/proposal:openjgraph

http://101hackathon.wikidot.com/proposal:cschmitt

http://101hackathon.wikidot.com/proposal:visualising-companystructure-with-opengl

http://101hackathon.wikidot.com/statisticwithopengl


XML Programming with StAX

Id

stax

Idea

No comment; see proposal.

Related proposals

http://101hackathon.wikidot.com/proposal:nhessel


Transaction control with the Command Pattern

Id

command

Idea

An implementation may be enhanced with the Command Pattern.

The pattern may be useful in a GUI to provide a UNDO/REDO capability.

The pattern may also be useful generally to provide a sort of batch capability for salaries cut.

Related proposals

http://101hackathon.wikidot.com/proposal:sweisenfeld

http://101hackathon.wikidot.com/templatemethodspattern


Excel-based model with a Cut script

Id

excel

Idea

Companies (and departments and employees) may be represented in different ways in Excel.

The operation Total can be modeled presumably with basic Excel features.

A script may be needed to perform the Cut operation.

A report may be used to export some statistics such as the totals per Department.

Related proposals

http://101hackathon.wikidot.com/proposal:excel


Grammar-based programming with Prolog

Id

prolog

Idea

There is a very basic 101implemenation that uses Prolog.

A more advanced implementation may use grammars to represent companies.

Further, a command line interface may be provided for performing changes or invoking cut selectively.

Related proposals

http://101hackathon.wikidot.com/proposal:mkrawez


Use of ObjectiveC with Cocoa

Id

objectiveC

Idea

No comment; see proposal.

Related proposals

http://101hackathon.wikidot.com/proposal:objectivec-cocoa-gui


Multithreading in, for example, Java

Id

multithreading

Idea

No comment; see proposal.

Related proposals

http://101hackathon.wikidot.com/multithreading


C++-based implementation with Qt-based GUI

Id

qt

Idea

Implement 101companies in C++.

Make good use of Qt for a GUI.

Related proposals

http://101hackathon.wikidot.com/proposal:qtcompanies


Other fruits


Use a MapReduce framework on top of Haskell

Id

mapreduce

Idea

Implement 101companies with MapReduce in Haskell.

Leverage one of the existing MapReduce frameworks for Haskell.

Compare the implementation with the Hadoop-based Java implementation.

The existing frameworks differ in various parameters.

For instance, the frameworks may focus on distributed systems or on manycore architectures.

Related proposals

http://101hackathon.wikidot.com/proposal:haskell-mapreduce


Web-based implementation using PHP

Id

php

Idea

Implement 101companies on the web with PHP.

Make good use of the PHP paradigm, language and ecosystem.

Related proposals

http://101hackathon.wikidot.com/proposal:101company-with-php5-and-simplexml

http://101hackathon.wikidot.com/proposal:jsobotta

http://101hackathon.wikidot.com/proposal:php5-strategy-design-pattern


101companies on a smartphone

Id

smartphone

Idea

Different smartphone platforms come to mind.

Please note that there is already a WP7 101implementation.

Primarily, 101implementations for iOS and Android are sought after.

If you want to study another platform, please discuss with the hackathon staff.

Related proposals

http://101hackathon.wikidot.com/proposal:ios

http://101hackathon.wikidot.com/proposal:android


Distributed programming with JNDI

Id

jndi

Idea

No comment; see proposal.

Related proposals

http://101hackathon.wikidot.com/proposal:jndi


A WebService-based implementation

Id

webservice

Idea

Part of the 101features are to be provided by a WebService.

A 101implementation has to be use the WebService.

Different technologies and styles for WebServices may be used, e.g.: JAXWS or ReST.

Related proposals

http://101hackathon.wikidot.com/proposal:xor-webservice


Use of template metaprogramming (C++)

Id

metaprogramming

Idea

TMP (Template Metaprogramming) is demonstrated in a non-trivial manner.

Existing 101features are to be implemented with the help of TMP.

The added value or the specific characteristics of TMP are to be clearly identified.

Related proposals

http://101hackathon.wikidot.com/proposal:c-templatemetaprogramming


Design by Contract

Id

dbc

Idea

Demonstrate the use of contracts in a 101implementation.

For instance 101feature:Precedence and 101feature:Mentoring call for a contract.

The different kinds of contracts (pre/post/invariant) should be exercised.

JML and Eiffel come to mind as languages.

If there are multiple instantantiations of this topic, different language/technologies are to be used.

An exceptional solution would also engage into the use of mechanized verification.

Related proposals

http://101hackathon.wikidot.com/eiffel

http://101hackathon.wikidot.com/proposal:jml


Static and dynamic composition with Lua

Id

lua

Idea

A 101implementation is sought after that demonstrates some specific expressiveness of Lua.

Most likely, Lua's ability to statically and dynamically compose functionality and models should be focused on.

Related proposals

http://101hackathon.wikidot.com/proposal:lua


A GMF-based company editor

Id

gmf

Idea

GMF (on EMF) is used to provide a graphical editor for companies.

The editor operates on top of an EMF-based object model.

This is a very cool and ambitious proposal.

Related proposals

http://101hackathon.wikidot.com/proposal:gmf-for-101companies


Bytecode Engineering

Id

bytecode

Idea

It is not readily clear how to use bytecode engineering for 101companies.

That is, what feature to address? Should a new feature be proposed?

Hence, the application scenario should be clarified.

A modern bytecode engineering technology should be used, e.g., ASM.

(BCEL is rather effectively deprecated by now.)

Javassist also comes to mind, and it may enable yet other scenarios than ASM (and BCEL).

Related proposals

http://101hackathon.wikidot.com/proposal:bcel

http://101hackathon.wikidot.com/proposal:javassist


Use of MDA/MDE technology

Id

mda

Idea

No comment; see proposal.

Related proposals

http://101hackathon.wikidot.com/proposal:andromda