Archive for October, 2010
[Oxford] szkoła, czyli chodźmy na zajęcia
Posted on October 12, 2010, under Inne.
Kilka słów o samych zajęciach. Właśnie zaczął się trzeci tydzień roku akademickiego tutaj, więc mogę już coś opowiedzieć o samych modułach, czyli przedmiotach, które realizuję w tym semestrze. Jeszcze przed wyjazdem wybrałam cztery. O jeden za dużo, bo w zasadzie potrzebne mi są tylko trzy. Miałam z jednego zrezygnować i pewnie jeszcze to zrobię, jeśli mi się uda, chociaż na mojej macierzystej uczelni twierdzą, że nic by mi się nie stało, gdybym zrobiła cztery. Oczywiście, że nic by się nie stało, ale nie ma to aż tyle czasu :)
Studenci w Brookes’ie w jednym semestrze nie robią więcej niż trzy, albo cztery moduły. Do tego często (przynajmniej na studiach magisterskich) dochodzi jeszcze przedmiot ‘Research & Study Methods’, który trwa przez dwa semestry i jest faktycznie pisaniem pracy magisterskiej – najpierw poszukiwanie materiałów w pierwszym semestrze, a potem pisanie pracy w drugim. Ponieważ ja jestem tu tylko semestr nie realizuję tego modułu.
Powiedzmy sobie szczerze – tu nikt się nie przepracowuje specjalnie. Na jeden moduł przypadają 3h zajęć w tygodniu – 2h wykładu i 1h zajęć praktycznych, tzw. practicals, przy czym nie na wszystkich przedmiotach zajęcia praktyczne się odbywają, nieraz mają formę konsultacji. Forma zaliczenia zajęć też może być różna. Najczęściej to pewna kombinacja oceny z egzaminu i projektów (jednego lub kilku), które robi się przez cały semestr i oddaje pod jego koniec do sprawdzenia. W moim przypadku trzy z czterech modułów kończą się egzaminem.
Same nazwy przedmiotów, które tu realizuję niewiele mówią, więc napiszę kilka słów o każdym z nich.
Formal Software Engineering – Formalna Inżynieria Oprogramowania
To jedyny przedmiot bezpośrednio związany z inżynierią oprogramowania, jaki miałam do wyboru – nad czym ubolewam. To dosyć wąska jej dziedzina i na zajęciach będziemy głównie zajmować się Metodą B (B-Method) – przynajmniej w pierwszej części semestru. Ideą jest tworzenie specyfikacji systemów wolnych od błędów. Tak, brzmi surrealistycznie, ale wszystko opiera się na opisywaniu problemów matematycznie i automatycznym dowodzeniu poprawności ich rozwiązań. Oczywiście nie robi się tego dosłownie ręcznie, ale za pomocą odpowiednich narzędzi. I dalej następuje automatyczna konwersja specyfikacji na kod np. w C. Zachęcający jest fakt, że słynna paryska linia metra nr 14 została zaprojektowana z użyciem tej metodyki i jak na razie (tfu-tfu) wszystko działa znakomicie. Dodam tylko, że na wspomnianej linii metra poruszają się pociągi sterowane centralnie przez system komputerowy – zatem w pociągu nie ma kierowcy! Najfajniej oczywiście siedzi się w pierwszym wagonie – jak w pociągu widmo – rewelacja, polecam! :)
Structured Data – Strukturyzacja danych
Nazwa tego modułu ewidentnie kojarzy mi się ze strukturami danych, ale ten moduł skupia się na sposobach zapisu danych w bazach danych. Ponadto jest odseparowany od konkretnych rozwiązań, więc nie opiera się na porównywaniu MySQL z Oracle, ale dużo bardziej ogólnie. Podzielony jest na 2 części – pierwsza to typowe relacyjne bazy danych, druga to struktury drzewiaste, czyli XML. Coursework podzielony jest na 3 części – jedna z relacyjnych baz danych, druga z XMLa, a trzecia z połączenia dwóch poprzednich. Jak do tej pory nie mogę powiedzieć, że nauczyłam się czegoś nowego, bo zaczęliśmy od SQL i podstaw relacyjnych baz danych. Natomiast mniej więcej połowa uczestników tego modułu pierwszy raz widziała bazę danych na oczy, więc nie wróżę temu modułowi zbytniego skomplikowania w przyszłości.
Middleware – Oprogramowanie pośredniczące, albo po prostu Middleware
To coś, czego u nas w programie nie ma w ogóle. Wykład bardzo interesujący, ale poza tym jak dla mnie za dużo Unixa, C i programowania rozproszonego ;) Coursework to napisanie kolejki RPC w C z użyciem PVM, która ma działać na uczelnianym klastrze.
Paradigms of Programming – Paradygmaty Programowania
I na koniec mój zdecydowany faworyt. Z nazwy modułu nie można oczywiście wywnioskować absolutnie nic. A okazuje się, że wykład jest przekrojem przez różne typy języków programowania, paradygmaty, uniwersalne techniki, strukturę języków i reguły implementacji. Ogólnie chodzi o to by stać się programistą, który stając przed problemem, nie zastanawia się, jak rozwiązać go w danym języku, ale jaki język będzie najodpowiedniejszy do tego typu problemu. Czyli nabranie pewnego rodzaju biegłości w różnych językach programowania, a także biegłości w ich zmienianiu zależnie od potrzeb. Najciekawszy jednak jest coursework. Należy stworzyć portfolio 7 programów – 5 małych i 2 większych napisanych w 7 różnych językach. Jest bardzo duża dowolność co do samych programów, co więcej najważniejsza jest ‘eksploracja’ danego języka i zabawa nim. No bajka po prostu. Oczywiście wybór języków jest ograniczony, ale nie aż tak bardzo, żeby nie było z czego wybierać. Lista prezentuje się następująco: Java, C/C++, Objective-C, Perl, C#, PHP, JavaScript, Ruby, Python, AS3, LUA, Pascal, Haskell, F#, Visual Prolog, Prolog, Jay, Scala, Clojure, Delphi, Visual Basic, Lisp, D, Scheme, Erlang, Groovy, Delphi Prism, Eiffel, Common Lisp, CLIPS, Vala, TCL, Go. Jeśli chodzi o większe projekty, to pewnie zostanę przy Javie i C++ – i jeden i drugi używałam już dosyć dawno temu, więc pewnie warto sobie coś przypomnieć. Wybranie 5 języków z pozostałych jest już dużo trudniejsze. Na razie ograniczyłam wybór do takiej listy: F#, Haskell, Ruby, Python, LUA, D, Erlang, Eiffel, Go, CLIPS. To dwa razy za dużo.
Jak widać będę miała co tutaj robić przez najbliższe tygodnie. O międzynarodowej integracji i zwiedzaniu nie wspomnę.