Python radionice

Jedan thread za organizaciju python radionice

Neki plan sta treba odraditi:

  1. odluciti naziv radionice
  2. dizajnirati poster za najavu radionice
  3. smisliti mehanizam i formular za prijave na radionicu
  4. napisati plan rada o temama za prvih 8 radionica
  5. naci mesto za organizvanje radionce
  6. objaviti i reklamirati radionicu na razlicitim mestima

Ideje za organizaciju radionice:

  • otvoreno za sve
  • besplatno (naravno)
  • napomenuti da ljudi donose svoje racunare
  • planiramo oko 10-20 ljudi na radionici
  • postepeno reklamirati radionicu na razlicitim metima dok ne dostignemo planirani broj ljudi

Ideje za termin:

  • odredjeni radni dan, svake nedelje (najbolje ponedeljak ili petak, četvrtak ili utorak ako oni nisu slobodni, najbolje da ne bude sredom )
  • 19h - 21h

Neke od predloga za naziv radionica:

  • decentrala phyton radionice
  • demistifikacija programiranja kroz pajton
  • programming language caffe
  • decentrala predstavlja besplatne radionice pajtona
  • uvod u python
  • besplatan kurs python-a
  • uvod u programiranje kroz python

Ideje za formular za prijavu na radionicu:

  • anonimna forma za prijavu
  • opciono ostavljanje mejla rado obaveštavanja o narednim radionicama

Ideje za mesta radionice:

  • KC Grad (dosta mesta)
  • DC Krov (moguci manjak slobodnih termina)
  • Kafe Bar 16 (kontaktirani mejlom, slabija zainteresovanost)

Ideje za mesta za reklamiranje radionice:

  • uzivo preko poznanika
  • forum Decentrale
  • drustvene mreze prostora gde organizujemo
  • redit subovi (r/programiranje , r/serbia)
1 Like

Materijali za poster:
Decentrala-plakat.xcf (775.6 KB)

2 Likes

Predlog za forumular za prijavu:

Link za pregled rezultata formulara:

1 Like

Evo ga primer kurikuluma koji bismo prošli, naravno podložno je promenama. Nemam osećaj da li je premalo ili previše, pa sam ostavio bafer na kraju. Pravljen je tako da možemo da odradimo i 4. časa, a da bude dovoljno. Žao mi je što ne možemo da imamo praktičnije zadatke do 5. časa, ali tad ćemo već znati da li možemo da idemo praktičnije (neke data analize, neki GUI možda) ili ostajemo na CS tipovima problema.


  1. čas
  • Šta je programiranje, šta je Python?
  • Skidamo Python i IDE i instaliramo ih
  • Prvi program i njegovo pokretanje
  • Komentarisanje koda
  • Promenljive
  • Aritmetičke operacije
  • Debugging
  • Domaći: napisati program koji ispiše pesmu
  1. čas
  • Tipovi podataka
  • Boolean, broj i string
  • Operatori poređenja
  • if, elif, else
  • ugnježdene if naredbe
  • ulaz sa konzole
  • Domaći: program za konvertovanje temperature
  1. čas
  • Liste (kreiranje liste, dodavanje elemenata u listu)
  • for petlja
  • for petlja sa range-om
  • while petlja
  • break, continue
  • ugnježdene petlje
  • Domaći: napraviti program koji ispiše tablicu množenja
  1. čas
  • Funkcije (sistemske funckije, korisničke funkcije)
  • operacije sa stringovima
  • formatiranje stringova
  • tuple tip
  • Domaći: napraviti funkciju koja proveri da li je string palindrom
  1. čas
  • dictionary tip
  • iteracija kroz dictionary
  • rekurzivne funkcije
  • pisanje i čitanje fajlova
  • Domaći: učitati CSV i ispisati redove sortirano
  1. čas
  • Osnove OOP-a
  1. čas
  • testiranje koda
  • PyTest
  1. čas
  • sve što nam je (za)ostalo
  • oblasti programiranja (frontend, backand, AI, mobile, baze podataka…)
  • random diskusije o bilo čemu
3 Likes

E ja imam dosta izmena za plan i program, ovako mi previse skolski deluje i neki redsoled mi ima nelogicnosti. naprimer fstring bih objasnio kada i string ili mozda cas posle, tuple i liste bih u istom casu kao i dict, pisanje i citanje fajlova bih ranije + csv, operacije sa stringovima isto kada i tipove i string uvodimo.

OOP se slazem da treba i takodje mislim da treba pokazivati scraping, flask i neku obradu podataka, neku grafiku isto(gui ili samo crtanje).

Takodje mislim da treba raditi na linux sve, tu se takodje nauci komandna linijia, a i lakse se podesavaju stvari nego na win-u. Za ovo moze da se koristi i live flas, virtualna masina ili dualboot, ne mora odmah full instalacija.

Takodje trebalo bi napraviti kanal na xmpp-u za pitanja kao i da se ljudi upute na forum za pitanja i medjusobnu pomoc.

Uglavnom ovo sam ukratko ispisao, ispisacu za par dana celu ideju pa se mozemo naci i prodiskutovati uzivo o tome.

Imam i pitanja. Pocinje 3. Marta, petkom od 18-19 je termin koliko znam, koliko nedelja moze da traje, jel ima gornjeg ogranicenja uopste ? I jel ima gornjeg ogranicenja za broj ljudi ? Ako ima koji su?

Da, program pokušava da bude školski, ne vidim da je to nešto loše da se prođe metodički. Sa nekim stvarima koje si rekao se slažem, sa nekima ne, ali verovatno će “na terenu” to da bude dosta drugačije i ko zna kako će to da izgleda u praksi:) Moraš razumeti da mi trenutno nemamo načina da ispitamo ni trenutno predznanje ljudi koje će dolaziti, niti motive dolaska, niti njihove kapaciteta, tako da bih sve što nije čist, najosnovniji uvod u školsko programiranje ostavio za neko drugo predavanje (npr. ne bih ovde opterećivao ljude sa scrapingom, flaskom i sl.)

Svaki polaznik može da radi sa čim želi, ne bih da nikome namećem i Linux sad, i da im time samo pravim još veću zbrku u glavi, dovoljno je jedna nova stvar. Jedino što je sigurno je da ćemo prvi čas zajedno instalirati IDE (PyCharm sam mislio), čisto da to bude zajedničko, da mogu da prate ostatak predavanja

Može, kad krenemo. I ovaj forum može da bude dobro “default” mesto za dvosmernu komunikaciju.

Slažem se, nabacio si ovde dosta stvari koje meni ne piju vodu (neke stvari koje sam ja napisao ne piju tebi vodu), a verovatno je samo greška u komunikaciji. Kada se vidimo, biće lakše.

Ukupno 8 časova je plan, tj. ~2 meseca. Gornje ograničenje za broj ljudi je veličina prostora, što je oko 10 stolova, a KC Grad kaže da može još 10 ljudi da stane (ali će njima biti neudobno jer moraju da drže laptopove u krilima).

Decentrala zajednica, u sklopu svojih akcija širenja znanja, pravi besplatnu radionicu programiranja na kojoj su svi dobrodošli. Detalje možete videti na https://wiki.dmz.rs/python.

Fokus će biti na upoznavanje sa programiranjem i njegovu demistifikaciju kroz Python programski jezik. U pitanju su radionice, a ne predavanja, što znači da će se od svakog od učesnika tražiti aktivno učestvovanje, kao i rad na času i kući. Cilj radionica je da možete da se snađete u Python-u i da pišete osnovni programski kôd.

2 Likes

Za sve tacke osim 5 mogu ja da pomazem,
ja bi isto mogao da pomognem da se drze radijonice na vise dana da gruppe budu izmedzu 5 i 10 ljudi, to je bolje za osobe, moze se vise praxe prodzi i vise vremena po osobi uzimati, osim toga nije lose pedagogsu vrstu predavanja na blendet learning da se okrene i da nije postmodrna frontalna samo.

Tu sam da se izradi zajednicke skolski material za nastavu. Koj onda svako ko preuzme jedan cas po skriptu dalje moze da ide.

I ako moj srbski nije najbolji nudio bi se osnovne stvari programiranja da ucim ljudie (Variabele, datenstrukture, tye, funcije itd.) a dublje theme vi mladi onda mozete obraditi.

Ja sam za cetvrtak kao dan, i kao opcija da je on i offline, stime da online samo ima chat a offline imam tutora live i drustva. Stime se moze uvek offline skolovati ako se nema prostorija ili suvise malo ljudi dolazu da bi se iznajmilo extra za to prostor.

Poz BBB

1 Like

Okačio sam ovaj kurikulum na Python kurs - kurikulum | Decentrala's Wiki, možeš da menjaš tamo:)

2 Likes

neznam sta da menjam - izgleda kao raspored ok pitanje je modza sta bi bilo koristno za thematiku posla kasnije, i tu bi bilo dobro da se i pogledaju theme dokumentacije (razne vrste) i Projekt organizacije kao Scrum/Kaban/Prince2, zatosto cesto bas gde se takve specialna znajna traze su vece projekte sa takvim strukturama. I nije samo dosta znati porgramming nego i rad stim poslu u svakodanim delu organizacije - osim ako ostate freelancere :wink:

Znam da te theme nisu “interssantne” ali su potrebne kod zaradzivanju sa ekonomistama koj vode projekat.

Osim toga su neke standart Norme za razne theme ITa u vrsti standarizacije (DIN za nemacku ISO IlI druge). Sigurno imaju Kina i Indija isto svoje standart zakonske Norme ali njih ne poznajem.

Stavio sam slajdove za python radionicu na stalker/python-radionica - python-radionica - Gitea: Decentrala, a @fram3d se iscimao i napravio da se posle PR-a sve to vidi na radionice.dmz.rs/. Ako hoćete nešto da menjate, pravite PR na gitu. Ovo ćemo naglasiti i na samoj radionici. Počinje sutra, BTW:)

1 Like

Posto nam je prvi put da drzimo ovakve radionice, ucimo i mi kako da ih
organizujemo i kako je najbolje objasnjavati. Mislim da je prva
radionica super prosla, evo i gde bi mozda mogli bolje. Neki od utisaka
su licni, a neke su od ljudi koji su trazlili dodatnu pomoc posle radionice.

Licni utisak:

  • Broj ljudi koji je dosao je savrsen, izmedju 20 i 30. Vecinu ljudi
    nisam poznavao, ali bilo je i dosta onih koje smo mi zvali. Ljudi koji
    su dosli su generalno bili cutljivi i atmosfera je bila slicna kao na
    predavanjima na fakultetu. Bilo je nekoliko ljudi koji su zakasnili, ali
    vecina je dosla pre vremena.

  • Bilo je buke u pozadini prvih 10-15 minuta, zbog pomeranja stolica za
    ljude koji su kasnili.(Mozda je bolje u buduce doneti vise stolica, da
    mogu odmah da sednu kad dodju u tisini)

  • Oko 90% ljudi je donelo svoj laptop i pokusali da pisu kod za vreme
    radionice. Pola je bilo na Mac-u. pola na WIndowsu. Jedna osoba je bila
    na Windows 7 i to je pravilo problem za instalaciju najnovije verzije
    pythona. Vecini je bila potrebna pomoc tokom instalacije. Bilo je
    potrebno vise od 10 minuta da se skinu programi kod svakog, jer smo brzo
    pojeli sav bandwith kad svi odjednom skidamo. (Treba nam bolje
    objasnjenje kako da se instalira na oba sistema, na macu vec i dolazi
    python3 u terminalu, niko to nije ni znao od korisnika. Takodje mozda
    neki lokalni server na LAN mrezi da skinu python svi brzo)

  • Nije mi bilo jasno sta je REPL rezim rada i mislim da ovaj termin nije
    bitan.

  • Previse mi je delovalo da se ide u dubinu (previse aritmetickih
    operacija je pokazano, previse tipova podataka. previse razlicitih
    rezima pokretanja pythona)

  • Mislim da bi bilo dobro vise objasnjavati sta su promenjljive i kako
    otprilike racunar radi. Meni je licno bilo jako tesko da razumem
    promenjljive i sintaksu dodeljivanja vrednosti kada sam prvi put ucio
    programiranje.

  • Mislim da je primer racunanja PDV-a bio veoma zbunjujuc i nije mi bilo
    jasno resenje za taj zadatak.

  • Mislim da bi bilo bolje da se za input nije koristio nijedan argument

  • Mislim da bi bilo bolje ostaviti debuging za kraj kursa

  • Prvi zadatak za domaci “Napisati program koji ispiše refren, haiku
    budite kreativni:)” mi nije jasan, delom zato sto ne znam sta je haiku.
    Zadnji zadatak “U REPL konzoli raditi “import this” da vidite Python
    ZEN” je kul, ali mislim da je nepotrebno zbunjujuc za ljude.

  • Generalno je moje iskustvo na svim radionicama da ljudima najvise
    treba samopouzdanja. Cini mi se da generalna populacija misli da za
    programiranje je potreban poseban talenat ili ogromno preznanje. iz
    matematike ili racunarstva. Cesto im kazem da mi je bilo potrebno
    nekoliko meseci da shvatim sta su promenjive i kako se koriste, to mi
    deluje da im znatno povisi samopouzdanje sto ne razumeju dobro na
    pocetku. Mislim da bi uvek bilo dobro to napomenuti vise puta na
    pocetku, da ne bi ljudi lako odustali. Taj pocetak je svakome izgleda
    najtezi.

Utisak nakon dodatnog casa:

  • Deluje mi da ljudi shvataju ovaj kurs ozbiljno i voljni su da rade domaci.

  • Bilo im je od pomoci sto je par nas islo okolo po prostoriji i gledalo
    da li je svako uspeo da instalira.

  • Slajdovi sa raadionce.dmz.rs su bile kljjucni materijal sa koga je uceno.

  • REPL im nije bilo jasno sta je (nisam ni ja mogao pomoci oko toga)

  • Sve je radjeno u PyCharmu na radionici taj IDE im je bio dosta
    konfuzan. (mozda bolje da se fokusiramo samo na pisanje programa u
    notepadu za pocetak i izvrsavanje programa iz konzole): nisu znali gde
    da pisu kod, u konzoli ili u tabu. Nisu mogli da razlikuju interaktivnu
    konsolu i ono sto ispisuje program kada se pokrene sa Run. Nisu mogli da
    nadju dugme Run niti razumeju sta tacno to dugme radi. Nisu znali gde je
    sacuvan taj program koji su napisali u pyCharmu i samim tim ni da li su
    ga dobro sacuvali.

  • Nisu sigurni sta treba pod navodnicima da se stavlja i sta ne i da li
    su dvostruki ili jednostruki navodnici

  • Demonstracija da python radi na velikim brojevima im nije jasna, vrv
    zato sto nemaju kontekst da kod nekih drugih jezika to predstavlja problem

  • Razlicite vrse deljenja, su im malo konfuzne. Vecina ljudi izgleda da
    je takodje malo zaboravilo stepenovanje, pa im je potrebno dodatno
    objasnjenje.

  • Sintaksni detalji kao sto su da li ide razmak izmedju naziva funkcije
    i zagrada im treba napomenuti vise puta, ali ne predstavlja ogroman problem.

  • Treba bar punih 5 minuta objasnjavati samo dodeljivanje vrednosti
    promenjivoj vrednost iz drugih promenjivih, pogotovu kad izraz sadrzi
    samu tu promenjivu (x=x+1). Znak jednako treba vise puta napomenuti da
    nije isto kao u metematici, da oznacava dodeljivanje, zato x=x+1 nije
    pogresno napisati.

  • Primer sa PDV-om izgleda da nikom nije jasno (takodje nisam mogao
    pomoci oko toga)

  • Izbegavati pominjanje memorije bez dodatnog objasnjenja

  • input funkcija im deluje jako konfuzno, potrebno je dodatno objasniti
    print i input kao jedan da pise na ekran a drugi da cita sa ekrana.
    Takodje napomenuti da je input bitan, da ljudi slucajno ne preskoce, jer
    im deluje previse tezak.

  • Specijalni karakter “\n” im takodje nije jasan. Mozda ostaviti za
    buduce casove, moze se zaobici sa vise poziva print funkcije.

  • Treba vise raditi sa cast-ovanjem. Mozda malo sporije prelaziti i
    ponoviti par puta.

  • Debugging i prvi i zadnji zadatak sa domaceg je nedovoljno objasnjen
    (mozda je bolje ukloniti, posto nisu neophodni za poznavanje pythona)

3 Likes

Drugi cas (17. Marta) je prosao sa vise razumevanja. Pitali smo ljude na kraju i svi tvrde da im je bilo jasno i da su mogli da prate.

Ponovili smo promenljive, malo sporije, sa vise primera, sta moze i sta ne moze, pa smo kasnije krenuli i na if,else komande nakon nekih 40 minuta.

Bilo je 15 ljudi, nekih 30% manje nego prvi cas.
Prvi cas niko nije postavljao pitanja, ali sad za drugi cas je bilo mnogo pitanja, sto je naravno jako dobro. Zapisao sam neke od pitanja:

  • da li mozemo cuvati istu vrednost u vise razlicith promenjivih
  • da li su imana promenljivih case-sensitive
  • koja imena promenljivih ne mozemo da koristimo (if, for, while,…)
  • da li mozemo koristiti promeljive u linijama koda iznad linije gde je vrednost proemnljive dodeljena
  • da li mozemo koristiti camelcase metod imenovanja promenljivih
  • da li mozemo koristiti specijalne karaktere kao sto su znak uzvicnika i taraba za ime promenljive
  • ako dodelimo razlicite vrednosti istoj promenljivoj u razlicitim linijama koda, koja ce vrednost biti dodeljena
  • da li mozemo (moramo) koristiti space izmedju imena promenjlive i znaka dodeljivanja (=)
  • da li mozmemo koristiti space unutar imena promenljive (ime promenljive sa dve reci)
  • da li su sve linije posle komande if uslovljenje pod tim if (samo uvucene linije su uslovljenje)
  • da li mozemo koristiti jednostruke navodnike za tekst ili samo dvostruke
  • da li umesto elif komande mozemo samo napisati vise if komandi

Primetio sam da je cesto problem kada se radi input funkcija da cesto pokrenu program, i izmene kod pre nego sto se se program zavrsio, jer ceka korisnika da unese tekst. To izaziva zabunu posto im program ne izvrsi linije koda koje su nakon te linije gde je input. Bilo bi dobro vise puta napomenuti tokom rada sa input funkcijom da ih input ceka i da moraju da zavrse program kada ga izmene i pokrenu opet.

Mozda za sledece serijale radionica bi bilo dobro da imamo prvi cas samo upoznavanje sa PyCharm IDE okruzenjem.

Koristili smo primer ocena iz razlicitih predmeta za cuvanje vise promenljivih i racunanje njihovog proseka. Ispostavilo se korisno i za dalje koriscenje u if komandama, kada je ocena 1 da ispise da je korisnik pao godinu. Za elif smo koristili primer da li je korisnik vukovac (ima sve petice) i da ispise na ekran ako jeste.

2 Likes

mnogo dobra stvar ova pitanja sto si zapisao

2 Likes

Da, dobro je da skupljamo sva ta pitanja, ja uz njih bolje razumem šta nije jasno! Evo neka dva pitanja koja sam ja čuo:

  • hoću da konvertujem promenljivu foo u int, ali ovo mi ne radi: int("foo")
  • zašto kada podelim dva broja dobijam float, iako su brojevi deljivi?
  • kako da nemam space pre dve tačke kada kažem: print(ime, ":zdravo"), ispiše mi "Petar :zdravo"
1 Like

Obaveštenje za radionicu: IMAĆEMO ČAS 31.03., isto je vreme (18h) i isto mesto (KC Grad).

1 Like


Zdravo, treba mi nasušna pomoć oko domaćeg zadaka br. 3. Ne mogu da provalim kako da prekinem while funkciju na osnovu broja kvadrata koje korisnik unese :slight_smile:

Ne menjas broj i ostaje isti tokom celog izvrsavanja while petlje pa ne izlazi nikada. A nikada nece kocka==broj biti tacno jer su uvek razliciti. Moras broj negde u while petlji da promenis.

Možeš i da pogledaš slajd sa brojačem, i da to probaš da primeniš ovde. Ne treba ti break po meni, ali uvedi novu promenljivu da bude brojač. Možemo i još detaljnije za odgovor, ali rekoh da ne spoilujemo:)

Evo malo detaljnije objasnjenje sta radi tvoj program:

kvadrat=“#” U promenjivoj “kvadrat” stoji tekst koji sadrzi samo karakter tarabu.

broj=int(input(“unesi broj kvadrata”)) U promenjivoj “broj” stoji broj koji je korisnik uneo tokom izvrsavanja programa.

while broj>0: Dok god je broj koji stoji u promenjivoj “broj” strogo veci od 0, desava se sledece:

  1. kocka=kvadrat*broj U promenjivu “kocka” se upisuje proizvod vrednosti iz promenjive “kvadrat” i promenjive “broj”, sto je proizvod vrednosti teksta koji sadrzi samo jedan karakter “#” i broj koji je korisnik uneo. Mnozenje teksta sa brojem u pythonu kao rezultat daje originalni tekst ponovljen onoliko puta koliko je iznos tog broja sa kim se mnozi. (primer: ako korisnik unese “4” kao broj, u promenjivoj kocka ce biti tekst “####”)

  2. print(kocka) Rezultat mnozenja iz promenjive kocke se ispisuje na ekran u jednoj liniji.

  3. if kocka==broj: Proverava se da li je “tekst” iz promenjive kocke jednak broju iz promenjive “broj”, posto tekst i broj nikada nisu isti, cak ni kada je u tekstu upisan broj (primer: 4 nije isto sto i “4”), ova provera nikada nije tacna, pa se kod ispod, koji sadrzi samo komandu “break” nikada ne izvrsava.

Tako da gledajuci ceo kod vidimo da nijedna promenjiva nikada ne menja svoju vrednost, nakon sto se prvi put definise. Posto while izvrsava isti kod dok je broj u promenjivoj “broj” pozitivan, ovaj kod ce da se zauvek izvrsava ako je korisnik uneo broj veci od 0 i nikada, ako je korisnik uneo broj 0 ili manje.

Kako popraviti program:

Jedan od nacina da se popravi program je da se na pocetku programa doda linija u kojoj pise brojac=0.(bilo koje mesto iznad linije while broj>0: je ok).

Zatim bilo gde izmedju linija while broj>0: i if kocka==broj mora da se doda linija u kojoj pise brojac**=brojac+1** i da se u liniji if kocka==broj zameni promenjiva kocka sa promenjivom brojac, pa bi pisalo if brojac==broj.

Krajnji program bi izgledao ovako:

brojac=0

kvadrat=“#”

broj=int(input(“unesi broj kvadrata”))

while broj>0:

brojac=brojac+1

kocka=kvadrat*broj

print(kocka)

if brojac==broj:

break

1 Like