Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
public:pb071 [2017/02/20 16:36] Michal Zima [Pravidla odevzdání] typos |
public:pb071 [2018/02/24 19:10] (aktuální) |
||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
====== PB071: Principy nízkoúrovňového programování - Jaro 2017 ====== | ====== PB071: Principy nízkoúrovňového programování - Jaro 2017 ====== | ||
- | <note important>Stránka se připravuje na semesr Jaro 2017 a obsažené údaje se ještě mohou měnit.</note> | + | <note warning> |
+ | **Stránky předmětu byly přesunuty** | ||
+ | |||
+ | Oficiální web předmětu PB071 byl přesunut [[https://www.fi.muni.cz/pb071|zde]]. | ||
+ | Informace na této stránce existují pouze pro zachování historie. | ||
+ | |||
+ | **Tyto informace nemusí být aktuální a nelze je použít jako argument k opravě hodnocení | ||
+ | úkolů nebo ukončení předmětu.** | ||
+ | </note> | ||
===== Rozcestník ===== | ===== Rozcestník ===== | ||
Řádek 16: | Řádek 24: | ||
* **Konzultační hodiny přednášejícího**: | * **Konzultační hodiny přednášejícího**: | ||
- | * Petr Švenda: Úterý 13:00-14:50 místnost A406 | + | * Petr Švenda: Úterý 13:00-13:50 místnost A406 |
* **Konzultační hodiny studentských poradců**: | * **Konzultační hodiny studentských poradců**: | ||
* Hlavní počítačová hala, poblíž kopírky | * Hlavní počítačová hala, poblíž kopírky | ||
Řádek 28: | Řádek 36: | ||
===== Nástroje a jejich manuály ===== | ===== Nástroje a jejich manuály ===== | ||
- | Všetky tutoriály nájdete na adrese: [[https://www.fi.muni.cz/pb071/tutorials/|https://www.fi.muni.cz/pb071/tutorials/]]. | + | Všechny tutorialy naleznete na stránce: [[https://www.fi.muni.cz/pb071/tutorials/|https://www.fi.muni.cz/pb071/tutorials/]]. |
- | Tutoriály sú usporiadané v poradí, akom by ste ich mali absolvovať. | + | Tutorialy jsou v pořadí, v jakém byste je měli absolvovat |
- | -[[https://www.fi.muni.cz/pb071/tutorials/git/|Git]] - najprv by ste mali zvládnuť ovládanie nástroja git: vytvorenie repozitára na gitlabe, stiahnutie zadaní na cvičenia a odoslanie úlohy do repozitára. | + | -[[https://www.fi.muni.cz/pb071/tutorials/git/|Git]] - jako první doporučujeme seznámení s nástrojem git, vytvoření repozitáře ve službě gitlab a odeslání úlohy do repozitáře. |
- | -[[https://www.fi.muni.cz/pb071/tutorials/qt-creator/|Qt Creator]] - je IDE zvolené pre tento predmet pre jeho jednoduchosť. Mali by ste zvládnuť vytvoriť, zostaviť a odladiť projekt. V prípade, že už máte skúsenosti alebo preferujete používať IDE natívne Vášmu systému, môžete skočiť na [[https://www.fi.muni.cz/pb071/tutorials/visual-studio-2015/|Visual Studio tutoriál]] alebo pre Mac OS X na [[https://www.fi.muni.cz/pb071/tutorials/xcode/|Xcode tutoriál]]. | + | -[[https://www.fi.muni.cz/pb071/tutorials/qt-creator/|Qt Creator]] - je zvolené IDE v rámci tohoto předmětu. Měli byste zvládnout vytvořit, sestavit a odladit projekt. V případě, že již máte zkušenosti, nebo preferujete nativní IDE vašeho operačního systému, potom můžete rovou přeskočit na [[https://www.fi.muni.cz/pb071/tutorials/visual-studio-2015/|Visual Studio tutoriál]] pro Windows, anebo [[https://www.fi.muni.cz/pb071/tutorials/xcode/|Xcode tutoriál]] pro macOs. |
- | -[[https://www.fi.muni.cz/pb071/tutorials/memory-leaks/|Valgrind a Dr. Memory]] - Kontr vaše úlohy kontroluje nástrojom Valgrind počas behu, aby odchytil chyby týkajúce sa práce s pamäťou. Aby ste mohli aj vy testovať úlohy týmto spôsobom, tutoriál vás prevedie inštaláciou a používaním nástroja Valgrind alebo Dr. Memory. Valgrind je len pre Linux a staršie verzie Mac OS, preto na Windowse a macOS môžete používať ako náhradu Dr. Memory. | + | -[[https://www.fi.muni.cz/pb071/tutorials/memory-leaks/|Valgrind a Dr. Memory]] - Kontr spouští vaše úlohy s nástrojem Valgrind pro detekci chyb při práci s pamětí. Tento tutorial vám poskytne základní návod pro práci s Valgrind. Pro uživatele Windows a macOs, na kterých nelze Valgrind nainstalovat, je tutorial rozšířen o instalaci a použití Dr. Memory, který poskytuje obdobné funkce. |
- | -[[https://www.fi.muni.cz/pb071/tutorials/doxygen/|Doxygen]] - očakáva sa, že úlohy budete mať zdokumentované. Doxygen slúži na generáciu dokumentácie z komentárov v kóde. | + | -[[https://www.fi.muni.cz/pb071/tutorials/doxygen/|Doxygen]] - tento tutorial vám poskytne úvod k nástroji Doxygen, který budete používat pro dokumentování vašich zdrojových kódů |
- | -[[https://www.fi.muni.cz/pb071/tutorials/ssh/|SSH a AISA]] - na to, aby ste mohli odovzdať úlohu, je nutné sa pripojiť na stroj AISA pomocou SSH. | + | -[[https://www.fi.muni.cz/pb071/tutorials/ssh/|SSH a AISA]] - úkoly budete odevzdávat na stroji AISA, který je dostupný pouze pomocí protokolu SSH |
+ | |||
+ | <note important> | ||
+ | Pokud se rozhodnete používat svůj počítač nebo jiné IDE než QtCreator, nemusíme být schopni vám pomoci s případnými problémy. | ||
+ | </note> | ||
Shrnutí rozdílů [[:public:cvspython | C vs Python]] | Shrnutí rozdílů [[:public:cvspython | C vs Python]] | ||
+ | |||
===== Pravidla pro cvičení z PB071 ===== | ===== Pravidla pro cvičení z PB071 ===== | ||
Řádek 62: | Řádek 75: | ||
* Na cvičeních se pracuje primárně ve vývojovém prostředí QT Creator s využitím překladače gcc. Součástí výuky je i používání debuggeru a dalších vývojových nástrojů - jejich aktivní použití na cvičeních bude vyžadováno. Studenti ovládající dobře jiné vývojové IDE jej mohou použít s tím, že odevdávané domácí úkoly musí jít kompilovat pomocí gcc na aise (viz [[public:pb071#odevzdavani|Odevzdávání]]). | * Na cvičeních se pracuje primárně ve vývojovém prostředí QT Creator s využitím překladače gcc. Součástí výuky je i používání debuggeru a dalších vývojových nástrojů - jejich aktivní použití na cvičeních bude vyžadováno. Studenti ovládající dobře jiné vývojové IDE jej mohou použít s tím, že odevdávané domácí úkoly musí jít kompilovat pomocí gcc na aise (viz [[public:pb071#odevzdavani|Odevzdávání]]). | ||
+ | === Náhrada odpovědníku === | ||
+ | * pokud má student **omluvenou** neúčast na cvičení (na stud. odd.), může si odpovědník nahradit na některém z dalších cvičení nebo po domluvě s cvičícím | ||
+ | * odpovědník ze cvičení s **neomluvenou** neúčastí **nelze nahradit** | ||
+ | * student může nahradit celé cvičení (včetně odpovědníku) v jiné skupině, ale pouze ve **stejném týdnu**, ve kterém na cvičení chybí | ||
===== Domácí úkoly ===== | ===== Domácí úkoly ===== | ||
* Během semestru bude zadáno 5 domácích úkolů + 1 bonusový. | * Během semestru bude zadáno 5 domácích úkolů + 1 bonusový. | ||
Řádek 75: | Řádek 91: | ||
Body za konkrétní domácí úkol se skládají z následujících částí: | Body za konkrétní domácí úkol se skládají z následujících částí: | ||
* **Míra funkčnosti programu** po konci odevzdávání [0 ... 9 bodů] (počítá se dosažené maximum ze všech pokusů) | * **Míra funkčnosti programu** po konci odevzdávání [0 ... 9 bodů] (počítá se dosažené maximum ze všech pokusů) | ||
- | * **Bonus za kompletně funkční program** po konci odevzdávání [0 ... 3 bodů]. Pokud je příklad napoprvé odevzdán jako plně funkční a dodržuje [[public:pb071_konvencec|konvence o vhodném způsobu programování v jazyku C/C++]], tak student získává 3 body. Za každou opravu cvičícím s nalezenou chybou je z tohoto bonusu stržen 1 bod. Pokud není program po konci odevzdávání plně funkční, není tento bonus vůbec udělen. | + | * **Bonus za kompletně funkční program** po konci odevzdávání [0 ... 3 bodů]. Pokud je program napoprvé odevzdán plně funkční a dodržuje [[public:pb071_konvencec|konvence o vhodném způsobu programování v jazyku C/C++]], tak student získává 3 body. Za každé další odevzdání naostro je z tohoto bonusu stržen 1 bod. Pokud není program ani po konci odevzdávání plně funkční, není tento bonus vůbec udělen. |
- | * Body za korektní vypracování **bonusového rozšíření příkladu** [0 ... 4 body] | + | * **OD HW04**: Pokud student odevzdá plně funkční řešení **bez bonusu**, může odevzdat **jednu** verzi s bonusem bez stráty bonusu za kompletně funkční program. |
+ | * Body za korektní vypracování **bonusového rozšíření příkladu** [0 ... 4 body]. Tento bonus se uděluje pouze pokud je program plně funkční. | ||
* Body za **včasné odevzdání** alespoň 3 dny předem (72 hodin), [0 ... 2 body] | * Body za **včasné odevzdání** alespoň 3 dny předem (72 hodin), [0 ... 2 body] | ||
* za odevzdání //nanečisto// s hodnocením 3 bodů se udělí 1 bonusový bod, | * za odevzdání //nanečisto// s hodnocením 3 bodů se udělí 1 bonusový bod, | ||
- | * za odevzdání //naostro//, pokud prošly všechny testy nanečisto, s hodnocením //alespoň// 6 bodů dokopy se udělí 2 bonusové body | + | * za odevzdání //naostro//, pokud prošly všechny testy nanečisto, s hodnocením //alespoň// 6 bodů dohromady se udělí 2 bonusové body |
* Výjimečný bonus za velmi vtipné, originální, zvlášť efektivní nebo formou zpracování vzorné řešení [max. 2 body za příklad] | * Výjimečný bonus za velmi vtipné, originální, zvlášť efektivní nebo formou zpracování vzorné řešení [max. 2 body za příklad] | ||
Řádek 94: | Řádek 111: | ||
**Příklad 6:** Student odevzdá úkol napoprvé kompletně funkční program, pouze v bonusu za 2 body je chyba. Oprava se mu vyplatí, protože odevzdaním napodruhé ztrácí pouze jeden bod. Získává 9 + (3 - 1) + 2 = 13 bodů (z 14 maximálně možných). I kdyby bonus neopravil, tak získává 11 bodů, korektnost bonusu se do korektnosti celého příkladu nepočítá). | **Příklad 6:** Student odevzdá úkol napoprvé kompletně funkční program, pouze v bonusu za 2 body je chyba. Oprava se mu vyplatí, protože odevzdaním napodruhé ztrácí pouze jeden bod. Získává 9 + (3 - 1) + 2 = 13 bodů (z 14 maximálně možných). I kdyby bonus neopravil, tak získává 11 bodů, korektnost bonusu se do korektnosti celého příkladu nepočítá). | ||
- | **Příklad 7:** Student odevzdá úkol kompletně funkční program bez bonusu (i na několikátý pokus). Může se pokusit dodatečně odevzdat jednou verzi s bonusem. | + | **Příklad 7:** Student odevzdá kompletně funkční program bez bonusu (i na několikátý pokus). Může se pokusit dodatečně odevzdat jednou verzi s bonusem. Pokud odevzdá bonus s chybou, může odevzdat znovu, ale přijde o jeden bonusový bod za počet odevzdání. |
Odevzdáním úkolu //včas// ze dále myslí alespoň 72 hodin před koncem odevzdávání, //pozdě// méňe než 72 hodin. | Odevzdáním úkolu //včas// ze dále myslí alespoň 72 hodin před koncem odevzdávání, //pozdě// méňe než 72 hodin. | ||
Řádek 111: | Řádek 128: | ||
* Termín nejzazšího odevzdání úkolu je uveden vždy na stránce se zadáním úkolu. | * Termín nejzazšího odevzdání úkolu je uveden vždy na stránce se zadáním úkolu. | ||
* Každý program má v zadání uvedeno, jak se má jmenovat; tyto názvy je třeba dodržovat – vyučujícím to umožňuje kontrolu, včetně automatického odevzdání nanečisto. Speciálně si zkontrolujte velká a malá písmenka všech odevzdávaných souborů. | * Každý program má v zadání uvedeno, jak se má jmenovat; tyto názvy je třeba dodržovat – vyučujícím to umožňuje kontrolu, včetně automatického odevzdání nanečisto. Speciálně si zkontrolujte velká a malá písmenka všech odevzdávaných souborů. | ||
- | * Odevzdáním se rozumí uložení zdrojového programu do SVN repozitáře a spuštění skriptu (viz dále), který informuje vás i cvičícího o výsledku automatické kontroly. Pouhé uložení programu do repozitáře nestačí – vyučující neví, zda je to již konečný tvar programu a nemůže dost dobře pořád kontrolovat, zda už byl program odevzdán. | + | * Odevzdáním se rozumí uložení zdrojového programu do GIT repozitáře a spuštění skriptu (viz dále), který informuje vás i cvičícího o výsledku automatické kontroly. Pouhé uložení programu do repozitáře nestačí – vyučující neví, zda je to již konečný tvar programu a nemůže dost dobře pořád kontrolovat, zda už byl program odevzdán. |
* Zdrojový program nesmí při překladu výše uvedeným překladačem a parametry hlásit chyby ani varování. Pokud jsou při překladu nalezeny chyby nebo varování (používáme na překlad ''-Werror''), testy se vůbec nespouští a student přichází o jeden odevzdávací pokus. | * Zdrojový program nesmí při překladu výše uvedeným překladačem a parametry hlásit chyby ani varování. Pokud jsou při překladu nalezeny chyby nebo varování (používáme na překlad ''-Werror''), testy se vůbec nespouští a student přichází o jeden odevzdávací pokus. | ||
* Celý program musí být uložen v souborech se jmény výslovně požadovanými v zadání. Pokud je v zadání požadováno pouze vytvoření určité části programu, musíte pro ni sestavit svůj testovací program ''main'' pro vlastní odzkoušení, i když cvičící použije jiný testovací ''main''. | * Celý program musí být uložen v souborech se jmény výslovně požadovanými v zadání. Pokud je v zadání požadováno pouze vytvoření určité části programu, musíte pro ni sestavit svůj testovací program ''main'' pro vlastní odzkoušení, i když cvičící použije jiný testovací ''main''. | ||
Řádek 138: | Řádek 155: | ||
* //Visibility// ponechte na //private// a toto nastavení **nikdy neměnte**, jinak lze takové nastavení považovat za opisování! | * //Visibility// ponechte na //private// a toto nastavení **nikdy neměnte**, jinak lze takové nastavení považovat za opisování! | ||
* klikněte na //Create project// | * klikněte na //Create project// | ||
- | * povolte přistup k projektu skupině ''pb071'' | + | * povolte přistup k projektu uživateli ''kontr'' |
* klikněte na ozubené kolečko v pravém horním rohu a vyberte //Members// | * klikněte na ozubené kolečko v pravém horním rohu a vyberte //Members// | ||
- | * pod //Set a group to share// vyberte skupinu ''pb071'' a změnte //Max access level// na //Reporter// | + | * do pole //Search for members to update or invite// vpište ''kontr'' a změnte právo z //Guest// (výchozí) na //Reporter// |
- | * klikněte na //Share// | + | * klikněte na //Add to project// |
+ | * **můžete** přidat právo svému cvičícímu a poradcům | ||
* **dalším osobám přístup nepřidávejte**, takové nastavení lze považovat za opisování! | * **dalším osobám přístup nepřidávejte**, takové nastavení lze považovat za opisování! | ||
- | * základy používání repozitáře viz [[pb071:git|Git Tutoriál]] | + | * základy používání repozitáře viz [[https://www.fi.muni.cz/pb071/tutorials/git/|Git Tutoriál]] |
* vytvořený repozitář **nikdy** nemažte | * vytvořený repozitář **nikdy** nemažte | ||
* pokud potřebujete odstranit nějaký soubor, smažte jej v lokálním adresáři a proveďte ''commit'' a ''push'' | * pokud potřebujete odstranit nějaký soubor, smažte jej v lokálním adresáři a proveďte ''commit'' a ''push'' | ||
Řádek 189: | Řádek 207: | ||
- Maximálně 2 absence ve cvičení (více pouze na základě lékařského potvrzení atp; toto potvrzení musí být v požadovaném termínu odevzdáno na studijní oddělení FI). | - Maximálně 2 absence ve cvičení (více pouze na základě lékařského potvrzení atp; toto potvrzení musí být v požadovaném termínu odevzdáno na studijní oddělení FI). | ||
- Celkové bodové skóre z domácích úkolů, průběžného testu a testíků na cvičení ne horší než 65 bodů. Toto skóre ovlivňuje i známku ze zkoušky. | - Celkové bodové skóre z domácích úkolů, průběžného testu a testíků na cvičení ne horší než 65 bodů. Toto skóre ovlivňuje i známku ze zkoušky. | ||
+ | - Alespoň 4 domácí úkoly s kladným hodnocením odevzdání naostro (tj. více než 0 bodů). Do podmínky se počítá i bonusový úkol. | ||
- Uspěšné vypracování praktického zápočtového příkladu v rámci zápočtového týdne přímo na hodině v navštěvované seminární skupině. | - Uspěšné vypracování praktického zápočtového příkladu v rámci zápočtového týdne přímo na hodině v navštěvované seminární skupině. | ||