A ja się chciałem czegoś nauczyć…

A ja się chciałem czegoś nauczyć…

Jestem studentem I-go roku Informatyki an Uniwersytecie Wrocławskim. Geniuszem nie jestem, jednak za idiotę się nie uważam. No może trochę leń ze mnie… 😉 Ale to nie ważne. Poszedłem na studia w celu “poszerzenia horyzontów”, a spotkałem się z, momentami, żenującym poziomem nauczania, prowadzącym do niczego innego jak zrezygnowania i demotywacji. Jak to się dzieje?

Matematyka jest podstawą pracy każdego programisty (nie javowego klepacza z fermy). Jej naukę na studiach zwykle zaczynamy od logiki, która ma usprawnić proces precyzyjnego opisywania problemu, szukania i dowodzenia rozwiązania dla niego. Jest to przedmiot którego z powodzeniem można nauczać w gimnazjum, co by prawdopodobnie zwiększyło naukowe zdolności uczniów. Ale do rzeczy: sposób nauczania tego przedmiotu z jakim się spotkałem na studiach, był żenujący. Trochę na własne życzenie, ponieważ wybrałem nurt “P” (prostszy – było to zalecane odgórnie dla studentów, którzy nie zdali matury rozszerzonej z matematyki zbyt dobrze – m. in. ja). Miało być prościej, a było trudniej. Wykładowca miał problemy z jasnym przedstawianiem prostych dowodów, ciągle się mylił, wykład był nudny i mało treściwy. Musiałem uczyć się sam, dzięki czemu zdałem. Jako jeden z nielicznych. Prostszy nurt zaliczyło 20 na 80 osób. Brak przekazania podstawowych wiadomości z teorii mnogości, wytłumaczenie zasady indukcji matematycznej “po łebkach”, brak objaśnienia unifikacji czy udowadniania sprzeczności formuły przez rezolucję, robienie list ćwiczeń po 3-4 tygodnie jednej (na których de facto były trywialne zadania). Po pierwszym semestrze, z ledwo zrozumianą logiką, zostałem puszczony dalej – jak wiele innych osób. To się nie mogło skończyć dobrze.

I się skończy za parę dni źle – złe przygotowanie z logiki odbija się na algebrze czy programowaniu, gdzie musimy być już wprawni w dowodzeniu. Efektem tego będzie niezaliczony semestr dla większości ludzi z roku. Owszem studenci są leniwi – ale jak mamy ogarnąć coś na wyższym poziomie, skoro podstawa leży? Jak mamy się rozwijać, skoro nas olewają? Ale to jest nic w porównaniu do ostatniego wyczynu naszego wykładowcy z Programowania. Programowanie to przedmiot na którym poznajemy języki deklaratywne (takie jak Haskell czy Prolog) i podstawy teorii języków programowania. Brzmi to fajnie – uczymy się czegoś bardziej rozwijającego niż klepanie aplikacji klienckich w Javie. Na przedmiocie obowiązuje tzw. “pracownia” – odgórnie narzucone 3 zadania do rozwiązania w wyżej wymienionych językach. Tez brzmi dobrze – uczymy się wykorzystywać te narzędzia do konkretnych celów. Gdzie jest więc kruczek? Kruczkiem jest 2-ga pracownia. Jako studenci pierwszego roku, niektórzy wcześniej w ogóle nie programujący, mamy wykonać takie oto zadanie. Problem polega w tym, że 90% wiadomości potrzebnych do wykonania tej pracowni wykracza poza materiał studiów I-go czy nawet II-go stopnia. Musimy wiedzieć co to jest maszyna abstrakcyjna, semantyka naturalna/operacyjna. To są części programu Programowania na poziomie magisterskim, nie licencjackim, a i tak poznajemy tam semantykę języków imperatywnych, a nie deklaratywnych. No i oczywiście – tych wiadomości na wykładzie z Programowania nie było. Mamy je sobie znaleźć, co często graniczy z cudem i dla niektórych jest niedostępne – materiały rzadko spotykane i przeważnie w języku angielskim (dla mnie nie problem). Dalszy problem z tym zadaniem jest taki, że jest ono niedospecyfikowane (jak widać pod linkiem). Mamy sobie wywróżyć z kuli jak ten język działa – nie ma nawet podanych reguł semantyki naturalnej, która jest podstawą implementowania interpretera jakiegokolwiek języka. Nie było też mówione jak implementować język leniwy, nie mówiąc o full lazyness. Pytam się więc jak ma to zrobić przeciętny student 1-go roku, skoro na wykładzie były omówione tylko takie rzeczy jak lekser i parser? Po napisaniu tych dwóch rzeczy dalej nie wiem za co się zabrać.

Powyższy akapit jest pełen, dziwnych dla większości czytelników, zwrotów, które zrozumieją tylko ludzie w trakcie bądź po studiach informatycznych. Przynajmniej powinni. Ale jeżeli ktoś jest po takich studiach, to niech oceni czy to zadanie (ale też cały przedmiot) jest odpowiednie dla studentów pierwszego roku. Niech sam spróbuje wykonać to zadanie. Bo ja mam wrażenie, ze to jest zabieranie się za sprawę od d**y strony. Rzucanie ludzi na głęboką wodę i liczenie na to, ze nauczą się pływać w parę sekund to nie sposób na naukę.

Sobie i innym studentom na tej uczelni życzę zmiany podejścia prowadzącego ten przedmiot i zaliczenia tego semestru (jeszcze mamy 3-cią pracownię:P), a samą uczelnię polecę każdemu kto chce studiować computer science. Na UWr naprawdę warto studiować tę naukę. Mamy tu wielu specjalistów i trochę inny styl nauczania (bardziej motywujący niż na innych uczelniach), ale niestety nie ma róży bez kolców. Jak widać…