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

Labs and lectures

The focus of the course is on practical skills that can be gained only by working on a computer and trying things for yourself.

To our surprise we found out that too many students are unable to read technical documentation and learn by themselves.

In this course we put a great stress on self-study. It does not make sense to talk about things theoretically if you need to try them yourself. But everyone prefers a slightly different pace to digest things.

Therefore the course is organized in the following manner.

Lectures are meant as an extra time slot for consultation. Come if you have any questions or you want to discuss some topic in more detail. But they will not have the classical format of lecturer talking for 90 minutes with the result of students remembering about 10% of the talk.

Almost all work will be done as part of a preparatory self-study before the labs. We will provide you with a study materials (examples etc.) but you need to learn from them by yourself. The materials should contain all required information and a lot of examples and self-quizzes.

Text marked like this refers to extra information that is not crucial to understanding rest of the text but we find it useful/interesting enough to mention it.
And this box will inform you about potentially dangerous operations.

You will then submit a solution to a set of before-class assignments before actually coming to the labs.

In the labs we will give feedback to your solutions, do more examples and discuss what you have learned.

To further strengthen your knowledge, you will then do a set of post-class assignments to apply what you have learned during the labs.

We believe this system will make most of everybody time. You can organize your preparation as you see fit (some prepare to work in smaller chunks of 20 minutes here and there, some prefer an uninterrupted streak of several hours). We can spend the lab on interesting topics instead of trivial things that you can find on the Internet in various tutorials anyway. And by submitting the assignments before the lab, we can have a look at them during the labs and give you immediate feedback thus improving your knowledge while the topic is still fresh in your mind.

Labs

The actual labs are taking place in IMPAKT or Rotunda 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.

If you do not attend any of the first labs without prior notice, we will automatically move you to the virtual lab.

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).

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

Grading

Grading is described on a separate page.

Assignments

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.

Most of the assignments will be small programming tasks. For these tasks we will also provide automated tests so that you can verify that your solution works. There is a separate page with thorough explanation on how to read the test results.

Sometimes, the assignment will be a quiz where we require a textual answer (mostly explanation of some topic). 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 post-class assignments will be from Lab 01, first before-class assignments are for Lab 02.

Deadlines for the before-class assignments are always before your lab starts (ensure you go the the same lab you are enrolled in SIS, please). Deadlines for the after-class assignments are about 3 weeks after the lab so that you have plenty of time for further questions if you still have some doubts about the topic.

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.

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.

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 (typically, this involves long term illness or similar situations that we sincerely hope will not arise).

Be original …

… and do not cheat.

The purpose of this course is to get acquainted 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 (be it a real person or a product of a neural network or something similar), 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.