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.
č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
č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
č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
č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
čas
dictionary tip
iteracija kroz dictionary
rekurzivne funkcije
pisanje i čitanje fajlova
Domaći: učitati CSV i ispisati redove sortirano
čas
Osnove OOP-a
čas
testiranje koda
PyTest
čas
sve što nam je (za)ostalo
oblasti programiranja (frontend, backand, AI, mobile, baze podataka…)
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.
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.
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
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.
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)
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.
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
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:
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 “####”)
print(kocka) Rezultat mnozenja iz promenjive kocke se ispisuje na ekran u jednoj liniji.
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.