Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.
This repository was 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

Description

@frenzymadness

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ě?"

Activity

  1. kokes commented on Oct 3, 2019

    @kokes

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

  2. janpipek commented on Oct 25, 2019

    @janpipek
    Member

    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).

  3. janpipek commented on Oct 25, 2019

    @janpipek
    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čů :-/

  4. janpipek commented on Oct 25, 2019

    @janpipek
    Member

    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 join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions