# Reševanje domačih nalog

Pri predmetu **Numerične metode** vsak teden dobite domačo nalogo v sistemu [moj.ladisk.si](https://moj.ladisk.si/). Naloge so dokumenti Jupyter Notebook (`.ipynb`), rešujete jih v okolju [Visual Studio Code](https://code.visualstudio.com/download). Rezultati se sproti pošiljajo v sistem in se samodejno preverjajo, zato med reševanjem potrebujete povezavo s spletom.

:::{note}
Pred prvo nalogo potrebujete nameščen Python s knjižnicami, glejte [Namestitev Python-a](python_install.md).
:::

Spodaj si lahko ogledate video navodilo za reševanje.

:::{youtube} wedX7AdORvY
:width: 100%
:::

## Postopek

- Datoteke naloge prenesete iz sistema moj.ladisk.si in jih shranite v obliki arhiva `.zip`. Če vaš brskalnik datoteki ne doda končnice `.zip`, to storite sami.
- Arhiv **v celoti razpakirate v mapo na svojem računalniku**. V njem so dokument `.ipynb` z nalogo, priložena slika, datoteka `sync.py` in morebitne druge priložene datoteke.
- **V mapi z razpakiranimi datotekami** odprete Visual Studio Code.
- Celice v datoteki `.ipynb` **poganjate po vrsti**, tudi celice povsem na vrhu datoteke.
- Odgovor na posamezno vprašanje oddate s funkcijo `poslji`, ki je pripravljena v celici pri vsakem vprašanju.

:::{important}
Naloge ne odpirajte neposredno iz arhiva `.zip` in ne prenesite samo dokumenta `.ipynb`. Prva celica naloge prek datoteke `sync.py` prenese modul s funkcijo `poslji`, s katero oddajate odgovore. Če te datoteke ni v isti mapi kot naloga, se celica ustavi z napako in odgovorov ne morete oddati.
:::

Ob vsaki oddaji vam sistem izpiše, ali je bil odgovor pravilen: pri pravilnem še trenutno povprečje naloge v odstotkih, pri napačnem število preostalih poskusov. Ko poskusov zmanjka, vprašanja ni več mogoče oddati.

## Pregled odgovora pred oddajo

Funkcija `poslji` odgovor pošlje v preverjanje na strežnik. Ali ste izračunali tisto, kar navodilo zahteva, lahko že prej preverite sami, npr. tako, da si odgovor pred oddajo izpišete in ga pogledate.

Odgovor na vsako vprašanje je shranjen v svoji spremenljivki, pod vsakim vprašanjem pa je pripravljena celica, ki to spremenljivko pošlje na strežnik. Nad to celico lahko kadarkoli dodate svojo kodo z izpisom, da odgovor sami pregledate, preden ga oddate. Na primer za vprašanje s številko 1 bi to izgledalo takole:

```python
# vaša celica: poglejte, kaj boste poslali
print(odgovor1)
```

```python
# celica iz naloge: oddaja odgovora
poslji(odgovor1, ...)
```

Enako lahko naredite pri katerem koli vprašanju.

Pri izpisu preverite:

- ali je odgovor takšne vrste, kot jo zahteva navodilo (število, polje `numpy`, seznam, niz),
- ali je velikostni red smiseln za količino, ki jo računate,
- ali so enote tiste, ki jih zahteva navodilo (pogosta zamenjava so stopinje namesto radianov),
- ali ima polje pričakovano obliko.

Izpišete si lahko tudi vmesne rezultate in tako najdete, kje se je račun razšel s pričakovanim.

:::{tip}
Izpis odgovora ne porabi poskusa, oddaja s `poslji` pa ga. Pregled se zato vedno splača, še posebej, če ste nekaj poskusov že porabili.
:::

## Pričakovan odgovor na strani naloge

Na strani naloge v sistemu moj.ladisk.si je pri vsakem vprašanju v stolpcu **Odgovor** prikazan vaš zadnji oddani odgovor. V stolpcu **Pričakovan odgovor** se pokaže pravilen odgovor, in sicer takrat, ko na vprašanje odgovorite pravilno ali ko porabite vse poskuse. Po zaprtju okna za reševanje so vidni pričakovani odgovori vseh vprašanj.

Pri obeh odgovorih sta dva gumba:

- puščica navzdol razpre celoten zapis odgovora,
- ikona za kopiranje odgovor prekopira v obliki kode Python, tako da ga lahko prilepite naravnost v zvezek.

```{figure} ../_static/odgovor_kopiranje.png
:alt: Stolpca Odgovor in Pričakovan odgovor, pri vsakem puščica za razpiranje in ikona za kopiranje

Oba stolpca na strani naloge. Označena je ikona, ki pričakovan odgovor kopira kot kodo Python.
```

Kopiranje je uporabno, kadar rezultat enega vprašanja potrebujete pri naslednjih. Tudi če pravilnega odgovora niste našli sami, lahko tako preverite, kje se vaš rezultat razlikuje od pričakovanega, in nadaljujete s pravo vrednostjo.

:::{note}
Pri daljših poljih `numpy` sistem ne hrani celotnega odgovora, ampak samo vzorec: polje je sploščeno in ohranjen je vsak N-ti element, poleg njega pa oblika polja. Kopirana koda to pove v komentarju. Za preverjanje, ali se vaš rezultat ujema s pričakovanim, tak vzorec zadošča, ni pa ga mogoče uporabiti kot celoten vhodni podatek za naslednje vprašanje.
:::

## Časovno okno

Vsaka naloga ima določeno okno za reševanje:

- **Do odprtja okna** je možno predčasno reševanje brez časovne omejitve.
- **V oknu za reševanje** je čas omejen. Teče od trenutka, ko nalogo znotraj okna prvič odprete v sistemu moj.ladisk.si ali ko prvič oddate odgovor s funkcijo `poslji`.
- **Po zaprtju okna** se naloga zapre in reševanje ni več možno.

Ob prvi oddaji v odprtem oknu vas sistem obvesti, da se je čas za reševanje začel, in doda povezavo do naloge, kjer lahko preostali čas spremljate v živo.

:::{tip}
Čim večji del naloge rešite v času predčasnega reševanja, torej pred odprtjem okna.
:::

## Joker

Pri predmetu sta vam na voljo dva Jokerja za premik obveznosti v prihodnost:

- okno za reševanje naloge lahko premaknete za največ 14 dni naprej,
- pred pričetkom okna je za premik potreben en Joker, med oknom za reševanje pa dva,
- Jokerja ni mogoče uporabiti, če ste nalogo že odprli.

## Ocena domačih nalog

Domače naloge štejejo h končni oceni in so eden od pogojev za opravljene vaje. Podrobnosti najdete v [Študijskem in izpitnem redu](https://jankoslavic.github.io/pynm/notebooks/studijski-in-izpitni-red/).
