Ptt16 Assignment2

Bulk file processing on 101worker


Develop a 101worker module.


  • 12-22 May (Preparation)
    • Learn how to run 101worker in a test environment locally. If you have trouble running 101worker, get on Facebook, help each other. The assumption is that all teams can run 101worker by 23 May firm.
    • Prioritize approx. 3 options of those listed below so that you can speak up during the meeting on 23 May. By all means, we should be able to assign one of your preferred options to your team.
    • If you want to propose another option (one shot per team), send an email to ed.znelbok-inu|gnaltfos#ed.znelbok-inu|gnaltfos with "[course:ptt16-assignment2] proposal of an option". If this is a good idea, we will reserve it for you. If the proposal is considered redundant or suboptimal, it will not be considered. You will know only by 23 May.
  • 23 May (Option assignment during lab)
    • 1-2 team (max 3) representatives must attend the first lab (14:15-15:45).
    • Ask questions on your preferred options.
    • Participate in the audition for the available options.
    • You can get more consultation during the second lab slot.
  • 8 June (Deadline for assignment)


Low complexity level

  1. anotherLOC: A variation on module simpleLOC that distinguishes binaries in the output.
  2. fragmentCount: A fragment count metric (based on .extractor.json) per contribution.
  3. folderDepth: Median and maximum folder nesting depth for contributions grouped by language.
  4. developerRanks: Rank developers (contributors) per language based on 101wiki triples.
  5. checkTesting: Verify that all Java contributions contain tests; report violations.
  6. checkPackaging: Verify that all Haskell contributions contain Cabal files; report violations.
  7. checkEntrance: Determine entrance points for Java contributions; check main method signature.
  8. checkLanguages: Verify that languages used by a contribution according to 101wiki are actually used.

Medium complexity level

These options are eligible for collecting a bonus.

  1. lookupMaven: Associate Java imports in .extractor.json with Maven Central Repositories IDs/URLs.
  2. ncloc: A NCLOC modules (no comments LOC) with coverage of 3+ languages.
  3. locPerContributionIncremental: An incremental variation on module locPerContribution.
  4. antlrMetrics: ANTLR grammar metrics: numbers of nonterminals and references to nonterminals.
  5. anotherExtractor: Provide a missing validator for a language.
  6. correlationLocFeatures: Compute correlation (per language) numbers of features / LOC of contributions.
  7. detectClones: Apply a clone detector on contributions to extract a similarity graph.
  8. detectSmells: Apply a smell detector on (Java) contributions to extract smells per contribution.
  9. detectDeadCode: Dead-code detector for Haskell (find functions that are never applied).

High complexity level

These options are eligible for collecting a bonus.

Additionally, these options qualify for a waiver for the next assignment.

You need to be very confident in your skills to consider these options.

Supervision will be provided by Ralf Lämmel past the lecture slots.

1-2 extra weeks may be used for these assignments.

1. Provide a missing fact extractor for a language.
2. Convert 101wiki to HTML and/or LaTeX.
3. Downsize 101worker in terms of its file footprint, e.g., by excluding derivable files.


  • You submit a forked or cloned and appropriately adapted 101worker repo:
    • That is, you may fork 101worker and commit your revision to your git repo.
    • Alternatively, you commit your revision of a clone/copy to your git repo.
    • Alternatively, you commit a zip file or your revision of a clone/copy to your git repo.
  • The final commit message must include a pointer to the module that you have developed.
  • Your 101worker module must be documented in the file of the module directory.
  • You need to test your module and submit your test code; please have a look at the demo modules.


This assignment is eligible for collecting a bonus for the exam, as explained on the course page.

A solution for this assignment qualifies for the bonus, if:

  1. all team members leave traces of their work on gitlab/github;
  2. the team applies for bonus by email to softlang with "[course:ptt16-assignment2] application for bonus" as the subject line (without the quotes) while explaining (in the body of the email) how to find traces according to item 1, if this is not obvious in terms of the commits;
  3. the work is explained well in the file which comes with the work.

Further reading

  • The 101worker infrastructure (.pdf)
  • The technical documentation of 101worker (GitHub)
  • Conference papers that may provide you with motivation; reading at your own risk:
    • Linking Documentation and Source Code in a Software Chrestomathy (.html)
    • Comparison of Feature Implementations across Languages, Technologies, and Styles (.html)