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 cancelled except for the very first one where the course setup will be discussed. It is possible to use the time slot for consultations: please, arrange it beforehand.

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.
While this box will inform you about important things that you really should remember.

During labs we will discuss what you have learned (and possibly correct misunderstandings) and work on further examples to strengthen your knowledge.

During three of the labs (week 5, week 9 and week 14) there will be a graded assignment (probably taking place in the first 45 minutes of the lab). There will be also two homework assignments and these 5 assignments together will be used to determine the final grade (see below for details, please).

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.

Labs

The actual labs are taking place in IMPAKT (Trója) or Rotunda computer labs (entrance to SU2 is from the side corridor). 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 here 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 special lab 23bNSWI177x13 and come only for the graded assignments.

If you do not attend any of the first labs without prior notice, we will automatically move you to the 23bNSWI177x13 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).

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.

To this end there will be three on-site tests (assignments) during the semester where you will be required to complete a small task (usually the time limit will be 45 minutes). There will be also two homework assignments that you will complete on your own at home (there will be several weeks to finish them and for some of them it will be possible to use on-line resources for their completion).

These five assignments are such that they will test the essential knowledge related to this course. Passing four of them is required to pass the whole course.

Each of the assignments will contain an extension – its successful completion will determine the final grade.

It will be possible to retake one of the on-site tests during the examination period (May/June only).

Final grade criteria

The good grade (3) will be awarded if you pass at least 4 of the basic assignments. The very good grade (2) will be awarded you pass all the basic assignments and complete at least two of extensions. The excellent grade (1) will be awarded if you pass all the basic assignments and at least three of the extensions.

Assignment (test) details

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.

The on-site tests must be completed within the given time slot during the lab. The special lab 23bNSWI177x13 will be split into two halves to accommodate the higher number of students enrolled (exact details will be announced later).

For the on-site tasks you will be able to use only the school computer in the lab: working on private laptop is not allowed. The machine will have limited internet access: you should be able to use only the offline documentation (man pages) or certain cheat sheets from us.

The homework assignments must be submitted before the deadline, extensions are not possible.

Homework assignments will be usually bigger tasks where we expect that you will consult other on-line resources to complete them. It will possible to consult sites such as StackOverflow or even use tools such as Copilot, ChatGPT or similar to build your solution for these assignments. In these cases you must cite your sources and be able to explain how your solution works. Inability to describe this is equal to not submitting it at all.

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.

We will add all students to the Forum during the first week of the semester.

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

If you want to ask a question about some of the graded tasks (and you are not sure whether you are not also providing a solution) or a private question, 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: all of the homework tasks will be announced several weeks before their deadline. You should be able to plan around that even if you intend to go for a hike for a week in the middle 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 (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 (unless we explicitly allow it). 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 in doubt, ask us.