Poletna šola FRI 2013 je uspela!
Zaključile so se brezplačne delavnice Poletne šole FRI 2013. Po razburljivih dveh tednih novih izzivov in aktivnosti so se delavnice z osnovnošolci, dijaki in študenti zaključile na način kot se spodobi – s podelitvijo nagrad najboljšim udeležencem.
V prvem tednu julija je Fakulteta za računalništvo in informatiko pripravila tri delavnice, Računalništvo brez računalnika za osnovnošolce, Programiranje v višji prestavi za srednješolce in Zajem in obdelava 3D podatkov v podvodni arheologiji za študente. V drugem tednu julija pa je pripravila še štiri delavnice za srednješolce in eno delavnico za študente.
Veselo je bilo že v ponedeljek zjutraj, ko je prodekanja za pedagoško dejavnost prof. dr. Neža Mramor Kosta pozdravila vse navzoče in so naredili skupinsko slikanje. Na zaključku je vse udeležence pozdravil prodekan prof. dr. Patricio Bulić, ki je med drugim povedal par besed o projektu Novogradnje FKKT in FRI in povabil udeležence, da se naslednje leto pridružijo Poletni šoli FRI že v novi stavbi.
Podeljene so bile zanimive glavne nagrade številnih sponzorjev in pokroviteljev. Kaj pa so udeleženci počeli na delavnicah Poletne šole FRI?
Računalništvo brez računalnika
Najmlajši udeleženci letošnjih delavnic so osnovnošolci, za katere je Fakulteta za računalništvo in inforamtiko skupaj s študenti Pedagoške fakultete pripravila Računalništvo brez računalnika. Kar 42 otrok od 4. do 6. razreda se je igraje učilo tako zapletenih reči, kot so Huffmanovo kodiranje, bisekcija, rekurzija, časovna zahtevnost, vzporedni algoritmi in kriptografija z javnimi ključi. In, kar je najbolj imenitno, za pouk računalništva ne potrebujejo nobenih računalnikov, temveč prazno parkirišče pred fakulteto in veliko krede.
Na prste ene roke so se naučili šteti do 31, na prste obeh rok pa kar do 1023. Da bi imelo dvojiško zapisovanje števil smisel, so se brž naučili pošiljati sporočila z različnimi gospodinjskimi pripomočki, zastavicami, vrvicami, na koncu pa priredili veliko tekmovanje. Ukvarjali so se s kodiranjem: spoznali so kontrolo parnosti in enega od postopkov stiskanja in tudi z algoritmi: otroci so najprej spoznali, kako težko je dobro opisati postopek. Nato so sami odkrivali postopke za urejanje plastenk po teži, pri čemer so morali uporabljati preproste tehtnice iz deščic. Niso pozabili niti na grafe (in še končne avtomate so pretihotapili k njim). Otroci so z igro – iskanjem otoka zakladov v gusarskem otočju, najprej spoznali končne avtomate z abecedo iz dveh znakov, nato so spoznali idejo NP-polnosti, na koncu pa so barvali še zemljevide. Zaključni dan se je začel z reševanjem problema smrtnega objema, nadaljeval se je s kriptografijo, končal pa z umetno inteligenco.
Otroci so tako z igro in lastnim raziskovanjem odkrivali čarobni svet računalništva. Ne sveta uporabniških pisarniških programov, na katerega je večinoma omejen šolski pouk računalništva, ne sveta računalniških igric in spletnih videov, v katerem tako ali tako potratijo preveč časa, temveč svet ugank in izzivov, svet reševanja nerešljivih problemov, svet iger z nenavadnimi pravili, ki dobijo ob koncu dneva smisel, ko se povežejo z “resničnim” svetom računalnikov.
Programiranje v višji prestavi
Delavnica Programiranje v višji prestavi je bila namenjena temeljitemu spoznavanju algoritmičnih prijemov in učinkoviti uporabi podatkovnih struktur. Organizirana je bila v tri sklope: Udeleženci so začeli s podatkovnimi strukturami sklad, vrsta s prednostjo, množica in slovar ter spoznali notacijo O za ocenjevanje časovne zahtevnosti algoritmov. Še poseben poudarek je bil letos na drugem sklopu: algoritmi na grafih.
V dveh dneh so udeleženci spoznali različne obhode po grafih, iskanje najkrajših poti med vozlišči, gradnjo najmanjšega vpetega drevesa, iskanje največjih možnih pretokov in krepko povezanih komponent. Tretji sklop je zajemal dinamično programiranje, ki se uporablja npr. za iskanje najdaljših skupnih podzaporedij v nizih, za izračun urejevalne razdalje med nizoma in pravilnega zaporedja pri množenju matrik.
Za lažjo predstavo o algoritmih je primer naslednja naloga iz zadnjega sklopa: Na levem bregu reke so prebivalci, ki želijo s pomočjo edinega splava prečkati reko. Nekateri se splava bojijo bolj, drugi manj – odvisno od hitrosti – zato se hitrost prečkanja vedno prilagodi bolj plašnemu. Na splavu lahko hkrati plujeta le dva človeka. Izračunaj, v kakšnem zaporedju lahko vsi prebivalci najhitreje prečkajo reko, če imamo za vsakega izmed njih podan čas prečkanja reke?
Zadnji dan delavnice je potekalo triurno tekmovanje iz programiranja.
Tekmovalo se je za računalniki na vnaprej pripravljenem turnirju na portalu UVa, ki vsebuje bogato zbirko nalog tako z manjših tekmovanj kot mednarodnih olimpijad iz računalništva. Vsaka izmed štirih nalog je vsebinsko pokrivala svoj sklop. Po tekmovanju smo si ogledali uradne rešitve nalog, najboljši tekmovalci pa so prejeli lepe nagrade.
Zajem in obdelava 3D podatkov v podvodni arheologiji
Namen delavnice “Zajem in obdelava 3D podatkov v podvodni arheologiji” je bil vzpostavitev interdisciplinarne vezi med računalničarji, arheologi in drugimi strokovnjaki, da bi skupaj s sodobnimi tehnologijami spoznali najučinkovitejše rešitve problema obdelave podatkov v podvodni arheologiji. Udeleženci so dopoldan spoznavali problematiko na terenu pod vodo, kjer so se učili tako starejših analognih tehnik kot tudi sodobnih pristopov zajema informacij. Popoldan so poslušali povezana predavanja in se udeleževali delavnic 3D merjenja, fotografije in fotogrametrije. Izzivi so bili učinkovito delo pod vodo, kritično razmišljanje in diskusija o problematiki ter pridobitev 3D oblike s 3D merilnikom ali fotogrametrijo.
Kako vzgojiti ubogljivega robotka
Na poletni šoli »Kako vzgojiti ubogljivega robotka« so udeleženci najprej izvedeli nekaj zanimivih dejstev o razvoju robotike in njeni uporabnosti. Nato so v roke dobili komplete Lego Mindstorms NXT, iz katerih so sestavili vsak svojega robotka. V dveh dneh so se naučili programiranja v jeziku RobotC, s katerim so robotke privadili na ukaze počakaj, obrni se in pojdi naprej ali nazaj. Kmalu za tem so robotki že razmišljali s svojo glavo – brez težav so sledili črti in steni, opazovali barvo podlage, preštevali črte na poti do cilja in prepevali pesmi vse od Kuža pazi pa do uvodne špice iz Vojne zvezd.
Naslednja dva dneva so udeleženci s polno paro reševali izzive iz svetovnega tekmovanja First Lego League. Robote so učili zapletenih manevrov, natančnih premikov in uporabe domiselnih orodij iz Lego kock. Na tovrstna tekmovanja se ekipe običajno pripravljajo več mesecev, kljub temu pa je našim robotkom zadnji dan že uspelo rešiti večino nalog na tekmovalnem poligonu. Na zaključku so še posebej navdušila dekleta, ki so vzgojila najbolj ubogljive robotke in osvojila prvo ter drugo mesto. Preden so se poslovili, so podelili še pokale za najboljše, se slikali skupaj z robotki in si drug drugemu podpisali majice za spomin.
Robotki in malinove pite
Po kratkem uvodnem delu, v katerem so preverili predznanje udeležencev (ki je segalo od “nikoli programiral” do “napisal par enostavnih programov”), se je delavnica zares začela s pregledom osnov programiranja v jeziku Python. Po osvojitvi osnovnih principov programiranja, ki so jih za krmiljenje robotske roke potrebovali, so si v drugi polovici prvega dneva pogledali kako lahko ploščico RaspberryPi uporabiš za krmiljenje zunanjih naprav in za vajo s pomočjo LEDic naredili semaforiziran prehod za pešce. V nadaljevanju so LEDice zamenjali z elektromotorji v pravi robotski roki, s krmiljenjem katere so se ukvarjali do konca tedna. Spoznali so problem nenatančnosti krmiljenja motorjev s časovnimi zamiki in s tem pokazali, da za natančno krmiljenje rabimo dodatno senzoriko.
S pomočjo branja in obdelovanja vrednosti, ki so nam jih vračali senzorji (končna stikala in potenciometri), so robotsko roko dokončno ukrotili in se posvetili končnim projektom. Kot končni projekt so lahko udeleženci predlagali svoje ideje ali pa so se lotili predlaganega problema simulacije skladišča. Do konca poletne šole sta dva udeleženca uspešno realizirala lastno idejo (igro zlaganje stolpa z robotsko roko po vzoru Tower Bloxx), ostali pa so uspešno realizirali skladišče z več pozicijami in razkladalno/nakladalno postajo.
Izvajalci so posneli in pripravili tudi video poročilo s svoje delavnice!
Pingvini na 42 stopinjah
Na delavnici “Pingivni na 42°” so udeleženci spoznali operacijski sistem GNU/Linux in pripadajoče odprtokodno programje. Pričeli so z namestitvijo sistema in seznanitvijo z novim namiznim okoljem. Nato so si ogledali delo s programoma Gimp in Inkscape za obdelavo slik, s katerima so si narisali dodatno priponko za kosilo. Nadaljevali so z ukazno lupino bash, ogledali so si kje Linux hrani uporabniška gesla, kako zaščitijo svoje datoteke, kako pišejo skripte, delo s procesi in sestavljenjem “fork” bomb. Zaključili so s sprehodom po oddaljenih računalnikih po svetu, masovnem pošiljanju mejlov in shranjevanj spletnih strani na disk. Poleg tega so spoznali še dokuwiki sistem za uporavljanje s spletnimi stranmi. Vsak dan so zaključili z lovom na skriti zaklad, kjer so prišle prav na novo naučene spretnosti.
Pimp my Android
Na letošnji Android delavnici so udeleženci z izvajalci skupaj razvili vsem dobro znano igro Space Invaders. Začeli so s spoznavanjem razvojnega okolja in osnovami programskega jezika Java, nato pa so že veselo izdelovali kratke aplikacije. Razdelili so se v skupine in pričeli z razvojem igre. Udeleženci so implementirali svoje ideje in nadgrajujevali igrico po svojih željah, zato so nekatere ideje res odštekane! Udeleženci so pravi risarski talenti, saj so samostojno izrisali grafično podobo igre.
Razvili so mobilne igrice, pisali resne aplikacije za urejanje vsakdanjih opravil in uporabili vse čute našega telefona, od pospeškometra in GPS-a do kamere.
Poletna šola strojnega učenja
Na poletni šoli strojnega učenja so se udeleženci udeležili spletnega tekmovanja Amazon.com – Employee Access Challenge. Preden so lahko oddali prvo rešitev, so se morali naučiti nekaj osnovnih algoritmov strojnega učenja. Tako so prvi in drugi dan spoznali linearno in logistično regresijo in se naučili kako ju učinkovito in elegantno implementirati v programskem jeziku Python. Naučili so se tudi kako obravnavati redke matrike, kako uporabljati knjižnico NumPy in kako pomembna je regularizacija. V sredo so si pogledali prečno preverjanje in z njim ocenili kakovost modelov. Spoznali so metriko AUC ter računsko zahtevne dele naših programov prestavili na Amazonove EC2 računalnike. V četrtek so se udeleženci poletne šole sami spopadli s problemom iz spletnega tekmovanja, v petek pa so se naučili, kako združiti napovedi več modelov.
Prijavi napako v članku