Czy wykładowcy na studiach informatycznych uczą programować?
Młodzież o zainteresowaniach związanych z informatyką kończąc szkołę średnią czyli liceum lub technikum i posiadająca pewną podstawową wiedzę na temat programowania (zdobytą głównie z książek) narzeka na to iż na studiach tak naprawdę nie uczy się programować. Jest to błędne myślenie świadczące o tym iż dana osoba nie ma bladego pojęcia o naukach komputerowych…
Wiele osób narzeka na brak odpowiedniego poziomu nauczania informatyki w szkołach oraz uczelniach wyższych, pisałem zresztą na ten temat w artykule "Poziom nauczania informatyki w szkołach…". Ciekawi mnie jednak co takie osoby oczekują od wykładowców i nauczycieli? Tworzenie od podstaw systemu operacyjnego czy jakiejś innej bardzo rozbudowanej aplikacji wymaga zaawansowanej wiedzy z różnych dziedzin i współpracy wielu osób. Aby dojść do takiego poziomu najpierw należy zdobyć odpowiednią wiedzę związaną z matematyką, fizyką czy budową komputera. Niestety młodzież pod pojęciem „programowanie” nie rozumie, że to tak naprawdę nauka matematyki czy fizyki. Spójrzmy zresztą co na ten temat mówi wszechwiedząca Wikipedia i sprawdźmy jak tam zostało wytłumaczone pojęcie "programowanie":
Programowanie komputerów to proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów komputerowych lub urządzeń mikroprocesorowych (mikrokontrolery). Kod źródłowy jest napisany w języku programowania, z użyciem określonych reguł, może on być modyfikacją istniejącego programu lub czymś zupełnie nowym. Programowanie wymaga dużej wiedzy i doświadczenia w wielu różnych dziedzinach, jak projektowanie aplikacji, algorytmika, struktury danych, znajomość języków programowania i narzędzi programistycznych, wiedza nt. kompilatorów, czy sposób działania podzespołów komputera. W inżynierii oprogramowania, programowanie (implementacja) jest tylko jednym z etapów powstawania programu. – Źródło: Wikipedia.
Młodzież kończąca szkołę średnią i wybierająca się na kierunki informatyczne oczekuje iż tam będzie mogła rozwinąć wreszcie skrzydła i zacząć tworzyć produkty zmieniające świat. Czar ten szybko pryska kiedy tak naprawdę okazuje się, że nauka nie polega na poznawaniu nowych języków programowania, wzorców projektowych itd. tylko całek, pochodnych i innych tego typu elementów matematyki. Nie da się bowiem tworzyć aplikacji nie znając podstaw informatyki. Należy również przygotować się na myślenie logiczne bowiem budowanie stron w HTML czy CSS to nie jest programowanie. Więcej na temat „pseudo programistów” pisałem zresztą w artykule: "Vlogerzy, blogerzy i pseudo programiści – czyli specjaliści od wszystkiego…". Na łamach tego wpisu poprosiłem również o rozwiązanie jednego zadania z informatyki oraz wyjaśnienie na czym polega algorytm Bellmana-Forda i algorytm kompresji danych metodą Huffmana. Jeśli chodzi o zadanie z programowania, to po wielu nieudanych próbach wreszcie znalazła się osoba, której częściowo udało się rozwiązać tą jakże skomplikowaną łamigłówkę poprawnie. Nikt jednak nie wyjaśnił na czym polegają dwa wspomniane przeze mnie algorytmy. Czyżby przyczyną takiego stanu rzeczy był brak odpowiedniej wiedzy z zakresu matematyki?
Studia informatyczne nie są proste ale czy ktoś powiedział, że programowanie jest banalne? Może tworzenie stron WWW tak, ale projektowanie poważnych aplikacji już nie. Wykładowcy na uczelniach wyższych powinni podnosić (oczywiście w granicach rozsądku) poziom zajęć związanych z naukami komputerowymi oraz matematyką czy fizyką. W końcu jedno z drugim się wiąże…
Tak… no jasne:) Argument o matmie i fizyce jako niezbędnej w informatyce najczęściej forsują „profesorowie” tych dwóch pierwszych nauk:) Niestety nie wyjaśnie na czym polegają ów dwa algorytmy ale nie zmienia to faktu że bez tego mogę robić blogi na WP, pisać własne CMS’y czy najróżniejsze aplkkacje,. Mogę też być sysadminem ogarniając setki jeśli nie tysiące stacji roboczych, serwerów, routerów czy baz danych i oczywiście będę używał takich lub innych algorytmów kompresji. Być może dowiem się zaraz że to co wymieniłem to nie jest informatyka, w takim razie spytam czym to jest? A program studiów jest tragiczny: przedmioty z których wymagania są największe to logika, analiza, numerki i dyskretna:) A programowanie? Kto umie ten programuje a reszta szuka kogoś kto by im napisał program zaliczeniowy:) Pisze to z własnego doświadczenia (UJ FAIS) ale też z wiarygodnych opowieści znajomych którzy będąc w technikum pomagali studenciakom na 2 czy 3 roku na programowaniu:)
Oczywiście niektóre przedmioty na studiach wyższych takie jak teoria mnogości to bez zasadna nauka jakiś „szlaczków” itd. ale z drugiej strony bez znajomości tego oraz materiału choćby z analizy matematycznej nie da się napisać jakiejś ciekawej gry czy innej interesującej aplikacji. Każdy kto aspiruje do bycia programistą powinien znać bardzo dobrze matematykę. Inaczej sprawa kształtuje się jeśli chodzi na przykład o adminów tutaj można trochę odpuścić ale nie zwalnia to nikogo z braku podstawowej wiedzy dotyczącej algorytmów takie serwery trzeba przecież jakoś zabezpieczyć przed atakami hakerów oraz innymi niebezpieczeństwami. Co do klepania CMS’ów oraz blogów na WP tutaj doskonała znajomość np. technik dotyczących kompresji danych itd. jest bardzo ważna, oczywiście tylko wtedy kiedy dana strona ma spory zasięg bo w innym przypadku nawet szkoda zachodu. Jeżeli szczytem twoich ambicji jest klepanie w HTMLu jakiś stronek to powiem Ci że nawet szkoda męczyć się na studiach…
Czy możesz podać przykładów algorytmów niezbednych lub przydatnych przy zabezpieczeniu serwerów?
RSA – algorytm, który powinien znać każdy programista ;), Data Encryption Standard (przykład z poprzedniego wieku xd), AES, Captcha – jeden z najpopularniejszych, Classifying Search Query Traffic oraz różnego rodzaju algorytmy rozróżniające boty od ludzi, które implementowane są w firewall’ach itd.
I czy to wszystko naprawdę trzeba znać od podszewki jak działa czy wystarczy wiedzieć co ma jakie zalety/wady + gdzie się je stosuje?
Jeżeli chcesz zajmować się zawodowo informatyką, programowaniem i pracować w jakiejś firmie nad różnego rodzaju projektami to nie wyobrażam sobie, żebyś nie znał od podszewki kluczowych w informatyce algorytmów: huffmana, RSA, AES itd. jeżeli ty jako programista nie będziesz tego znał, to w takim razie kto ma to umieć? Może zapytajmy humanistów… PS: W IT nie płaci się takich wielkich pieniędzy za nic, trzeba coś wiedzieć i nie wystarczy tutaj przeczytać paru książek o HTMLu ;)
Dziękuje za przedstawienie swojego zdania razem z argumentacja :) Pozdrawiam
Byłoby mi miło, gdyby znał Pan podstawy takiego abstrakcyjnego języka „mówionego” jakim jest język polski. Nie będę wnikał w szczegóły, pokażę co należy poprawić: „wiąrze”, „wszech wiedząca”, „podnośni”.
Zawsze staram się sprawdzić wpis przed publikacją pod kątem błędów ortograficznych, ale nie zawsze wszystko udaję się wyłapać. W każdym razie dziękuję za informacje, już wszystko zostało poprawione ;)