This page describes how the course will look like and what to expect.

Please, read this carefully.

Labs and lectures

Because the focus of the course is on practical skills, labs are the central point of the activity. But for each lab we need to lay a bit of groundwork: explain the basic concepts and often also a bit of background.

Because the synchronization of the lectures and labs is difficult to maintain (lecture is every other week etc.) we decided to replace the content of lectures with a self study.

Therefore, there are no lectures but you are supposed to read provided the material before coming to the lab.

Before class

The before class preparation would consist of reading the provided text and then answering several questions regarding this text. The text will focus on concepts required for the upcoming lab.

For each lab there will also be a before class quiz that you need to fill-in before coming to the lab. The quiz will be known in advance but we strongly recommend that you actually read the whole text thoroughly. Skimming the text only to find the answers may be enough to finish the quiz but it will leave gaps in your knowledge that may prevent understanding more complex topics as we progress through the course.

Please, write your answers in a concise manner, focus on the important points. When selecting the answer from a provided list of options, always check whether you are supposed to select one answer or multiple of them.

The first quiz will be for Lab 02, i.e. not for the very first lab in the week of February 14.

Labs

The actual labs are taking place in IMPAKT computer labs. Feel free to bring your own laptop. We will try to help you install Linux to your own machine so that you can study, experiment and play at home too.

The most important rule is: when in doubt, ask. Seriously. We are there to help you, to guide you. Do not be afraid to ask.

The attendance is not mandatory: if you plan to not attend at all, please, enroll to the virtual lab instead of a normal one.

Lab contents will be on this website – if you miss a lab, you can always find all the relevant information there.

We will provide for each lab a set of learning outcomes so that you can test yourself if you understood all the important parts of the lab. These will be always divided into two groups – conceptual knowledge and practical skills. The first one relates to things you should be able to explain or talk about (e.g. explain what is a compiler). The second one relates to things you should be able to do (e.g. know how to run a compiler).

From each lab will also be a set of short practical assignments to solve. The deadline will be two weeks after the labs.

Both the before-class quiz and short practical assignments are mandatory even if you enrolled to the virtual lab.

Grading

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 overall grade is computed from the following groups.

  1. Before class quizzes (each lab).
  2. Short practical assignments (each lab).
  3. Bigger assignment related to shell scripting.
  4. Bigger assignment related to networking and system maintenance.
  5. Bigger assignment related to development tools.

The first two will be assigned and solved through the whole semester, the last three will be solved during the examination period.

For each group you will receive points, for the final grading we will normalize them to percents (i.e. each group has the same weight).

To pass the course, you will need a minimum of 50 percent from each group, the overall grade will be determined from the average of the five groups. 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.

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.

Assignment and quiz submission

All quizzes and assignments must be submitted through faculty GitLab. You will have access to a project under the NSWI177 subtree where you will upload your solutions.

We will not accept submissions after deadline.

Please, answer the quizzes either in English, Czech or Slovak language.

Details about the submission will be described during the first lab.

Assignment and quiz evaluation

Most of the assignments will be programming tasks: you will submit a working program that we will check. For these assignments, we will always provide automated test suites that will check your solution.

The tests are not a replacement for reading the assignment and writing a proper solution.

These tests will be executed by GitLab automatically and you are supposed to check their results. After a few weeks, you will also be able to run the tests yourself locally without waiting for GitLab to run them for you.

For most of the tests we will also provide a rough overview of points assigned to help you better distinguish which part of the task is the most important. I.e., you will know that the assignment is worth X points and the tests will further break that down into smaller amounts of points.

When actually grading your solution, we will generally use the same set of tests as you have seen in GitLab but we will also inspect your solutions manually.

We will award bonus points for nice solutions and we will penalize solutions that are suboptimal even if they pass the tests. Typically, these would be solutions using cryptic variable names, performing redundant operations etc. In extreme cases, we may assign 0 points until the solution is reworked.

We will also penalize attempts to game the tests.

For the quizzes, the automated tests merely check that the answer makes sense (i.e., that you have provided a number when number was expected, not that the number is actually correct).

Contact

If you want to ask something, the best time and place is obviously during the labs.

Technical questions

If you have a question regarding some of the topics or exercises from the labs, please, open an issue in this project on GitLab.

Do not e-mail your teacher directly. We will not respond to such e-mails.

If you want to ask a question regarding some of the graded task and you are not sure whether you are not also providing a solution, please, mark the issue as Confidential.

The reason for using this approach is twofold. You will use GitLab a bit more and it allows an efficient sharing of typical issues. That is, first search whether someone else have not asked the same question before.

Other questions

We generally prefer if you use GitLab Issues for everything as it makes the process simpler for us. Marking the issue as Confidential will ensure that only teachers can see it.

Contacting your lab teacher or lecturer directly is also possible but opening an Issue will typically shorten the response time.

There is also an e-mail alias teachers-nswi177@d3s.mff.cuni.cz for sending an e-mail to all teachers.

Special cases (late submissions etc.)

We will not accept late submissions for neither before-class quizzes or any of the assignments. Rationale: if you miss quizzes/assignments from one or two weeks, it should not affect your overall grade and we would save a lot of time that would be spent discussing the new deadlines etc. There will be about five to six weeks for the bigger assignments which should be plenty of time to plan ahead at the end of the semester.

But we know that it is not possible to plan for everything in advance. If you feel that your situation needs special care, please, contact as soon as possible to work out the details.

Be original …

… and do not cheat.

The purpose of this course is to get acquitted with Linux and learn how to work in it efficiently. Therefore, submitting solution copied from the Internet will not fulfill this goal. Also, this is not a team course – discussing issues or approaches to the solution is fine, submitting collective work as your own is not.

External code must be clearly marked as such, using external code without attribution (providing URL is usually good enough) is also considered cheating. If you decide to copy external code verbatim, state what part of your solution is copied and why. If you decide to transform external code into your solution, state what part of your solution was thus inspired and why.

When copying external code, think about what you are doing. Each assignment asks you to demonstrate certain skill, but may involve additional work that is needed simply to get things running. If the external code helps you with the latter and the demonstration remains your own, fine. If you are demonstrating skills of an external author, not fine.

To avoid misunderstanding, here is a brief example for a task where you are supposed to implement a program that checks whether number provided by the user is a prime.

If you copy the code from this page, you have not fulfilled the intent of the assignment: implement the algorithm yourself. As a matter of fact, this will result in failing the course on the spot.

If you copy the code from this page and use your own implementation for the prime decision, it will be okay (as long as you cite your source). Why? Because the copied code is not directly related to the intent of the assignment. You have made the assignment more difficult (and more practical too) and you have still showed the required skill of writing the prime-decision algorithm.

If you work on the code with your roommate, then you are not submitting your original work.

If you discuss how to solve this with your roommate and then each of you write your own implementation, it is fine.

When in doubt, ask us.