Dlaczego mam problem ze zdaniem tego przedmiotu? #
Każdego roku duży procent studentów ma problem z zaliczeniem tego przedmiotu. Przyczyn tego stanu rzeczy jest wiele. Poniżej zamieszczamy krótki spis tych, które obserwujemy najczęściej.
1. Brak biegłości w programowaniu #
Laboratoria wymagają napisania działającego programu w relatywnie krótkim czasie. Tymczasem co roku widzimy, że wielu studentów ma problem z absolutnymi podstawami języka C. W efekcie większość czasu marnują szukając trywialnych błędów w swoim kodzie lub gorączkowo szukając w internecie odpowiedzi na podstawowe pytania.
Trzeba pamiętać, że programowanie jest umiejętnością głównie praktyczną. Sama teoretyczna znajomość języka to za mało, trzeba również ćwiczyć pisanie programów. Z drugiej strony często obserwujemy również znaczące braki w teorii - np. w zrozumieniu modelu pamięci języka C.
Do zaliczenia tego przedmiotu konieczne jest nie tylko zdanie “Programowania” 1 i 2 na dobrą ocenę ale również samodzielne szlifowanie swoich umiejętności programistycznych. Nie można o tym myśleć jako o 3Z (,,zakuć, zdać, zapomnieć’’), bo to są absolutne podstawy, na których potem budujemy. Kiepska ocena z tych przedmiotów, lub co gorsza ich powtarzanie, powinno być mocnym sygnałem, że musimy włożyć dużo więcej samodzielnej pracy.
2. Brak biegłości w obsłudze komputera #
Z przykrością obserwujemy, że wielu studentów ma niewielkie umiejętności w obsłudze komputera. Zapewne wiąże się to z rosnącą rolą smartfonów jako głównego urządzenia codziennego użytku. W efekcie proste i powtarzalne zadania na laboratorium (obsługa plików, pisanie kodu, kompilacja, uruchamianie programu) zajmują dużo więcej czasu niż powinny. Jest to o tyle bardziej dotkliwe, że nasze komputery w laboratorium nie należą do najszybszych.
Komputer jest podstawowym narzędziem pracy programisty. Umiejętność odpowiedniego przygotowania swojego narzędzia pracy i jego używania jest absolutnie fundamentalna w każdej dziedzinie. Będąc na studiach informatycznych warto zainwestować dodatkowy czas naukę tych umiejętności. Jest to zagadnienie po części poruszane przez przedmiot “Podstawy systemu Unix”, jednak jak zawsze, sam przedmiot to za mało, żeby nabyć wystarczającej biegłości. Warto zwłaszcza poświęcić czas na odpowiednie skonfigurowanie swojego środowiska na komputerze laboratoryjnym (można to zrobić w sali 311).
3. Za mało czasu poświęconego na naukę #
“Systemy operacyjne” są przedmiotem stosunkowo trudnym - ale bardzo ważnym, stanowiącym fundament dla innych zagadnień. Studia zakładają, że studenci, poza czasem spędzonym na zajęciach, uczą się też w domu.
Nie da się podać tutaj konkretnej liczby godzin - każdy w uczy się w innym tempie, zależnym od predyspozycji oraz dotychczasowych umiejętności. Do przygotowania na punktowane laboratorium studentowi, który ma już duże doświadczenie programistyczne i nie ma problemów ze zrozumieniem wykładu może wystarczyć przeczytanie tutoriala oraz rozwiązanie jednego z zadań przykładowych (~2-3 godziny pracy). Z kolei osoba wciąż mająca problemy z podstawami (punkty 1-2) musi spędzić znacząco więcej czasu na przygotowania i rozwiązać więcej zadań. Na zajęciach widzimy często, jak studenci dopiero zapoznają się z tutorialem - wynik jest wtedy przewidywalny.
Podczas jednej z edycji przedmiotu pewien student z własnej inicjatywy mierzył czas spędzony na przygotowanie do laboratorium, a swoje wyniki zamieszczał na stronie. Student ten zdał przedmiot, można więc potraktować te wartości jako pewne odniesienie.
4. Uczenie się w niewłaściwy sposób i nadużywanie AI #
Poza samym czasem poświęconym na naukę ważny jest też sposób jego wykorzystania. Ogólnie rzecz biorą właściwym sposobem nauki na laboratoria jest samodzielne rozwiązanie jak największej ilości zadań. Przeczytanie wykładu i tutoriala jest ważne, ale tylko jako wstępny warunek do późniejszego rozwiązywania zadań - żeby wiedzieć, gdzie wrócić, gdy napotkamy problem.
W szczególności błędem jest myślenie, że wystarczy przejrzeć rozwiązania kolegów lub też wygenerowane przy użyciu AI. W ten sposób nie budujemy biegłości a jedynie złudne poczucie opanowania tematu. Zwłaszcza kod wygenerowany przez AI często uczy złych praktyk, te narzędzia są niestety wciąż niedoskonałe.
5. Niewłaściwe podejście do przedmiotu #
Wielu studentów uważa, że przedmiot jest zbyt trudny, niepotrzebny lub nieprzydatny w prawdziwym życiu i pracy zawodowej. W efekcie próbują zaliczyć przedmiot po “linii najmniejszego oporu”, nawarstwiają zaległości i ostatecznie nie zdają.
O ile jest prawdą, że przedmiot jest dość trudny, jest też on jednocześnie fundamentalny, jeżeli zamierzamy dalej zajmować się informatyką. To, co jest tu omawiane, to są wciąż absolutne podstawy, bez których nie można iść dalej. Wiedza i umiejętności zdobyte na SOPach jest w rzeczywisty sposób przydatna (wręcz niezbędna) w wielu praktycznych zastosowaniach.
Oczywiście, jeżeli czyimś celem jest tzw. vibe-coding np. stron internetowych SOPy są dla niego nieprzydatne. Warto jednak zauważyć, że w takiej sytuacji nieprzydatna jest też przytłaczająca większość przedmiotów z programu studiów. Jeżeli planujemy taką ścieżkę kariery to prawdopodobnie lepszym posunięciem będzie zarzucenie studiowania i rozpoczęcie wymarzonej pracy.
6. Inne predyspozycje #
Jeżeli pomimo unikaniu opisanych wyżej pułapek wciąż uzyskiwanie dobrych wyników sprawia duży problem, być może posiadamy po prostu inne predyspozycje. W praktyce, jeżeli nie potrafimy czerpać satysfakcji z programowania, studia (a potem praca) stają się tylko źródłem frustracji i przyczyną wypalenia. Żeby osiągnąć (i utrzymać) odpowiednią biegłość należy spędzać na programowaniu odpowiednio dużo (również wolnego) czasu - a żeby to robić, trzeba robić to z przyjemnością.
Na końcu warto pamiętać, że istnieje wiele innych bardzo ciekawych ścieżek rozwoju naukowego i zawodowego. Może warto je zgłębić?