We believe that the most important aspect of any course is to learn new things and explore how they work. However, for a university course we also need to test this process to allow us to evaluate your skills when awarding the credits.

The final grade is awarded if you get enough points from assignments given during the semester and if you pass a final exam.

The final exam will take place in a computer lab and will consists of tasks similar to those assigned during the semester. It is an overall checking of basic knowledge and skills obtained in this course and is graded as passed or failed only.

Passing this examination is required for getting credit.

You can attend the exam only if you have enough points for passing the course (but we will wait with the final grade until after the last deadline, hence you can improve your grade even after passing the exam).

The actual grade is then determined from amount of points gathered from various assignments given during the semester.

Assignments are usually rather short (after all, this is an introductory class) but their amount is relatively high: there will be assignments for each week.

The actual assignments are of two kinds: before and post (after) class.

Before class assignments must be completed before you come to the labs and they require you to do some amount of self-studying.

Assignments given after class are meant to verify that you understood the topic thoroughly (i.e. only after we discussed the topic in greater depth in the labs). The self-study material will provide enough information to complete both before and after class tasks in one round. But we highly recommend to wait after the class to complete the post-class ones because that way you would be able to apply the knowledge gained during the labs and so strengthen your understanding of the topic.

Both types of assignments must be submitted before deadline.

The assignments are further split into five big groups that cover five major topics discussed in this course. These are (1) shell scripting (shell), (2) source code versioning with Git and GitLab (git), (3) basic development tools (devel), (4) basic administration tasks (admin) and (5) networking (net).

We require that you have at least half of the points from each of these groups.

Each group will be worth 500 points. Last shell tasks are in Lab 10, last admin and net tasks are in Lab 13 and last devel and git tasks are in Lab 14.

We will always grade your solution at the time of deadline (i.e. we will look at the state of your project at deadline and use that state to run the tests and compute the points). Feel free to store incomplete solutions, the amount of commits (resubmissions) is not limited (but, please, do not use GitLab instead of your development platform).

Overall grade is then computed from the sum of all your points. The good grade will be awarded for 50 percent or more, the very good grade will be awarded for 70 percent or more, the excellent grade will be awarded for 85 percent or more.

The rationale behind this system is actually very simple. Assignments that are not counted towards final grade are often ignored or done poorly by many students. Also many students tend to exit the course early when they gathered enough points to get the credit and thus they miss some topics completely. As for the final exam, we want to ensure that you are able to complete the tasks when you are completely on your own, without any help (however small) from your colleagues or Internet forums.

If we encounter any form of cheating (be it copying from the Internet or reusing solution of your colleagues) you will fail the course on the spot. Please see course guide for more details about permitted and prohibited forms of cooperation.

Your grading will be pushed to your submission project Wiki, under the Grading subtree.

Please note that we try to keep the grading information compact and avoid legalese, however, we will penalize attempts at gaming the system through formalistic interpretation.