Articles

ranting

Topics

Notes

Worth reading

Recent rants

rant
22 Apr 2008

This is an idea that could be used for a base for some sort of a science-fiction story. It’s not particularly brilliant, in fact it is a little naïve, but I find it interesting enough to write down.

Imagine an alien civilization of social creatures. Their social instincts are very strong, the creatures are very empathetic and selfless, always ready to help each other. In fact, they are the perfect society, at least in the views of human morality. For visualization let say they are winged hominids, although tentacled slimy jellies would work too. In such a society there are always single individuals who are less “social”: selfish, greedy, with large egos. Although they are still almost angelic by human standards, they stick out like a sore thumb: they gain all sorts of riches and successes. In fact, selfishness, greed, etc. are considered to be virtues! Everyone wants to be like that, the mothers rise their children to be as naughty as possible. Alas, they can’t fight their nature and the differences are really slight when viewed from outside.

Now, imagine that civilization making contact with humans, as we are like now. For us they are the embodiment of all good – for them, we are the perfect beings. Both want to be like the other, and at the same time both secretly enjoy the way they are – secretly, because it results in regrets.


Add a comment

rant
20 Mar 2008

Trafiłem ostatnio na dość ciekawą bibliotekę dla Pythona, nazwaną SPARK, oraz kilka prac naukowych służących za jej dokumentację. Przypomniało mi to o mojej pracy magisterskiej, oraz “uzupełnieniu”, które już po obronieniu pracy miałem napisać – leży wciąż odłogiem, nagryzione. A dlaczego? Moja praca była przeglądem technik parsowania gramatyk bezkontekstowych, a jednym z najtrudniejszych do pojęcia dla mnie był algorytm parsowania Earley-a, wykorzystywany właśnie we wspomnianej bibliotece. Zresztą celem napisania “uzupełnienia” było dokładne “wyczucie” tego parsera – zrozumienie go nie tylko w teorii, ale także oswojenie się z tym co on dokładnie robi. Cel nie został nadal osiągnięty – ale wspomniane prace naukowe trochę mnie natchnęły: wypożyczyłem z biblioteki trochę makulatury i planuję dokończyć com zaczął.

Ale ja nie o tym... Przypomniałem sobie swoje pisanie pracy i fakt, że dopiero grożący mi nabór do wojska zmobilizował mnie do jej skończenia – choć przez całe dwa lata cały czas wydawało mi się, że przecież mam wszystko co potrzebuje zebrane a teraz wystarczy to “tylko” zapisać. Dopiero jak przyszło do zapisywania, to się okazało jak dużo brakuje, ile błędów i niedociągnięć trzeba było naprawić. Oczywiście cały czas mi się wydawało, że to co piszę jest bardzo dobre. Muszę w tym miejscu bardzo podziękować za cierpliwość mojemu promotorowi. A raczej obu promotorom, bo niestety przekroczyłem próg wytrzymałości pojedynczego człowieka.

Teraz widzę swoich przyjaciół męczących się w podobnej sytuacji. Tak samo jak ja wówczas, oni także nie zdają sobie sprawy z tego ile pracy wymaga praca. Ale przede wszystkim nie widzą, że nie jest to ten sam rodzaj pracy co przy zadaniach domowych albo egzaminach – że tu nie wystarczy się nauczyć i potem to zapisać. I kiedy tak patrzę, to uświadamiam sobie smutny fakt: ani oni ani ja nie mieliśmy tak naprawdę przed pracą magisterską styczności z pracami naukowymi! Studenci są skrzętnie od nich izolowani: mają wykłady i notatki z wykładów, mają podręczniki i zestawy ćwiczeń, mają w końcu różne skrypty i materiały przygotowane przez wykładowców – wszystkie pozbawione “stylu akademickiego” wymaganego w pracach naukowych. Wszystko, czego się od nich wymaga do zadania domowe, egzaminy pisemne i może czasem jakieś większe wypracowanie – czyli właściwie formy znane ze szkoły podstawowej. Praca naukowa wymaga zupełnie innego podejścia, przede wszystkim wymaga dogłębnego zrozumienia materiału, nie tylko jego opanowania. Następnie musimy to, co wiemy, opisać – ale nie tak jak na egzaminie, tylko udowodnić że umiemy – tutaj musimy przedstawić to w przejrzystej i spójnej formie, bez żadnych braków i niedopowiedzeń. To jest niesłychanie trudne i wymaga spojrzenia na zagadnienie z bardzo wielu różnych stron – dlatego właśnie niezbędne jest doskonałe opanowanie danego zagadnienia.

Co można zrobić żeby ułatwić studentom zapoznanie się z wymogami prac naukowych? Jak można im pomóc ocenić i porównać ich własne prace? Przede wszystkim muszą mieć kontakt z dobrze napisanymi pracami: zatem zadania domowe polegające na przeczytaniu i opracowaniu jakiejś pracy, zaimplementowaniu opisanego w pracy naukowej algorytmu czy nawet na analizie i wskazaniu błędów lub braków w pracy. Dalej, muszą mieć okazję napisania tego typu prac sami – oczywiście w dużo mniejszej skali, na temat prostych i doskonale znanych zagadnień – bo przecież napisanie pracy naukowej jest trudne nawet na tematy proste i doskonale znane. Dalej, być może jakiś cykl wykładów (i ćwiczeń) traktujących o stylu i technikach pisania pracy, o warsztacie, o ogólnie przyjętych tradycjach. W końcu każdy naukowiec musi się ich prędzej czy później nauczyć, często metodą dość bolesnych prób i błędów.

Cóż więcej pozostaje mi powiedzieć? Jeśli jesteś studentem, to zapytaj wykładowców lub promotora o przykłady dobrze napisanych prac naukowych. Jeśli prowadzisz jakieś zajęcia, spróbuj nakłonić studentów do zapoznania się z, bogatymi wszak, zasobami biblioteki.


Show/hide comments

Ee.. a kogo interesuje “dobrze napisana praca”?

Pomijając maniaków(którzy docelowo i tak wylądują na doktoranckich i będą musieli temat kontynuować) - podejrzewam że wszyscy albo prawie wszyscy studenci na 4-5 roku myślą już nie o tym by napisać “dzieło swojego życia”, ale raczej by wreszcie zakończyć ten etap w życiu. Albo też by właściwie wykorzystać tę resztę czasu która im została do ukończenia studiów. W obu przypadkach pracę się pisze “na odpieprznego” ;>

Andrzej Dopierała 2008-04-01 20:06 UTC


A ja się nie zgadzam. Radek ma tutaj dużo racji, i to z kilku powodów.

  1. Sporo osób będzie potem pisało różne inne formy literackie: podania o pracę, tzw. cv, raporty dla szefów, dokumentacje kodu, artykuły do gazet, uzasadnienia wyroków i masę innych, w zależności od zawodu i wykonywanej pracy (celowo pomijam naukowców). A po tych tekstach nieraz widać kompletną biedę warsztatową.
  2. Ja wiem, że może dziś mało kto to bierze na poważnie, ale człowiek naprawdę ma obowiązek (moralny) rozwijać swoje zdolności, a nie wegetować na dostatecznych minus minus całe życie.
  3. Jest jasne, że najczęściej celem pisania pracy magisterskiej nie jest napisanie pracy magisterskiej. Celem p. p. m. jest nauczenie się pisania na poziomie, którego każdy ma prawo oczekiwać od elity intelektualnej (czyli m.in. ludzi po studiach wyższych).

Poza tym, nikt nie twierdzi, że praca mgr. to dzieło życia – raczej jedna z paru prac zaliczeniowych, może nieco większa...

Marcin Borkowski 2008-04-01 20:34 UTC


Przede wszystkim zacznijmy od tego, że skonczenie uniwersytetu ma oznaczać umiejętność prowadzenia badań naukowych – inaczej by sprzedawali dyplomy w kiosku ruchu. Etap w życiu możesz ukończyć w każdej chwili, nikt Cię na uczelni nie trzyma, nie chcesz zdobywać tych umiejętności, to nie zdobywaj. O “właściwym” wykorzystaniu czasu już nic nie napiszę, bo po prostu brak mi słów.

I potem się dziwimy że poziom szkolnictwa schodzi na psy.

(I nie mów mi, że poszedłeś na uniwerek żeby się nauczyć praktycznych umiejętności, a nie jakichś wydumanych naukowych wymysłów – trzeba było iść na politechnikę, tam się uczą matematyki dyskretnej na piątym roku.)

RadomirDopieralski 2008-04-03 21:20 UTC


Add a comment

rant
15 Jan 2008

Uważam, że fizycy i matematycy (oraz informatycy piszący pracę) powinni rozważyć naukę Pythona. Dlaczego? Jest ku temu kilka powodów:

  • Szybkie sprawdzanie algorytmów – zazwyczaj zaimplementowanie jakiegoś algorytmu w Pythonie, tak na szybko, żeby tylko zobaczyć czy działa, to jest kilkanaście minut. Oczywiście jeśli algorytm nie był za dobry, to przeradza się to w godziny dłubania.
  • Nie trzeba kombinować z kodem wczytującym dane, formatującym wyniki – Python ma na tyle elastyczną i przejrzystą składnię, że możemy większość rzeczy wpisać na sztywno.
  • Dosłowne tłumaczenie wzorów matematycznych. Na przykład wzór \sum_{i=1}^{10}i^2 przekłada się na kod Pythona:
sum(i**2 for i in range(1, 10))

a wzór \min_{x\in X, x>3}f(x) na kod:

min(f(x) for x in X if x>3)
  • Typy danych takie jak listy, słowniki, zbiory, dokładna reprezentacja dziesiętna (moduł decimal), stosy, kolejki, kolejki priorytetowe, macierze.
  • Wydajne implementacje podstawowych algorytmów, jak sortowanie czy operacje na zbiorach.
  • Doskonały generator liczb pseudolosowych (Mersenne Twister), z bogatą gamą gotowych funkcji.
  • Specjalistyczne moduły obliczeniowe, których niestety za dobrze nie znam.
  • Funkcje-generatory, upraszczające budowę wszelkiego rodzaju automatów stanowych.
  • Banalnie proste operacje na tekstach i sekwencjach elementów.

Jeżeli piszesz jakąś pracę i musisz w niej podać przykłady działania algorytmu, ilustracje, wykresy, diagramy – Python przychodzi Ci z pomocą. Implementacja algorytmu pozwala także zazwyczaj znacznie lepiej go zrozumieć.

Na zachętę, przykłady dwóch prostych algorytmów Branch and Bound: 1ETj, BnB


Add a comment

Next page