Programowanie Obiektowe i C++ (przedmiot dla matematyków)


Poniżej aż roi się od hejtów ze strony informatyków, pewnie to dlatego w tym roku jego grupa była aż tak nieliczna. Dlatego (chyba po raz pierwszy w historii swoich studiów chyba!) mobilizuję się, żeby coś tu napisać i nieco to zneutralizować :) Moim zdaniem to są NAJLEPSZE ĆWICZENIA Z TEGO PRZEDMIOTU. Po pierwsze, sama osoba Szreda. Gość jest naprawdę przemiły, luźny, ludzki. Na labach sam z siebie podchodzi, pyta, czy może w czymś pomóc, i rzeczywiście pomaga z bugami czy wątpliwościami. Nie ma dla niego głupich pytań i w przeciwieństwie do tego, co napisano poniżej, nie naśmiewa się z ludzi (no dobra, raz mu się zdarzyło ze mnie pośmiać jak przez godzinę linkowałam nie ten plik i nie mogłam znaleźć błędu :D ale naprawdę było widać, że wyzłośliwia się z przymrużeniem oka). Wspomnianego "ego wysokości PKiNu" nie dopatrzyłam się ani razu. No i nie sprawdza obecności, nie ma problemu z tym, że ktoś chce wyjść z zajęć (albo w ogóle nie przychodzić), że ludzie gadają ze sobą, konsultują się, zadają pytania, że mówią mu na ty. W mojej grupie był z nim naprawdę dobry kontakt, również mailowy (z IRCa nie korzystam, ale ponoć jeszcze lepszy).
Po drugie, dynamika ćwiczeń. Osobiście u dr Jabłonowskiego chyba bym usnęła, a Bartek prowadzi ćwiczenia w sposób bardzo dynamiczny, ciekawie opowiada, coś się dzieje. I na pewno nie jest tak monotonny jak dr Jabłonowski, z całą sympatią do tego drugiego. Z drugiej strony, jeśli ktoś akurat nie nadąża, bo ma kłopot, zawsze może zapytać, a Szred podejdzie pomoże znaleźć buga, być może dopiero po omówieniu następnego zadania, ale jeśli tylko poprosi się o pomoc, to nie zostanie się na lodzie.
Po trzecie, sposób uczenia. Laby nieco odstają kolejnością od materiału na wykładzie, ale w sposób kontrolowany - nie ma ryzyka, ze nie zrobi czegoś, co pojawi się na kolokwium. Ogólnie gość ma niespotykaną u wielu ćwiczeniowców na MIMie umiejętność przekazania najistotniejszych rzeczy "w pigułce". W tym, co mówi, nie ma lania wody, jest zbiór najważniejszych informacji + sensowne wskazówki co do potencjalnych błędów (dzięki temu dużo łatwiej ich uniknąć), wszystko to poprzeplatane zadaniami, często dość krótkimi, ale za to ćwiczącymi po kolei małe partie wiedzy. Do tego często zadaje prace domowe, zawsze opcjonalne, ale warto podesłać swoje rozwiązanie - zawsze daje feedback co do tego, co można zmienić, poprawić, zrobić ładniej czy efektywniej. To się bardzo przydaje przy pisaniu projektu zaliczeniowego - człowiek wyrabia sobie wiedzę, czego on oczekuje, i potem znacznie trudniej o uwagi do stylu w projekcie. No i często jest to wiedza ogólnie przydatna i ułatwiająca życie.
A co leży? Pewnie momentami troszkę punktualność, mało które zajęcia zaczynały/kończyły się o czasie, pod koniec te obsuwy przekraczały już 15 min (ale to też trochę kwestia równie "punktualnej" grupy i tego, że Szred nie chciał zaczynać ćwiczeń dla 2 osób), więc jeśli ktoś planuje szybko się zmywać, to może być kłopot z siedzeniem do końca. Ale wyjść wcześniej można bez problemu.
Wreszcie, sprawa najbardziej kontrowersyjna - oddawanie projektów. Z opinii poniżej wynika, że to potworna sprawa, przez co idąc do jego grupy miałam pewne obawy. Okazało się jednak, że wcale nie jest tak źle. Faktycznie, do pierwszej wersji przyszła lista poprawek, ale to były rzeczy sensowne, związane albo z drobnymi niezgodnościami ze specyfikacją, albo ze stylem. Na pewno nie były to jakieś irracjonalne kaprysy w stylu "czepne się czegokolwiek, niech się jeszcze pomęczy". Znów zawsze feedback, uzasadnienia, dlaczego to i to dobrze jest zrobić tak i tak, no i okazja do nauczenia się czegoś. Z pewnością aby zaliczyć trzeba tu spełnić pewne wymogi, kod musi być ładny, czytelny i wszystko musi dobrze działać (faktycznie jest testowany!) - trochę inaczej wygląda zaliczenie projektu u dr Jabłonowskiego, który daje dobre oceny za wszystkie działające projekty, nie zaglądając do kodu. Jednak tu też da się to zaliczyć, a Szred dopilnuje, żeby ostateczny kod był ładny i sensownie napisany.
Podsumowując: sądzę, że można się dużo nauczyć, nawet jeśli nie miało się zbyt wiele do czynienia z C++ (albo jeśli jest się w ogóle kiepskim programistycznie), ale ma się chęć do pracy. Myślę, że te ćwiczenia wyrabiają sporo dobrych praktyk i uwydatniają praktyczną wiedzę (rzeczy, które naprawdę się przydają), tak że można się czegoś nauczyć również przy większym stopniu zaawansowania. Zaliczenie pewnie nieco trudniejsze, niż u dr Jabłonowskiego, ale też wykonalne i na pewno bardziej kształcące. No i jest naprawdę bardzo sympatycznie i ciekawie :) Zdecydowanie polecam, jeśli tylko ktoś przedkłada porządne nauczenie się nad łatwe zaliczenie.
Dla jasności, na wypadek ewentualnych komentarzy ze strony hejterów: nie znałam gościa wcześniej (więc nie miał powodów, by mnie faworyzować - jakkolwiek ze znajomymi też tego nie robi, wbrew insynuacjom z pewnych kręgów), nie jestem po Staszicu, zasadniczo programowania w C++ (i jakiegokolwiek innego niż w R) uczyłam się na tym przedmiocie od zera (miałam fatalne WDI), byłam - moim zdaniem - jedną z gorszych osób w grupie, miałam masę kłopotów i "wybuchów" w programach pisanych na labach. I udało mi się zaliczyć te ćwiczenia, choć kosztem regularnej pracy (ale nie było to więcej niż 1 jego zadanko tygodniowo + obecność na ćwiczeniach) i dość długiego siedzenia nad projektem zaliczeniowym. A jeśli chodzi o rozdźwięk z niektórymi opiniami powyżej, to sądzę, że Szred traktuje matematyków nieco łagodniej niż informatyków, i pewnie dlatego tym pierwszym jest nieco łatwiej. W każdym razie nie ma czego się bać, nie taki Szreder straszny jak go malują !!! :)

Indywidualny Projekt Programistyczny


  • Jeśli chodzi o samą osobę Bartka, to uważam, że człowiek jest naprawdę w porządku. W przeciwieństwie do tego, co słyszałem o innych laborantach, on naprawdę przykłada się do zajęć. Jest wymagający (bardziej, niż inni), ale za to pomocny, na labach zawsze chętnie wytłumaczy, poza labami można go wyhaczyć na IRC'u, a jak go tam nie ma, to po prostu napisać maila. Projekty sprawdza na bieżąco - jak wyślesz mu przed czasem, to jest duża szansa, że przed czasem Ci sprawdzi i wyśle feedback, co poprawić (zawsze wysyła) - u innych podobno trzeba tygodniami czekać. Zajęcia prowadzi zrozumiale, jeśli komuś chce się słuchać, to może dużo wynieść. Jeśli chodzi o sam poziom zajęć, to jest on jednak trochę wyższy, niż w innych grupach - do wymagań, które wyznacza koordynator, Szreder dodaje swoje własne, przez co projekty bywają nieco bardziej ambitne, ale zawsze wrzuci na swoją stronkę dokładny opis tego, czego oczekuje. I teraz coś, z czego laborant słynie - sposób oceny :) Generalnie, gość jest bezpośredni - jak jest coś źle, to wprost powie. Projekty ocenia rzetelnie - sprawdza kod, działanie, szuka memleaków itp. I teraz tak - jest wymagający i lubi ciąć. Ojjj, lubi. Ja nie mam do niego pretensji, ale nie dziwię się, że niektórzy wprost odradzają zajęcia z nim, bo za niektóre rzeczy potrafi bez litości uwalić na zero naprawdę sensowne projekty. Sam mam paru znajomych, którzy u niego nie zaliczyli, albo zaliczyli, ale ledwo. Czyli generalnie tak - osobiście polecam - można naprawdę dużo wynieść, ale trzeba mieć łeb na karku, bo można zwyczajnie oblać ;) A z IPP nie ma września, jest od razu warunek...
  • Zgadzam się z kolegą powyżej. Gdyby każdy na MIMie cisnął ludzi i jednocześnie dawał im takie możliwości rozwoju, jak Szreder, to ten wydział kończyliby sami ludzie, którzy rzeczywiście się znają na rzeczy. Co do tego, że można się z nim skontaktować - tak, zaznaczyłbym jednocześnie, że raczej nie trzeba się raczej posuwać do pisania przez maila, gdyż jest on na IRCu 24/7. Mogę się założyć, że nigdy nie śpi, albo jest go dwóch. Jeśli nie masz zamiaru siedzieć po nocach i zabierać do projektów z dużym zapasem czasowym, to raczej ta grupa nie jest dla Ciebie. Jest ona dla naprawdę ambitnych ludzi. Znam kilka osób, których takim mianem można nazwać (w tym laureatów/finalistów olimpiad), którzy u Szredera ten przedmiot po prostu uwalili. Z żadnym innym prowadzącym nie ma takiego kontaktu i możliwości otrzymania pomocy.
    Lubi ścinać punkty mocniej niż jest to przewidziane w taryfikatorze, ale za to sprawdza projekty praktycznie codziennie i pozwala na poprawki. Ostatecznie, większość osób 90% punktów straciła za opóźnienie.
    Mówię to wszystko z perspektywy osoby, która IPP u Szredera skończyła z oceną zwaną "2", żeby nie było że wypowiadają się tylko osoby, które zdały.Tak czy siak, myślę że za rok też będę próbował się dostać do jego grupy.
  • "Jeśli nie masz zamiaru siedzieć po nocach i zabierać do projektów z dużym zapasem czasowym, to raczej ta grupa nie jest dla Ciebie." - E, tam.. z dużym zapasem czasowym :P Dzień po deadlinie przesuwanki zacząłem się uczyć, o co chodzi w tym całym Qt :D -50% za spóźnienie, ale ostatecznie zaliczone z ładną oceną (nie, żebym się chwalił...). No ale co do nocek, racja, przynajmniej u mnie. Pewnie można sobie tak ładnie czas zorganizować, żeby ze wszystkim się powyrabiać o normalnych porach, ale zważywszy też na resztę przedmiotów na drugim semestrze, no łatwe to to nie jest... Nie chcę tu nikogo zniechęcać, można wszystko pozaliczać z sensownymi ocenami, ale napracować się trochę jednak trzeba...
  • Człowiek jedyny w swoim rodzaju. Jeżeli nie znasz Pascala i chcesz wybrać grupę Szreda, bo znasz C++, ale nigdy nie zajmowałeś się tworzeniem projektów to zdecydowanie odradzam taki wybór. Z dobrych rzeczy, które można o nim powiedzieć o nim, to rzeczywiście szybko sprawdza i daje możliwość poprawek, ale na tym by się chyba skończyło. Jeżeli czegokolwiek nie zrozumiesz na laboratoriach, to bez najmniejszego zastanowienia musisz o to pytać kolegów albo samemu do skutku szukać odpowiedzi w Internecie. Jeżeli spytasz Szredera, to najprawdopodobniej zostaniesz obśmiany, a jak wykażesz się nieznajomością tego faktu w projekcie, to zostaniesz obśmiany w komentarzu do oceny i dodatkowo zostanie odjęta spora liczba punktów. A same zajęcia wcale nie są jakieś dużo fajniejsze iż w innych grupach. Czasami wygląda to tak, że w skrócie można je opisać "Jest coś takiego jak Qt, jest w nim taka klasa jak QPainter, którą można malować po okienku, zróbcie mi Game of Fifteen." Uczenie się Qt od zera całkowicie samemu łażąc po necie jest raczej wpisane w program tej grupy. A potem tak, czy siak można dostać złośliwe komentarze w stylu "zrobiłeś coś tak, a powinieneś to zrobić używając jakiegoś bajeru z Qt, który pozwala to zrobić trochę ładniej".
    Dodatkowo Szreder ma ego wielkości Pałacu Kultury - jest święcie przekonany co do swoich poglądów i nie da się go przekonać nawet najlepszymi argumentami. Sztandarowym przykładem jest tu jego miłość do tabów w kodzie i niesamowity hejt na spacje. Projekty z wcięciami robionymi spacjami ocenia od razu na 0, bo przecież wcięcia spacjami to oczywiście najdenniejszy pomysł na całym świecie i jest on gotów w stronę osób je stosujących z tego powodu posłać wiele swoich błyskotliwych obelg. Ale teraz narasta pytanie - czemu skoro są one takie złe, to w takim razie w oficjalnym "Google C++ Coding Style" jest wyraźnie zaznaczone, aby wcięcia robić spacjami, a nie tabami? Jest to tylko jeden z wielu przykładów, w których Szreder jest gotów obśmiać osobę, która ma inne zdanie niż on i ma dobre argumenty na poparcie swojego stanowiska oraz nawet "plecy" je potwierdzające. Dodatkowo dochodzi to, że jedyny szacunek u Szredera w rozmowach z nim wynika z faktu dobrej znajomości aktualnie dyskutowanego tematu. Natomiast z faktu bycia człowiekiem nie wynika żaden. Jest on bardzo nieugodowym człowiekiem i nie potrafi wykazać żadnego zrozumienia dla pewnych indywidualnych sytuacji - jedyne co się liczy to idealnie zrobiony projekt.
    Do tego dochodzi skrajnie nieracjonalna surowość w ocenie projektów. Za te same błędy ucina zdecydowanie więcej niż inni prowadzący, co połączone z jego starannością sprawdzania powoduje, że jeżeli Twój projekt nie jest idealny, to może dostać ocenę zdecydowanie poniżej oczekiwań. Bywa, że projekty na ~2-3 tysiące linijek ze wszystkimi wymaganymi funkcjonalnościami, ale sporą liczbą pomniejszych błędów (poniekąd wynikającą z długości kodu) są oceniane na soczyste zero punktów. Albo, że w zadaniu jest do zaimplementowania funkcjonalność, która wymaga sporego nakładu pracy i można za nią uzyskać 2 pkt, ale za jakieś kompletne pierdoły powstałe w trakcie jej implementacji są obcinane 3 pkt. Ewentualnie "Zauważyłem w jednym miejscu kopypastę - dalej nie sprawdzam" i 0 punktów.
    Jeżeli naprawdę nie masz sporego doświadczenia w tworzeniu projektów albo jest to możliwe, że nie będzie Cię stać na kończenie każdego projektu kilka dni przed czasem, aby móc uzyskać feedback i wprowadzić poprawki bez naliczania opóźnienia, to zdecydowanie odradzam tę grupę. Przedmiot będzie od Ciebie wymagać heroicznych nakładów pracy, a i tak może się to skończyć bardzo źle. Jeżeli jesteś bardzo ambitny, to możesz rozważyć wzięcie tej grupy, jednak bądź świadomy, że ryzyko jest spore, a korzyści z tego wynikające wcale nie będą jakieś niesamowite. Być może będziesz znał kilka funkcjonalności języka, w którym programujesz więcej, być może będziesz znał jedną pierdołę w stylu cmake więcej, ale jeżeli będziesz miał istotnie więcej informacji na temat programowania projektów, to raczej będzie to wynikać z tego, że samemu się więcej uczyłeś, aniżeli, że chodziłeś do grupy Szredera. Jeżeli Twoim jedynym argumentem za tą grupą jest "Znam C++, a Pascala nie", to naprawdę zwiewaj jak najdalej.
  • Odradzam, szkoda nerwów. Chyba, że ktoś sens życia odnajduje w idealnych projektach. Ogólnie zgadzam się z opinią powyżej i ostrzegam, że sama wola walki nie wystarcza do zaliczenia. I nie uważam, że jest w porządku.
  • A ja zdecydowanie polecam. Projekty można oddawać przed terminem do sprawdzenia, po którym to można wprowadzić poprawki bez żadnej straty punktowej co nie zdarza się w innych grupach. Kontakt znakomity. Jeśli chodzi o uwagi dotyczące wymagania stylu pisania.. za parę lat pewnie będziecie mu dziękować że wynieśliscie z tych zajęć też to. Jeśli ktoś się przyłoży i będzie oddawał wszystko w terminie o 4-5 nie jest trudno.
  • Bartek chętnie dzieli się swoją dużą wiedzą, wystarczy słuchać i zadawać pytania.
    Nie sprawdza obecności.

    Nie rozumiem ludzi którzy krytykują Bartka. Fakt, nie stawia punktów za projekty które nie działają. To raczej nic dziwnego. Możliwe, że tnie punkty za styl kodu, ale bądźmy realistami, to jedno z kryteriów oceny. Skoro Bartek tnie punkty za kod, to znaczy, że go czyta. Dzięki temu można wiele dowiedzieć się o kulturze kodu. Osobiście oddawałem projekty stosując różne konwencje nawiasowania itp. i nigdy nie było z tym problemu, wystarczy być konsekwentnym.
    Ten esej 3 kropeczki wyżej jest dla mnie kompletnie niezrozumiały, jeśli chcesz być dobrym programistą to niestety diabeł tkwi w szczegółach i Szred je wyłapuje. U innych prowadzących tego być może nie ma i niczego się nie nauczysz. W końcu możesz przecież oddać pracę dzień(albo nawet kilka godzin przed deadlinem), on odpisze i poprawisz (dzięki temu łatwo jest wymaksować projekt). Jest u niego dużo krytyki, ale raczej konstruktywnej.
  • Ja uważam, że jest to właściwa osoba na właściwym miejscu. Dzięki temu, że ucina srogo punkty, człowiek lepiej zapamiętuje, żeby czegoś nie robić. Jeśli ktoś ma problem z tym, że na MIMie kształci się porządnych programistów, to to nie jest miejsce dla niego.
    Nie rozumiem, co jest złego w wymuszaniu nauki czegoś Internet, przecież w przyszłości prawie wszystko będzie tak wyglądać. Dodatkowo, jeśli zadaje się pytanie i odpowiedź nie jest trywialna do wygooglowania, to pomoże i podpowie gdzie szukać.
  • Nadciągają czarne chmury... Szreder... Szreder...