## Ako sa dá s jazykom Python zvládnuť štvorročné štúdium na strednej škole [Miroslav "mirek" Biňas](https://bletvaska.github.io) / [**Pycon 2022**](https://2022.pycon.sk/)
![mirek](images/mirek.na.hackathone.jpg) [https://bletvaska.github.io](https://bletvaska.github.io)
## Prečo Python? Notes: * nepojdem do detailov, vyzdvihnem len dve veci
![Steep Learning Curve](images/python.learning.curve.png) Notes: * ma strmu krivku ucenia sa * aj pre tuto vlastnost je Python vybornou (a castou) volbou ako prvy jazyk
## Univerzálny programovací jazyk notes: * skriptovanie, serverove programovanie, testovanie aplikacii, desktopove aplikacie, webové aplikácie, mikrokontroléry, hry, ...
## Prečo len jeden jazyk? notes: * uvediem niekoľko dôvodov
## 1. Menej je niekedy viac notes: * chceme ich naucit viac! * vedia kadečo, ale nič poriadne * slovami mojho sefa: nie je dolezite, co vsetko by mali studenti vediet, ale co nakoniec naozaj vedia * ak vedia jazyk, mame viac casu sustredit sa na dalsie temy/technologie/pristupy * problem - opakujeme sa
> Štandardné kurzy miesto výučby programovania učia svojich čitateľov a frekventantov len syntax preberaného jazyka. > > -- [Rudolf Pecinovský](https://pdfs.semanticscholar.org/d50c/fa981ded2bf03fc6e3db8e7a85e82ce75180.pdf)
| predmet |pomer | % | |---------------------------|-------|-----| | [Algoritmizácia](http://itakademia.sk/wp-content/uploads/2018/07/Riesenie_problemov_a_programovanie.pdf) | | | | [Objektové programovanie](http://itakademia.sk/wp-content/uploads/2018/07/Objektovy_pristup_k_rieseniu_problemov.pdf) | 14/66 | 21% | | [Programovanie web. stránok](http://itakademia.sk/wp-content/uploads/2018/07/Programovanie_webovych_stranok.pdf) | 18/66 | 27% | | [IoT](http://itakademia.sk/wp-content/uploads/2018/07/Internet_veci.pdf) a [Mikrokontroléry](http://itakademia.sk/wp-content/uploads/2018/09/A-15.pdf) | 16/66 | 24% | notes: * opakujeme sa * kazdy rok venujeme zhruba 1/3 kurzu opakovaniu * to znamena, ze ak prvy rocnik ich nieco naucime a nasledujuce tri to budeme opakovat, tak jeden cely rok sme stravili len s opakovanim
$$ \frac{1}{3} + \frac{1}{3} + \frac{1}{3} = 1 $$
## 2. Jedno IDE * nemusí byť nutne topka ([PyCharm](https://www.jetbrains.com/pycharm/)) * určite sa vyhnite IDLE! * [Mu](https://codewith.mu) vs [Thonny](https://thonny.org) notes: * novy jazyk/technologia = nove IDE * nove klavesove skratky, * nove umiestnenia uz znamych veci, * instalacia, * riesenie problemov, * ...
## 3. Bus Factor > 1 notes: * vypadok ucitela moze viest k znefunkcneniu predmetu * zastupitelnost ucitelov * problem hlavne na gymnaziach
## 4. Čo najskôr umožnite študentom vytvárať kódy notes: * pecinovsky
## Poďme na to! notes: * budem trosku ohovarat
## [Špeciálna trieda](http://itakademia.sk/model-specialnej-triedy-so-zameranim-na-informatiku/) | predmet | jazyk | |---------------------------|-------| | [Algoritmizácia](http://itakademia.sk/wp-content/uploads/2018/07/Riesenie_problemov_a_programovanie.pdf) | Python | | [Objektové programovanie](http://itakademia.sk/wp-content/uploads/2018/07/Objektovy_pristup_k_rieseniu_problemov.pdf) | Java | | [Programovanie web. stránok](http://itakademia.sk/wp-content/uploads/2018/07/Programovanie_webovych_stranok.pdf) | PHP, HTML5, MySQL, JS | | [IoT](http://itakademia.sk/wp-content/uploads/2018/07/Internet_veci.pdf) a [Mikrokontroléry](http://itakademia.sk/wp-content/uploads/2018/09/A-15.pdf) | C, Blockly | notes: * vyhli sme sa mobilnym aplikaciam a UI, aj ked Python ma zastupenie aj v tejto oblasti
## Úvodné kurzy programovania * motivačný faktor - hry * v hrách sa riešia zaujímavé problémy * častokrát sú herní developeri lepší programátori ako programátori IS * podpora kreativity - projekty na GTA, OOP na TUKE * nápady sa dajú rozvíjať * [Reeborg](http://reeborg.ca/index_en.html), [Pygame Zero](https://pygame-zero.readthedocs.io/en/stable/), [Minecraft](https://github.com/martinohanlon/mcpi), ... notes: * Pygame Zero * Minecraft MCPI * vysledok * 200 studentov na KPI = 200 jedinecnych projektov * GTA a zaverecne projekty * vzdy sa najde skupinka ludi, ktori to robia
## Objektovo orientované programovanie * [Greenfoot](https://www.greenfoot.org/door) a [BlueJ](https://www.bluej.org/) * Objects first approach * Python je objektovo orientovaný * obecne sa objektom nevyhnete * OOP nie je ani tak o programovaní, ako skôr o návrhu/architektúre
## OOP ≠ GUI Prog. notes: * mytus: programovat objektovo neznamena vytvarat GUI * aj moja predstava mladosti a rovnako tak predstava mnohych nasich studentov * dizajner GUI urobi robotu za vas a vy osetrujete len udalosti * udalost - kliknutie na tlacidlo * pravdepodobne kopec globalnych premennych * pre navrh GUI pouzivajte graficky dizajner
* mýtus: programovať objektovo znamená vytvárať GUI * predstava mnohých našich študentov * (aj moja už od strednej školy) * dizajnér GUI urobí robotu za vás a vy (ako programátor) už len ošetrujete udalosti * udalosť - kliknutie na tlačidlo * pravdepodobnosť používania globálnych premenných je veľmi vysoká * pre návrh GUI používajte grafický dizajnér
## Webové stránky * najhorší možný výber - PHP * určený **len** na tvorbu dynamických webov * ([vraj skritpy a UI](https://www.php.net/manual/en/intro-whatcando.php)) * v školách je štýl programovania v PHP ako pred 20 rokmi * žiadne MVC/MTV * žiadne rámce * Jiří Kosek: [PHP - Tvorba interaktivních internetových aplikací](https://www.martinus.sk/?uItem=1) (1999)
## Python a dynamické webové stránky * dva typy webových rámcov * micro webové rámce * plnohodnotné webové rámce
![Flask vs Django](images/flask.vs.django.jpeg) [Flask](https://palletsprojects.com/p/flask/) vs [Django](https://www.djangoproject.com)
[![FastAPI](images/logo-fastapi.png)](https://fastapi.tiangolo.com/)

FastAPI vs Flask

      
from fastapi import FastAPI
app = FastAPI()

@app.get("/")
def hello():
    return 'Hello, World!'
      
      
      
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, World!'
      
      
[![Pokedex Workshop](https://cdn.vox-cdn.com/uploads/chorus_image/image/53254027/who_pokemon.0.jpg)](https://github.com/namakanyden/workshop-pokedex) [https://github.com/namakanyden/workshop-pokedex](https://github.com/namakanyden/workshop-pokedex)
## IoT a Mikrokontroléry ![](https://static1.makeuseofimages.com/wordpress/wp-content/uploads/2022/08/arduino_ide_and_parts.jpg) notes: * Arduino a jazyk C * dlho topka * od roku 2005
## Mikrokontroléry a Python * špeciálne verzie Python-u * [MicroPython](http://micropython.org) - ESP32, micro:bit, RP2040, ... * [CircuitPython](https://circuitpython.org) - ESP32, RP2040, ... * [GPIO Zero](https://gpiozero.readthedocs.io/en/stable/) - RPi * [Snek](https://github.com/keith-packard/snek) - Arduino ;)
## Demo
[![ESP32 and MicroPython](https://www.usinainfo.com.br/blog/wp-content/uploads/2019/06/IMG_2897-ok-1920x1080.jpg)](https://github.com/namakanyden/workshop-esp32) [https://github.com/namakanyden/workshop-esp32](https://github.com/namakanyden/workshop-esp32)
![Sense HAT Assembly](https://projects-static.raspberrypi.org/projects/rpi-sensehat-attach/a180c64ad52670ac0df6a15e334499b683e65708/en/images/animated_sense_hat.gif)
Sense HAT je rozširujúca doska pre Raspberry Pi vytvorená špeciálne pre súťaž [Astro Pi](https://astro-pi.org).
# Použitie * ako HAT na RPi (cena okolo 40 Eur) * ako [online Sense Hat emulátor](https://trinket.io/sense-hat) * ako [desktop Sense Hat emulátor](https://sense-emu.readthedocs.io/en/v1.1/install.html)
![Desktop SenseHat Emulator](images/sensehat.emulator.png)
## Hello world! ```python from sense_emu import SenseHat # from sense_hat import SenseHat sense = SenseHat() sense.show_message('Hello world!') ```
![Raspberry Pi Pico W](https://www.jeffgeerling.com/sites/default/files/images/raspberry-pi-pico-w.jpeg)
## 5. Vzájomné prepojenie tém * hra s herným ovládačom, diaľkový ovládač, ovládanie hw cez webovú stránku, ... * diaľkový detonátor v _Minecraft_-e * alebo...
![Excel Shit](https://embed-ssl.wistia.com/deliveries/4a67919e0368e6d5ef4b3b7570baba221fcd8114.jpg)
[![Pandas](https://upload.wikimedia.org/wikipedia/commons/thumb/e/ed/Pandas_logo.svg/2560px-Pandas_logo.svg.png)](https://pandas.pydata.org/)
## Namakaný deň * [http://namakanyden.sk](http://namakanyden.sk) * podujatie Namakaný deň * z angl. _Makers day_ * covid naštartoval [Namakané webináre](http://namakanyden.sk/webinare/) * ftipné projekty - Vianočný stromček * plán - Code Week 2022
[![Follow us on Facebook](images/follow.us.on.facebook.png)](https://www.facebook.com/namakanyden) [www.facebook.com/namakanyden](https://www.facebook.com/namakanyden)
## Otázky?
![qr code](https://api.qrserver.com/v1/create-qr-code/?data=https://bit.ly/3x0kHCq&size=300x300) (**https://bit.ly/3x0kHCq**)