Please read this page very carefully and completely before you start working on the first exercise sheet. The rules are valid for all exercise sheets of this course. Not knowing them will not protect you from consequences (as is generally true for rules and regulations).
Rules for the programming exercise sheets
1. Programming language We recommend Python, for several reasons. First, we will also use Python in the lectures. Second, the code templates and unit tests will be provided in Python. Third, the ease of use of Python will allow us to focus on the actual topic of this course: information retrieval. If you prefer, you may also use Java or C++ for the programming exercise sheets, but it will be more work (depending on the exercise sheet and your proficiency maybe even much more work). Other programming languages than the named three are not allowed.
2. Submission The version relevant for grading is the last version which you have uploaded (committed) to our SVN before the deadline. You can upload as many intermediate versions (including for backup purposes) as you like. Submissions after the deadline or via email will not be accepted, so please start working on the sheets in time.
3. Makefile Each submission must have a Makefile (for Python and C++) or a build.xml (for Java) with the targets compile, checkstyle, test and clean. This was explained and demonstrated in Lecture 1 and an example file for each language is available under public/lecture-01/. Our continuous build system (Jenkins) will check automatically after each commit whether the targets run through without errors. You can also initiate a check manually.
4. Uploading Please take care that no unnecessary files are uploaded, for example .pyc or .o or .class files. Many exercise sheets work with a dataset and some of the datasets are quite large. You must not upload these datasets to our SVN or terrible things will happen. Of course, small files used by unit tests can and should be uploaded.
5. Compilation The compile target must run through without errors, otherwise your exercise sheet will not be graded and you get zero points. The reason is that it requires an unreasonable effort from a tutor to understand and check code that does not even compile. If you encounter compilation problems, which you cannot fix yourself, please ask on the forum, see Item 9. Note that although Python is interpreted, the compile target will check whether the code is free from syntax errors. Intermediate versions (see Point 2) don't have to run through without errors.
6. Tests If test are provided by us, you must not change them. If you change the contents of a test, you will not get any points for the corresponding part of your code. Exceptions are small and purely syntactic changes or if we have made a mistake. If your code fails a test, you will get at most 50% of the points for the corresponding part. So it's better to fail a given test than to wrongly modify it so that it passes. You are free to add more tests, but you don't have to. If you decide to use Java or C++, you will have to translate our provided Python unit tests to Java or C++ yourself.
7. Checkstyle Your code should be free from checkstyle errors. With checkstyle errors you risk a 10% point reduction, or up to 20% if there are a lot of these errors. Please note that checkstyle errors are easy to fix because the error messages from the checkstyle scripts are very concrete.
8. Readability Please write modular and easily comprehensible code. If a part of your code is large or complex enough or it is used in several places, it belongs into an own function. If the functionality of a code block is not obvious, there should be a comment explaining it. Explanations should always be concise and comprehensible. Often, an example is easier to understand (and shorter) than an abstract explanation. If you write incomprehensible code, you risk a 20% point reduction.
9. Forum If you encounter any problems with your code, first try to find a solution yourself. Very often, a Google search of the error message leads you to a solution quickly. However, don't spend too much time on such problems: if you can't resolve a coding problem yourself after, say 5-10 minutes, don't hesitate to ask on the forum. Here are instructions for properly asking questions on the forum.
10. Collaboration You are welcome to think about and discuss the exercise sheets together, but the code must be written 100% by yourself. Also partial copying of code – whether from another person, the master solution from a previous edition of the course, or the internet – counts as plagiarism with the corresponding consequences. You don't learn anything by copying and it is unfair towards the majority of the participants who put a lot of effort into working on the exercise sheets. You may use the code we provide in the SVN of the course (like the code from the lecture or the master solution for a previous exercise sheet). Note however, that the master solutions we provide after the deadline for each sheet are strictly for your personal use only. Under no circumstances may you pass them on to others or let others access them from your machine. Not now and especially not in the future.
Rules for the theoretical tasks
1. For the submissions for theoretical tasks, Item 10 holds correspondingly.
2. The points are divided as follows: For a meaningful basic approach you get 40% of the points. For correctly worked out details you get 60% of the points. The reason for this division is that it's important to work out the details. A vague description of an idea is a start, but provides no certainty concerning correctness.