ASP - "Algoritmi i strukture podataka", drugi parcijalni, 23.06.2010

25.06.2010

Prekjuče sam radio zadnji ispit iz ovog junskog turnusa. Juče sam krenuo da napišem nešto o ovom ispitu, ali mi mozak ode u ovom smjeru

Šta se radi na ASP-u

Algoritmi i strukture podataka (ASP) su mi bez ikakve dileme omiljeni predmet.

Programiranje se i svodi na dvije stvari:

  1. shvatiti problem koji se treba programirati (skontaj algoritam)
  2. “ispričati” taj algoritam na odgovarajućem programskom jeziku

ASP se najviše bavi ovim prvim dijelom.

PR1 se fokusira na tehnike programiranja, znači praktično na drugu tačku.

Da budem iskren, kada u svakodnevnom poslu rješavanje problema pređe u rutinu, zadatak mi postaje neinteresantan. Moja radna motivacija počinje eksponencijalno padati :).

Zato je valjda i normalno da mi se ASP više sviđa više od PR1.

ASP je takav da kada stvar skontaš – to je to. Sama implementacija algoritma kojeg kontaš je samo pitanje vremena. U programskom kodu koji trebaš napisati nema nikakvih “zamki”.

Tu nema pointera-na pointere-na-pointere kako to kolege sa PR1 vole zadati da bi vidjeli kako studenti vladaju tehnikama programiranja. Da ne bude nesporazuma, ove “zamke” su sasvim legitimne i imaju svoju svrhu u PR1. Međutim, meni jednostavno nisu drage. Ja često na to u svojoj glavi imam problem što moj mozak na takve stvari “padne” jer ih procesira tako što umjesto da traži rješenje postavlja pitanje: “Što se sad ovo uopšte pojavi ?!”

Ali dobro, moj je procesor model Z80 pa nije ni čudo što se brzo zapuši :).

Evo mene, opet ja odoh u neku skroz desetu temu …

Vraćam se na ispit.

Zadaci

Ispit je bio podjeljen na teoretski i praktični dio.

Za razliku od PR1, nismo mogli uzeti listove od zadataka. Nisam siguran da li je to što profesor ne želi da se zadaci “šire” među studentima ili je neki drugi razlog.

Ja ću po sjećanju navesti šta se u mojoj grupi (A) tražilo.

Teoretski dio

Tražilo se objašnjenje algoritama “merge sort”-a i “selection sort”-a. Traženo je da se objasne ovi algoritmi na primjeru zadatog niza od 11 brojeva.

To je bio glavni dio zadatka. Pred toga su bila i pitanja:

  1. kompleksnost algoritma merge sort (samo navesti)
  2. selection sort – navesti i izračunati broj usporedbi i premještanja (kol'ko se sjećam)

Drugi zadatak je bilo objašnjenje “shell sort”-a opet za neki drugi zadani niz, sa razmacima 4-2-1.

Praktični dio

Tu je traženo:

  1. da se napravi C++ kod za FIFO implementaciju reda (FIFO Queue)
  2. napiše funkcija insertion sorta gdje su argumenti matrica integera i dužina te matrice)

Rješavanje

Pregledao sam zadatke i vidio da FIFO Queue nosi 40 poena.

Odmah sam krenuo na njegovu implementaciju sa pomisli: “Kakav sam sporać, mogu i ovaj ispit od čiste situacije napraviti veresiju. Uradiću ovaj što nosi najviše bodova prvi dok sam dovoljno koncentrisan”.

Interesantno je da je queue dinamička implementacija zadnja stvar koju sam u srijedu pred polazak u mostar. Prava sreća.

Još interesantnije je da sad kada pogledam kod koji sam vježbao pred ispit, ja sam na ispitu samo par sahata kasnije skroz drugačije nazive struktura i varijabli koristio :(.

Mislim da bih prije 20 godina u ovakvoj situaciji zadatak bukvalno prepisao iz glave u roku od 15-tak minuta. Ali to više očigledno ne ide. RAM mi se smanjuje i po kapacitetu i po “storage time”-u :).

Zato sam na ispitu kod realizacije radio tako što sam napravio grafičku reprezentaciju reda, pa na osnovu nje radio implementaciju.

Sjećam se da sam “Push” komandu pogrešno uradio – nisam obradio situaciju kada je glava = NULL, pa sam tu funkciju prekrižio i morao je ponovo ispisati.

Tako je rad trajao nekih 50-tak minuta ako ne i čitav sahat.

Vrijeme vrijeme

Nakon Queue-a počeo sam prebirati po tome šta mi je sljedeće najbolje da prevalim 60% … Vrijeme je već utanjilo.

Asistenti su, za razliku od PR1, bili eksplicitni u tome da će se držati predviđenih 90 minuta za “parcijalce” odnosno 2 sahata za “integralce”.

Malo sam zastao i odlučio da ipak uzmem insertion sort funkciju, jer sam to par puta prolazio … Rekoh: “valjda ću ovo napamet znati”.

Ali jok. I to sam opet crtao i na osnovu toga pisao. Ma čovječe ja ništa ne mogu napamet naučiti više. Joj joj joj.

Međutim, nakon par kontrola i usporedbe sa skicom algoritma po kojoj sam kontrolisao napisani kod, trebalo bi da sam na kraju došao do ispravnog rješenja.

Mislim jer ja redovno kod prve iteracije (prvog pisanja koda) napravim pokoju grešku.

Da li sam sada pobijedio sebe, vidjećemo. Kod prvog parcijalnog jesam. Dobio sam maksimum :)

hernad sporać

Tu sam se ja već približio na manje od pola sahata kraju a da još nisam ništa od teoretskih pitanja uradio.

I tu u pomoć uskače profesor. Dolazi i kaže da pazimo da se odvojeno rade teoretski i praktični dio ispita. Raja se počinje buniti. Govore: “Mi smo pisali zajedno, šta sad da radimo !?”.

Profesor je međutim skroz susretljiv, pa kaže: “Evo dobićete još 15-30 minuta za prepisivanje, koliko god vam treba, ali to morate vas prepisati. Uopšte nećete biti bodovani ako na istom papiru budete predali teoriju i praktični dio”.

Objasno je da je razlog za to način pregleda radova: različiti ljude će raditi pregled teoretskog, odnosno praktičnog dijela.

Hvala ti profesore gdje čuo i gdje ne čuo …

Ja sam baš započeo pisati odgovore na preskoke u želji da barem pokažem da znam odgovore na pitanja… Zato sam recimo selection sort objašnjenje dosta loše napisao – na preskoke. Mislio sam ću za par minuta morati predati rad.

Kako je došlo do produženja roka za pisanje, ostale dijelove sam uradio puno bolje.

Ono što je najbitnije, mislim da sam napisao dovoljno, i da je ono što je napisano, ako ne tačno, onda nije ni lupetanje :).

Sigurno će to biti daleko od 100% sa prve parcijale, ali s obzirom na moje ciljeve, sve što rezultira ocjenom u indeksu je pun pogodak.

Nakon ispita me je ruka u ramenu bolila isto k'o da sam “na hladno” odigrao žestoku partiju stonog tenisa.

Završni utisci

ASP je tako napravljen ispit da onaj k'o čestito prođe gradivo ne bi trebao imati bilo kakvih problema sa polaganjem.

Recept: “nabubaj” ?

Ne znam da li se može “nabubati”, vjerovatno može.

Međutim, ubjeđen sa da je onaj to uzme za strategiju spremanja ovog definitivno fulao fakultet.

Profesor

Profesor je doc. dr. Haris Šupić sa sarajevskog ETF-a.

Na prvom parcijalnom je bio zadataka za binarnu pretragu.

Ja sam kod pripreme tog algoritma išao na varijantu koja se razlikovala u odnosu na onu sa predavanja. To sam u ispitu i naveo, i naveo link na svoje vježbe.

Nakon ispita sam mu to preričao. Tačnije, rekao sam mu da mi algoritam za binarnu pretragu iz predavanja nije nikako legao", pa sam pogledao druge varijante na internetu. Ta druga varijanta mi se učinila boljom pa sam se odlučio za nju.

Ukratko u toj mojoj – internet varijanti je unutar while petlje ispitivan “middle” elemenat na jednakost sa traženim elementom.

Profesor me je saslušao i odmah rekao: “Nema problema, postoji niz varijanti algoritma i koju god da ste odabrali – to je ok. To što ste vi našli je bolje na manjem setu podataka, ali se na većem setu algoritam sa predavanja pokazao bolji. Razlog je taj što je operacija poređenja vremenski zahtjevna”.

Fakat ima smisla… Rekao je takođe da je on to na predavanjima objašnjavao.

Ono što me je dojmilo jeste činjenica da je maksimalno strpljivo mom pitanju, te je “u sekundi” skontao šta ga pitam i dao krajnje logičan odgovor. Zna čovjek znanje.

Mislim da je čak prilikom ocjenjivanja mog rada ovo uzeo u obzir. Jer ne mogu vjerovati da nisam napravio nijednu grešku u radu. Znam ja mene :).

Koncept ispita

U ovom članku sam pomenuo “Branin recept”. Mislim da većina komentara koje sam pomenuo kod PR1 po pitanju koncepta ispita, vrijedi i ovdje.

Na tragu te misli, baš bi me interesovalo kako bi studenti uradili ovaj ispit da su mogli koristiti literaturu.

U toj varijanti bi se definitivno moralo konzervativno pristupiti trajanju ispita. Međutim, ja sam ubjeđen da bi i kod ovog ispita oni koji ne znaju opet bili “trofać”.

Što se tiče onih koji su prošli gradivo i shvatili ga u dovoljnoj mjeri, naravno da bi njihovi rezultati bili znatno bolji od postojećih.

Ja za pripremu ovog ispita napravim otprilike 2 i po čitanja:

  • prvi put čitam da skontam o čemu se radi
  • drugi put da memorišem najbitnije, i tu se ponovo zadržavam kao skoro isto vremenski kao i prvi put
  • u trećem čitanju prolazim brzo i to je ponavljanje.

Po Braninom konceptu bi mi za prolaznu ocjenu vjerovatno bilo dovoljno 1 i po čitanje za 60%. Ali za veću ocjenu razlika bi bila neznatna.

Time dolazim do zaključka da bi “Branin koncept” ostvario veću prolaznost.

Međutim, mislim da oni koji “pojma nemaju” ne bi prošli. To su oni koje sam ovdje označio kao vrsta studenata “ublehari”. Čak mislim dase takvi upravo nasukaju jer izgube “prednost” koju u odnosu na druge studente imaju na “klasičnim” ispitima – džonove :).

Naravno, ispit bi u tom slučaju trebalo modificirati na taj način da se ne može jednostavnim prepisivanjem uraditi zadatak. Tako bi recimo zadaci tipa Queue FIFO morali imati neke modifikacije koje bi onemogućile da studenti jednostavno prepišu primjere sa predavanja i vježbi.

Međutim, pogriješio bih kada bih rekao da postojeća forma ispita ne valja.

ASP rezime

ASP je prirodom stvari jedan od fundamentalnih predmeta. Za pripremu ispita Vam trebaju samo predavanja i vježbe (DL materijali). Materijali za predavanja su odlični. Svaka lekcija je praćena odgovarajućim primjerima koji su dobro odabrani. U procesu učenja dobar primjer zlata vrijedi.

Dobri primjeri su istovremeno jednostavni (neopterećeni suvišnim detaljima) i kompletni (sadrže sve što je potrebno da se shvati tema koja se obrađuje). Kod ASP-a svi primjeri zadovoljavaju ove kriterije.

U syllabusu je naveden kao jedan od ciljeva:

Da studenti nauče prepoznati bitno od nebitnog

Svaka čast Harise. To je stvarno bitno naučiti.

Ocjena predmeta: 9,0

Moja ocjena predmeta je 9. Što nije 10 ? Ma kopka me brate “Branin recept” :).

1237 views and 6 responses

  • Mar 16 2011, 8:16 AM
    emina responded:
    ako si iz sarajeva da li bih mogla kupiti od tebe tu knjigu?
  • Mar 16 2011, 9:54 AM
    Ernad Husremović responded:
    Kako sam ti na sms rekao, nemaš potrebu za knjigom iz ASP-a.
    Predavanja i vježbe profesora Harisa su odlične. I za ispit ti ništa, ama baš ništa ne treba.

    To je jedan od rijetkih ispita na kome sam dobio 10-ku a spremao sam isključivo iz nastavnih materijala.

    Ali evo, pogledao sam - imam dvije knjige iz tog predmeta pa ću ti poslati po amidži. Ja ih nisam ni otvorio.

  • Mar 16 2011, 9:57 AM
    emina responded:
    pa nemoj slati ako mi ne trebaju :D imam i ja neku iz asp-a koju sam na fakultetu kupila ali je totalno konfuzna bas su mi danas stigla dva predavanja iz asp-a i nekako mi super interesantno izgleda :D
  • Mar 16 2011, 11:09 AM
    Ernad Husremović responded:
    E to je to ... Ma drži se ti Harisovih materijala. Čovjek zna posao ...

    A što se knjiga tiče, vidim da se pojavljuju isti autori kao na predmetu UBP sa druge godine ... a ti materijali definitivni nisu ono što bih mogao okarakterizirati kao dobro http://hernad.bring.out.ba/uvod-u-baze-podataka-zbrkizacija

    Dobro dogovorili smo ... A ako nekom drugom slučajno zatrebaju ove knjige, čekaju ga gratis :)

  • Mar 23 2011, 12:05 PM
    emina responded:
    e ovako radim ove zadatke sto smo dobili za vjezbu iz asp pa sam zapela :D :D :D
    moze li pomoc?
    Pretpostavimo da neki algoritam ima vremensku kompleksnost T(n) = 52n. Nadalje,
    pretpostavimo da je za veličinu ulaza n potrebno vrijeme za izvođenje tog algoritma
    jednako t. Sada pretpostavimo da koristimo računar koji je 128 puta brži. Koja veličina
    ulaza bi se mogla obraditi na tom računaru u t sekundi?
    (b) Pretpostavimo da neki drugi algoritam ima vremensku kompleksnost T(n)= n2, te da
    izvođenje tog algoritma na nekom računaru za veličinu ulaza n uzima t sekundi.
    Pretpostavimo sada da je neki drugi računar 128 puta brži. Koja veličina ulaza se može
    obraditi na novom računaru u t sekundi.
    (c) Treći algoritam ima vremensku kompleksnost T(n)= 4n. Izvođenje tog algoritma na nekom
    računaru traje t sekundi za veličinu ulaza n. Koliku veličinu ulaza se može obraditi u t
    sekundi na računaru koji je 128 puta brži.
    po kojoj formuli se rade ovi zadaci?
    hvala :D
  • Mar 23 2011, 11:48 PM
    Ernad Husremović responded:
    Emina, najbolje ti je ovakva pitanja postaviš na studentskim forumima http://cs.fit.ba. Tamo je to raji aktuelno i sigurno će se naći neko ko ti može pomoći.

    Pročitao sam zadatke, ali ti na ovo ne bih znao odgovoriti. Principa se sjećam, ali bih za izradu trebao ponovo pregledati nastavne materijale. Za to bih trebao dosta vremena koga na žalost nemam.