Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Jakým způsobem zadávat úkoly v lekcích? #8

Open
frenzymadness opened this issue Oct 3, 2019 · 4 comments
Open

Jakým způsobem zadávat úkoly v lekcích? #8

frenzymadness opened this issue Oct 3, 2019 · 4 comments

Comments

@frenzymadness
Copy link
Collaborator

K interaktivitě a úkolům: Máme dvě možnosti:

  • Interaktivní buňky, které ověřují správnost vypracování zadání. Použito na workshopu Data trinity
  • Textové zadání bez ověření odpovědi s možností nabídnout skrytou odpověď pro kontrolu nebo live vypracování lektorem na lekci během práce účastníků (na začátečnickém kurzu používáme první možnost, na workshopech je více času, tak si to klidně spíchnu).

Z následujících důvodů se přihláním k možnosti č. 2:

  • Pokládat otázky a hledat cestu k odpovědi mi příjde více analytické než připravit mustr na vyplnění a kontrolovat zda je výsledek správný a ve správném tvaru.
  • Textové zadání a textová odpověď je snazší na přípravu a může obsahovat i více možností řešení (cesty, jak se k odpovědi dostat).
  • Neriskujeme, že test bude příliš konkrétní nebo příliš obecný.
  • Nemusíme nic implementovat (i když něco takového už možná existuje) a řešit, jak to naroubovat na naučse, doručit účastníkům a vysvětlovat, co tam magie dělá a znamená a odkud se bere. Skrýt textovou odpověď nebude tak složité a vystačí si s HTML/CSS přímo v notebooku.
  • K odpovědi na danou otázku může existovat mnoho cest a účastník si bude moci vybrat, zda odpověď vyčte z grafu, seznamu či tabulky. Pokud my použijeme něco jiného, bude stačit to jen v hlavě porovnat nebo najít rozdíl mezi tabulkami/obrázky.
  • Co když bude cílem úkolu zpracovat graf? Kontrola nějakým testem asi nebude nejsnazší a bude klást překážky kreativitě.
  • Cílem úkolu také může být něco nekonkrétního jako např.: najdi chybný sloupec v datech atp., což se nebude snadno kontrolovat.
  • Pokud nebude každý úkol nutně implementační, což v případě textového zadání a odpovědi být nemusí, můžeme jich mít více a proložit jimi hodinu. Např.: "Podívej se na výpis z předchozí buňky, je tam ještě něco špatně?"
@kokes
Copy link

kokes commented Oct 3, 2019

Taky se mi víc líbí ta dvojka, je to takové víc volné a nesvazuje to ruce nějakou implementací.

@janpipek
Copy link
Member

janpipek commented Oct 25, 2019

Podle mě to není úplně ve sporu a těžil bych z obojího.

  • U implementačních otázek je užitečné předpřipravit část kódu (protože to obvykle dost trvá, má-li člověk udělat všechno bez chyby). Stejně tak validace (která v našem kurzu byla udělaná jako prosté asserty, žádné technicky komplikované řešení) je užitečným nástrojem pro posluchače/-ky, aby si mohli svoje řešení rychle ověřit - to do značné míry sníží nároky na pomocné kouče (jejich počet).

  • Možnost položit obecnou otázku a nechat pracovat tvůrčím způsobem mi taky nepřijde špatné,V Trinity kurzu jsme to neměli a zpětně bych to určitě zařadil Základní kurzy PyLadies to mají řešené pěkně (se zakrytým oknem). Nevím ale, jak tohle konkrétně udělat v případě notebooků (bez custom CSS a JS volaného někde na začátku sešitu asi nijak).

@janpipek
Copy link
Member

Co se týče těch notebooků, tak tohle: https://github.com/pyvec/naucse/issues/26 vede směrem k realizaci skrytých oken na webu, ale neřeší to notebooky na počítačí posluchačů :-/

@janpipek
Copy link
Member

janpipek commented Oct 25, 2019

Skrze meta data zjevně (nebo se pletu?) bez custom JS nejde do DOM cokoliv přidávat.

Poor man's solution (které vlastně může vypadat docela cool a jde z něj udělat IPython magic):

def zakoduj_reseni(reseni: str) -> bytes:
    return base64.b64encode(reseni.encode())

def ukaz_reseni(encoded: bytes, typ: str = "code"):
    decoded = base64.b64decode(encoded).decode() 
    if typ == "code":
        print(decoded)
    elif typ in ["md", "markdown"]:
        from IPython.core.display import Markdown
        return Markdown(decoded)
    else:
        raise ValueEror(f"Neplatný typ obsahu: {typ}")
    
ukaz_reseni(b'aW1wb3J0IG51bXB5IGFzIG5wCmltcG9ydCBwYW5kYXMgYXMgcGQKaW1wb3J0IHBhbmRhc19wcm9maWxpbmcKaW1wb3J0IHNlYWJvcm4gYXMgc25z')

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants