Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
public:pb071_2011 [2011/02/28 20:49]
Petr Svenda [Způsob odevzdání]
public:pb071_2011 [2018/02/24 19:10] (aktuální)
Řádek 1: Řádek 1:
 + ​====== PB071: Programování v jazyce C ======
  
 +Opravy po začátku semestru jsou zde uvedeny a v  __textu podtrženy__ (pokud je to možné), pokud jde o změnu informací pro zakončení předmětu:
 +  * zatím nic
 +
 +===== Rozcestník =====
 +Materiály z přednášek,​ detaily k [[public:​pb071_cviceni|náplni jednotlivých cvičení, zadání domácích úkolů]]
 +
 +Detaily k [[public:​pb071#​odevzdani_domacich_ukolu|odevzdávání a hodnocení domácích úkolů]]
 +
 +Krátký souhrn [[public:​pb161_konvence|konvencí pro programování v C/​C++]] ​
 +
 +===== Konzultační hodiny =====
 +
 +  * Nebojte se v hojné míře konzultovat problémy s domácími úkoly nebo výukou s učiteli předmětu.
 +  * Využijte primárně možnost konzultace problémů přímo na hodině nebo od studentských poradců (viz. níže). ​
 +
 +  * **Konzultační hodiny přednášejícího**: ​
 +    * Pondělí 13-13:50, místnost B420, Petr Švenda
 +  * **Konzultační hodiny studentských poradců**:
 +    * bude upřesněno
 +    * Pondělí 13:00 - 14:00 v hlavní místnosti počítačové haly, v části vyhrazené pro notebooky, u sloupu (2. řada stolů nalevo od vstupu, nebo někde poblíž, je-li plno), [[https://​is.muni.cz/​auth/​osoba/​324910|Jan Juráň]]
 +
 +===== Nástroje a jejich manuály =====
 +
 +Základ [[public:​pb071_eclipse|použití IDE Eclipse ve Windows]] a [[public:​pb071_eclipse_linux|použití Eclipse v Linuxu]].  ​
 +
 +Základ ladění (debugging) [[public:​pb071_eclipse#​debugging| v IDE Eclipse]]
 +
 +Základ použití dokumentačního programu [[public:​doxygen|Doxygen]]
 +
 +Základ použití [[public:​svn| verzovacího systému SVN]]
 +
 +Základ použití [[public:​QTCreator| IDE QT Creator]], základ ladění (debugging) [[public:​QTCreator#​debugging| v IDE QT]]
 +
 +Základ [[http://​www.fi.muni.cz/​~xsvenda/​VS_aisa_cpp.html|použití IDE Visual Studio 2005]] a [[http://​www.fi.muni.cz/​~xsvenda/​VS_debugging.html|ladění ve Visual Studiu 2005]] //​(použitelné s drobnými změnami i pro VS 2010, pozor, nepoužívá defaultně pro překlad gcc a toleruje nestandardizované rozšíření) //
 +
 +
 +===== Pravidla pro cvičení z PB071 =====
 +
 +**Verze platná od jarního semestru 2011 (21.2.2011)**
 +
 +Shrnutí nejdůležitějších bodů:
 +  * Cvičení jsou povinná, povoleny jsou dvě neomluvené (na studijním oddělení) neúčasti. ​
 +  * Základní domácí úkoly je možné odevzdávat opakovaně, ale max. 3x a max. do 4 týdnů po zadání úkolu. ​
 +  * Odevzdání úkolu je nutné oznámit vyučujícímu pomocí spuštění speciálního skriptu (detaily viz. [[public:​pb071#​pravidla_odevzdani|pravidla odevzdávání]],​ odevzdání naostro).  ​
 +  * Úkoly lze odevzdávat definovaným způsobem "​nanečisto"​. Student získá automaticky výsledky některých hodnotících testů, aniž by přišel o body.  ​
 +  * Po 6. týdnu proběhne bodovaný průběžný test (namísto přednášky v D3, odpovědní testové archy).
 +  * Zápočet je udělen za docházku a souhrnný zisk alespoň **40 bodů** za domácí úkoly a průběžný test.
 +  * Pro připuštění ke zkoušce je nutné získat zápočet.  ​
 +  * Zkoušku lze získat po získání zápočtu, **vypracování zkouškového příkladu** a souhrnný zisk alespoň **100 bodů** za domácí úkoly, průběžný test, závěrečný příklad a zkouškový test.
 +  * Na cvičeních bude pro psaní programů jako základní IDE využíván Eclipse s C/C++ rozšířením. Student může využívat jiné IDE (např. QT Creator, Visual Studio...), pokud jej preferuje. Domácí úlohy úlohy se ale **odevzdávají a kontrolují na Aise s využitím překladače gcc** (viz. [[public:​pb071#​zpusob_odevzdani|způsob odevzdávání]]).
 +===== Průběh cvičení =====
 +
 +  * Detaily k jednotlivým cvičením včetně zadání domácích úkolů jsou dostupné [[public:​pb071_cviceni|zde]].
 +  * V prvním týdnu se mají studenti seznámit s překladačem jazyka C pod operačním systémem Unix na příkazové řádce, v dalších pak překladem s využitím prostředí Eclipse, způsob zadávání a odevzdávání domácích úkolů a detaily hodnocení. ​
 +  * Na cvičeních je vyžadována aktivní práce na řešeném domácím úkolu. Cvičící aktivně poskytuje pomoc při řešení případných problémů a upozorňuje na použití dobrých programovacích návyků. Využijte přítomnost cvičícího pro konzultaci problémů!
 +  * Na cvičeních se pracuje primárně ve vývojovém prostředí Eclipse 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í]]). ​
 +
 +
 +===== Domácí úkoly =====
 +  * Během semestru bude zadáno 5 domácích úkolů.
 +  * Od 2. týdne studenti samostatně vytvářejí zadané programy (domácí úkoly). Program se obvykle nepodaří beze zbytku dokončit během cvičení; je proto nutno program odevzdat do 2 týdnů od zadání s jednou dodatečnou opravou v dalším týdnu (přesné datum uvedeno u zadání příkladu). Poslední takový program bude zadán v tom týdnu, který s ohledem na termín umožní odevzdání v posledním (zápočtovém) týdnu. ​
 +  * Součástí tvorby programu je také jeho důkladné otestování. Doporučujeme nechat si program otestovat jinou osobou (kolegou), kterého posadíte do role uživatele. V cizím programu se snáze odhalí chyba, než když ho testujete sám - při testování vlastního programu myslíme stejně jako při jeho vytváření.
 +  * Programy se píší zásadně v jazyce ISO/IEC ISO/IEC 9899:1999 (C99) bez nenormalizovaných rozšíření. ​  
 +  * Programy musí zachovávat požadovaný způsob komunikace s uživatelem (formu vstupu a výstupu, názvy souborů, parametry funkcí včetně main apod.) Program nesmí vyžadovat jiná vstupní data nebo parametry příkazového řádku, než je uvedeno v zadání.
 +
 +
 +===== Bodování domácích úkolů =====
 +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 ... 6 bodů] (__počítá se dosažené maximum ze všech pokusů__)
 +    * **Bonus za kompletně funkční program** po konci odevzdávání [0 ... 6 bodů]. Pokud je příklad napoprvé odevzdán jako plně funkční a dodržuje [[public:​pb161_konvence|konvence o vhodném způsobu programování v jazyku C/C++]], tak student získává 6 bodů. Za každou opravu cvičícím s nalezenou chybou jsou z tohoto bonus strženy 2 body. Pokud není program 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]
 +    * Výjimečný bonus za velmi vtipné, originální,​ zvlášť efektivní nebo formou zpracování vzorné řešení [max. 2 body za příklad]
 +
 +**Příklad 1:** Student odevzdá úkol napoprvé kompletně funkční program bez bonusového rozšíření. Získává 6 + 6 = 12 bodů.
 +
 +**Příklad 2:** Student odevzdá program s chybou, opraví ji a při druhém odevzdání je program plně funkční. Získává 6 + (6 - 2) = 10 bodů.
 +
 +**Příklad 3:** Student odevzdá program s chybou, opraví ji, ale i při druhém odevzdání je v programu přítomná chyba. Další opravu již z důvodu konce odevzdávací/​opravné periody nestihne. Program tak není plně funkční (řekněme že nefunguje jeden ze tří testů). Získává (6 - 1x2) + 0 = 4 body.
 +
 +**Příklad 4:** Student odevzdá program s chybou těsně před koncem 2 týdenní odevzdávací periody. Cvičící vyhodnotí a student má 1 týden na opravu. V programu ale stále zůstane chyba. Další opravu student již odevzdávat nemůže. Program tak není plně funkční (řekněme že nefungují dva ze tří testů). Získává (6 - 2x2) + 0 = 2 body.
 +
 +**Příklad 5:** Student odevzdá program s chybou těsně před koncem 2 týdenní odevzdávací periody. Cvičící vyhodnotí a student má 1 týden na opravu. Opravený program je plně funkční. Získává 6 + (6 - 2) = 10 bodů. Student ale riskoval výrazně méně bodů, viz. příklad 4.
 +
 +**Příklad 6:** Student odevzdá úkol napoprvé kompletně funkční program, pouze v bonusu za 2 body je chyba. Oprava se mu nevyplatí, protože odevzdaním napodruhé stejně ztrácí 2 body. Získává 6 + 6 = 12 bodů (z 14 maximálně možných, korektnost bonusu se do korektnosti celého příkladu nepočítá).
 +
 +===== Odevzdání domácích úkolů =====
 +<note important>​Bude doplněno při zadání prvního domácého úkolu</​note>​
 +
 +==== Pravidla odevzdání ====
 +<note warning>​Aktualizace pro popis odevdávání přes SVN</​note>​
 +  * Počínaje 1. úkolem se domácí úkoly odevzdávají. ​
 +  * 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 velke 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. ​
 +  * Zdrojový program nesmí při překladu výše uvedeným překladačem a parametry hlásit chyby ani varování.
 +  * 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.
 +  * Nespoléhejte na úkony prováděné s vašimi funkcemi/​proměnnými ve vámi dodaném mainu (např. inicializace proměnných apod.). Při opravě bude typicky použit jiný main a tyto úkony se neprovedou!
 +  * Odpadne-li cvičení (např. pro státem uznaný svátek), studenti zpracují příklad na ně plánovaný samostatně v termínu, jako kdyby cvičení neodpadlo. Příklady, které měly být do dne odpadlého cvičení odevzdány, je třeba odevzdat nejpozději následující pracovní den.
 +
 +**Pracujte samostatně!**
 +
 +  * Příklady musí student zpracovat samostatně. Tento požadavek nevylučuje možnost společného posouzení metody řešení (algoritmu) s jinými studenty, ale samotné naprogramování musí být vlastní prací. Bude-li zjištěno okopírování zdrojového textu (byť jenom částečné) od jiného studenta nebo z jiného zdroje, bude (u obou studentů) oceněno až 10 trestnými body resp. projednáním u disciplinární komise, program bude považován za chybný a vrácen k novému naprogramování. Podobně bude postiženo odevzdání programu vytvořeného zcela nebo zčásti další osobou (třeba získanou z internetu). Vyučující mají k dispozici prostředky,​ jak zjistit, zda program není nadměrně podobný programu jiného studenta (včetně programů odevzdaných v předchozích semestrech)! ​
 +  * Neposkytujte své programy "jako inspiraci"​ jiným studentům, mnohokrát se stalo, že student takto získaný program (s mírnými změnami) opsal a odevzdal a za podvod byl postižen i původní autor!
 +
 +==== Založení odevzdávacího SVN repozitáře ====
 +  * Založte si SVN repozitář na Aise
 +    * https://​fadmin.fi.muni.cz/​auth/​
 +    * Počítačová síť -> Subversion účet
 +    * Přidat nový repozitář -> např. login_pb071
 +  * Přidejte uživatele //xtoth1// s právem číst (read)
 +  * Vytvořte si na lokálním PC adresář //PB071// s podadresáři hw01, hw02,​...,​hw05
 +  * Spojte adresář PB071 s SVN repozitářem (viz. [[:​public:​svn|návod SVN]])
 +  * Vytvořte soubor //​.kontr_svn//​ ve svém home na aise (~/​.kontr_svn) a napište do něj cestu k vašemu repozitáři (např. https://​svn.fi.muni.cz/​fi/​xsvenda_pb071/​)
 +
 +==== Způsob odevzdání ====
 +Vypracovaný úkol lze odevzdat **"​nanečisto"​** (pokusně, není bodováno) a **"​naostro"​** (v případě nalezení chyb může dojít ke stržení bodů). Nanečisto lze zkoušet odevzdávat příklad bez omezení. Naostro lze příklad odevzdávat pouze v omezenou dobu a s omezeným počtem pokusů (viz. níže). Zde předpokládáme,​ že máte korektně vytvořen SVN repozitář,​ nastavenu cestu k němu atp. (viz. [[:​public:​pb071#​zalozeni_odevzdavaciho_svn_repozitare|založení odevzdávacího repozitáře]]) ​
 +  * **Odevzdání nanečisto:​** ​
 +    * Vypracovaný domácí úkol lze odevzdat "​nanečisto"​ a v případě zjištění problémů dopracovat. ​
 +    * Při odevdávání nanečisto **nepíšete** svému cvičícímu žádný mail ani mu jinak neoznamujete odevzdání. ​
 +    * __Odevzdání nanečisto provedete tímto způsobem:​__
 +      * Nahrajte odevzdávané soubory do vašeho repozitáře (např. https://​svn.fi.muni.cz/​fi/​xsvenda_pb071/​hw01/​myBase64.c)
 +      * Spusťte skript /​home/​xtoth1/​odevzdavam_nanecisto nazev_prikladu (např. '/​home/​xtoth1/​odevzdavam_nanecisto hw01')
 +      * Za cca 15 minut obdržíte na **fakultní** email (email ve tvaru login@fi.muni.cz) vyhodnocení vašeho programu. ​
 +    * **Důležité:​** Fakt, že vám odevzdání nanečisto neukazuje žádnou chybu neznamená, že ji váš program neobsahuje. Tato chyba může být zachycena rozšířenou sadou testů při odevzdání naostro a může vést ke stržení bodů. Odevzdání nanečisto slouží jako pomocná doplňková služba a nenahrazuje dostatečné otestování odevzdávaného programu. Speciálně nelze uplatňovat argument, že odevzdání nanečisto chybu nenalezlo a tak by body neměly být strženy.
 +  *  **Odevzdání naostro:​** ​
 +    * Všechny odevzdávané programy musí být přeloženy a zkontrolovány na počítači Aisa, neboť na něm je bude kontrolovat i vyučující. ​
 +    * Pro překlad se používá překladač gcc -std=c99 -pedantic -Wall -Wextra -Werror. ​
 +    * Odevzdání naostro - spuštění skriptu:
 +      * Nahrajte odevzdávané soubory do vašeho repozitáře (např. https://​svn.fi.muni.cz/​fi/​xsvenda_pb071/​hw01/​myBase64.c)
 +      * Spusťte skript /​home/​xtoth1/​odevzdavam nazev_prikladu (např. '/​home/​xtoth1/​odevzdavam hw01')
 +      * Za cca 15 minut obdržíte na **fakultní** email (email ve tvaru login@fi.muni.cz) vyhodnocení vašeho programu. Další mail obdrží i váš cvičíci a na jeho základě vám budou přiděleny body do poznámkového bloku.
 +    * __Pokud je nalezen problém, student jej znovu odevzdává až ve chvíli, kdy je přes poznámkový blok zadáno vyhodnocení předchozího pokusu.__
 +    * Vypracovaný nebo opravený úkol lze odevzdat maximálně 3x.
 +    * Cvičící má na opravu nahlášeného odevzdaného řešení úkolu 1 týden (typicky ale bude opraveno dříve). ​  
 +    * Odevzdávání úkolu s možností opravy je možné provádět pouze do 2 týdnů od jeho zadání (přesné datum je uvedeno u zadání úkolu, může být prodlouženo). Poslední týden je povoleno odevzdání pouze jediného odevdání (oprava nebo první odevdání). Toto omezení může v kombinaci s týdnem na opravu cvičícím omezit maximální počet odevzdání opraveného úkolu. Např. pokud odevzdáte poprvé příklad těsně před vypršením 2 týdenního limitu, budete příklad moci opravovat pouze jednou. ​
 +    * Pokud je cvičícím úkol shledán zcela v pořádku, jsou uděleny do poznámkového bloku zapsány body. Pokud není úkol do uplynutí 3 týdenního intervalu v pořádku, přidělí cvičící pouze část bodů odpovídající míře fungování aktuálního stavu programu. ​
 +    * Po cca 5 týdnech od zadání úkolu dochází ke zveřejnění ukázkového řešení příkladu.
 +  * Pokud vyučující nalezne v opravovaném programu chyby, oznámí je studentovi (obvykle mailem a zápisem do poznámkových bloků). Do poznámkového bloku zapíše stav odevzdání příkladu včetně krátkého popisu zjištěného problému. Např. "při záporných datech havaruje na výpočtu odmocniny." ​
 +  * K některým složitějším cvičením mají studenti k dispozici testovací data, u všech cvičení si mohou na vzorovém řešení ověřit, jak by měl program pracovat. Vzorová řešení jsou studentům k dispozici v přeloženém tvaru, po uplynutí doby na odevzdávání bude zveřejněno i ukázkové řešení úkolu.
 +
 +**Ukázkový případ**
 +  - Student vypracuje příklad a odevzdá "​nanečisto"​.
 +  - Výsledky odevzdání nanečisto ukazují na chybu. Student chybu opraví, ale zatím neztrácí žádné body. Další odevzdání nanečisto již neukazuje na žádnou další chybu.
 +  - Student odevzdává "​naostro"​ a spouští skript informující cvičícího.
 +  - Cvičící nalezne rozšířenou sadou testů další chybu, vyplní studentovi do poznámkového bloku snížení získatelných bodů a pošle studentovi popis nalezené chyby.
 +  - Student chybu opraví a znovu odevzdává "​naostro"​ (předtím může využít pro kontrolu opět odevzdání nanečisto). ​
 +  - Cvičící nenalezne další chybu a zapisuje studentovi do poznámkového bloku záznam se získanými body.  ​
 +
 +
 +===== Zápočet =====
 +
 +Na základě absolvování cvičení dostává student od svého vyučujícího zápočet.
 +Podmínkou pro bezproblémové získání zápočtu je splnění následujících kritérií:
 +
 +  - 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ů a průběžného testu ne horší než 40 bodů. Toto skóre ovlivňuje i známku ze zkoušky.
 +
 +  * Jestliže student uvedené požadavky nesplní - zejména, pokud byl uvedený limit překročen jen málo - může mu vyučující umožnit získání zápočtu po splnění dodatečných požadavků (například vypracování dalšího příkladu, dodatečné vypracování ​ nepovinného příkladu nebo přepracování některého odevzdaného a odsouhlaseného příkladu znovu jiným způsobem).
 +  * Práci studenta ve cvičení kontroluje a zápočty uděluje výhradně vyučující jeho seminární skupiny. Proti jeho rozhodnutí se lze odvolat k přednášejícímu.
 +  * Zápočet se de facto dává i studentům, kteří předmět končí zkouškou; v tomto případě se však nezapisuje běžným způsobem do IS, ale pouze se provede zápis do poznámkového bloku. ​
 +
 +
 +
 +===== Bodové rozložení předmětu =====
 +
 +Tento semestr je zavedeno následující bodování předmětu. Tabulka představuje přehled bodového rozložení:​
 +
 +^ Způsob získání bodů ^ Celkový počet bodů ^
 +| Povinné domácí úkoly | 5*12 = 60 |
 +| Extra body za rozšířené varianty zadání | 10 |
 +| Další extra body za aktivitu, nalezení chyby v zadaní, etc... | neomezeno |
 +| - | - |
 +| Průběžný test | 20 |
 +| - | - |
 +| Závěrečný příklad | 15 - 30 |
 +| Závěrečný test | 80 |
 +
 +Za celkový maximální počet bodů (100% bodů) se považuje 200 bodů. Pro body ze cvičení je proto 100% ziskem 60 bodů.
 +Za korektní odevzdání pouze povinných příkladů bez bonusů je možné získat 30 až 60 bodů  = cca. 45-90%.
 +
 +Zápočet je udělen za zisk alespoň 40 bodů (součet Domácí úkoly + Průběžný test)
 +
 +^ Počet získaných bodů ^ Hodnocení ^
 +| >= 180 bodů | A |
 +| >= 160 bodů | B |
 +| >= 140 bodů | C |
 +| >= 120 bodů | D |
 +| >= 100 bodů | E |
 +| < 100 bodů | F |
 +| >= 40 bodů | Započteno |
QR Code
QR Code public:pb071_2011 (generated for current page)