Tato stránka popisuje, jak budou vypadat testy na cvičeních a časem bude obsahovat i popis (velké) domácí úlohy. Malé domácí úlohy jsou zmíněné u příslušných cvičení.

Podívejte se, prosím, na stránku průvodce předmětem, kde najdete podrobnosti o tom, jak funguje hodnocení jako takové.

Testy na cvičení

Toto je rozpis testů na cvičení. Test proběhne na začátku cvičení (doba trvání testu je 45 minut).

Týden (datum) Téma
08 (7. dubna - 11. dubna) T1: Verzovací systém Git
12 (5. květa - 7. května + 15. května) T2: Skriptování v shellu
14 (19. května - 23. května) T3: Sestavovací nástroj make

Očekává se, že se dostavíte na cvičení, na které jste zapsáni.

Protože 8. května je státní svátek, písemka T2 bude pro čtvrteční cvičení odložena o týden. Víme, že to není nejlepší řešení, ale rozvrh pro tenhle semestr v podstatě nemá žádný celý týden (tj. kdy probíhá výuka ve všech dnech) v druhé polovině semestru.

Test se bude psát na školních počítačích. Ujistěte se, že se tam můžete přihlásit a že máte vše pohodlně nastavené.

Vaše řešení bude odevzdáno prostřednictvím GitLabu nebo jiného Gitového repozitáře: ujistěte se, že umíte provést klonování prostřednictvím příkazové řádky.

Můžete používat naše webové stránky, off-line manuálové stránky a můžete nahlížet do svých poznámek a řešení příkladů, které jsou součástí našich materiálů.

Nesmíte používat žádná jiná zařízení (mobilní telefony, vlastní notebooky atd.), nahlížet do jiných on-line zdrojů (stroje budou mít stejně omezený přístup k internetu) ani sdělovat své řešení ostatním studentům (a naopak).

Jinými slovy, testy na cvičení vyžadují, abyste dokázali řešit úkoly samostatně pouze s pomocí technické dokumentace.

Jakýkoli pokus o obejití výše uvedených pravidel (např. pokus o vyhledávání na StackOverflow na mobilním telefonu) znamená okamžité neúspěšné ukončení předmětu.

Pokud zadání nerozumíte, můžete samozřejmě požádat učitele o dovysvětlení. Pokud je zřejmé, že se ubíráte správným směrem a potřebujete jen trochu postrčit, můžeme vám i lehce poradit.

Prosím, podívejte se též na obecné zásady v průvodci předmětem.

Poznámky k úloze na Git CLI

Informace pro zapsané na speciální úterní cvičení 24bNSWI177x15.

Pokud váš SIS/GitLab-ový login začíná na [a-j], přijďte, prosím, v 8.50; pokud váš login začíná na [k-z], prosím, přijďte v 9.40.

Aktualizace: zadání písemky dostanete pravděpodobně vytištěné. Prosím, ozvěte se nám včas (alespoň týden dopředu), pokud by vám to nějak komplikovalo situaci (např. pokud potřebujete větší písmo). Děkujeme!

Očekáváme, že zvládnete následující úlohy pomocí Gitu na příkazové řádce (některé budete muset provádět na vzdáleném stroji linux.ms.mff.cuni.cz).

  • Nastavit si prostředí Gitu (autor a e-mail)
  • Naklonovat repozitář (z gitolite3@linux.ms.mff.cuni.cz nebo z GitLabu nebo obecně přes HTTPS)
  • Vytvořit commit
  • Vytvořit větev
  • Přepínat mezi větvemi
  • Zmergovat větev (a vyřešit případné konflikty)
  • Nahrát změny (větve) na server

Ujistěte se, že můžete klonovat z gitolite3@linux.ms.mff.cuni.cz když jste na školních počítačích. Bude dostupná jen autentikace veřejným klíčem (tj. nahrajte vaše klíče do keys/key.[0-9].pub souborů ve vašem repozitáři, jak je popsáno na cvičení 05, ještě před zkouškou).

Abyste ověřili, že vám to funguje, projděte si následující kroky, prosím.

Spusťte ssh -o ForwardAgent=no LOGIN@u-pl1.ms.mff.cuni.cz.

  • Tohle se bude ptát na vaše SISové heslo a přihlásí vás na u-pl1.ms.
  • u-pl1.ms je v podstatě stejné jako libovolný počítač v učebně (tj. stejné soubory v ~).

Spusťte ssh gitolite3@linux.ms.mff.cuni.cz.

  • Tohle se zkusí přihlásit po SSH s použitím vašich klíčů na u-pl1 k repozitářům Gitolite.

  • Měli byste vidět na výstupu něco podobného. Důležitá je ta část zprávy, kde vás Gitolite pozdravil vaším SISovým loginem (ačkoliv jste se přihlašovali jako uživatel gitolite3); seznam repozitářů se může lišit.

    PTY allocation request failed on channel 0
    hello LOGIN, this is gitolite3@linux running gitolite3 3.6.13-5.fc41 on git 2.48.1
    
    R   lab05-LOGIN
    R   lab06-group-sum-ng
    
  • Pokud vidíte následující, vaše klíče nejsou v pořádku nastaveny.

    gitolite3@linux.ms.mff.cuni.cz: Permission denied (publickey,password).
    

Klidně si URL gitolite3@linux.ms.mff.cuni.cz uložte někde na místní disk do vašeho $HOME, abyste ho nemuseli ručně opisovat během písemky.

Dokonce si můžete nastavit alias ve vašem ~/.ssh/config nějak takto, což vám umožní klonovat pomocí git clone exam:lab05-LOGIN.

Host exam
    Hostname linux.ms.mff.cuni.cz
    User gitolite3

Písemka se zaměřuje na práci s Gitem. Cílem nebude napsat celý skript ale budete pracovat s repozitářem, ve kterém bude následující skript pro tisk jednoduchý sloupcových grafů v terminálu. Budete v něm ale dělat drobné změny (třeba opravy překlepů), na správné místo v kódu vás ale vždy navedeme.

import argparse
import sys

def parse_config():
    args = argparse.ArgumentParser(description='Console bar plot')
    args.add_argument('--columns', default=60, type=int, metavar='N')
    return args.parse_args()

def load_input(inp):
    values = []
    for line_raw in inp:
        line = line_raw.strip()
        if line.startswith('#') or not line:
            continue
        try:
            val = float(line)
        except ValueError:
            print(f"WARNING: ignoring invalid line '{line}'.", file=sys.stderr)
            continue
        values.append(val)
    return values

def print_barplot(values, scale, symbol):
    for val in values:
        print(symbol * round(val / scale))

def main():
    config = parse_config()
    values = load_input(sys.stdin)
    if not values:
        sys.exit(0)
    coef = max(values) / config.columns
    print_barplot(values, coef, '#')

if __name__ == '__main__':
    main()

Kvízy

Kvízy budou na cvičeních 02, 03, 04, 05, 06 a 07.

Malé domácí úkoly