Czy kiedykolwiek na studiach mieliście "wiwisekcje" i analizy kodu realnego w miarę złożonego oprogramowania?

1

Tak czasem wspominam sobie studia (FAIS UJ) i po dziś dzień nurtuje mnie jedno pytanie - czy zamiast przedmiotów "inżynierii oprogramowania" gdzie było takowych chyba 3 a może nawet i 4 gdzie w zasadzie robiło się to samo - czyli zaspokajało prowadzącego dostarczając mu projekt czy to indywidualny czy grupowy o bylejakich de facto walorach byle robił coś podobnego do tego co prowadzącemu się zdawało że studentom opisał, nie lepiej by było np. wziąć na warsztat jakiś system bazodanowy typu MySQL albo kompilator, może jakiś arkusz kalkulacyjny lub webserwer i dokonać dekonstrukcji, analizy i dyskusji nad pacjentem? Przeanalizować jakie struktury danych implementuje, jakie algorytmy? Jak to współpracuje z systemem operacyjnym - czy reimplementuje jakieś mechanizmy systemu operacyjnego typu alokacja pamieci zamiast korzystać z tego co dostarcza system i temu podobne kwestie. Na żadnym z przedmiotów nie było nawet blisko do takich rzeczy. Czy ktoś z was się otarł o takie tematy na studiach?

1

My np. implementowaliśmy metody elementów skończonych albo jakiś podstawowy system alokowania pamięci w C. Albo jakieś smart pointery. Albo jakiś webserver.

Przecież mogłeś wziąć sobie dekonstrukcję MySQL na licencjat. Miałbyś darmowe konsultacje u specjalisty, który by ma bieżąco robił Ci review postępów. Zrobiłeś to?

5

Przeciętny student nie ogarnie a ten z pasją sam zajrzy do interesujących go projektów z ciekawości.

0
twoj_stary_pijany napisał(a):

My np. implementowaliśmy metody elementów skończonych albo jakiś podstawowy system alokowania pamięci w C. Albo jakieś smart pointery. Albo jakiś webserver.

Alokacje czy smart pointery to dość proste rzeczy przy złożoności np. vima. "Jakiś webserver" zaś niewiele mi mówi o kalibrze implementacji.

Przecież mogłeś wziąć sobie dekonstrukcję MySQL na licencjat. Miałbyś darmowe konsultacje u specjalisty, który by ma bieżąco robił Ci review postępów. Zrobiłeś to?

Nie nie robiłem. Pierwsze słyszę o "braniu dekonstrukcji MySQL na licencjat". Nie wiem też o kim piszesz. Review postępów na bieżąco to nawet nie brzmi jak ktokolwiek z kim miałem na wydziale do czynienia.

Marius.Maximus napisał(a):

Przeciętny student nie ogarnie a ten z pasją sam zajrzy do interesujących go projektów z ciekawości.

Przeglądałem samodzielnie. Można było by jednak było po ludzku zrobić z tego coś co jest integralną częścią programu z konsekwencjami realizowaniatego w grupie z komentarzem prowadzącego, przeglądem nardzędzi wspomagających analizę itd. Lepsze to niż nty przedmiot gdzie się implementowało jakieś bieda projekty i gdzie prowadzący był w zasadzie po to by mu je pokazać na koniec. Do tego się ograniczała najczęściej interaktywność prowadząych te przedmioty.

2

Nie było i nie dziwi mnie to. Zawodowcy robiący 15k+ często mają kompulsywny strach przed istniejącym kodem, a co dopiero teoretycy za 6k (chyba gdzieś tyle zarabia nauczyciel akademicki?). Przecież który programista nie boi się zajrzeć w kod, wierzy że może go zmienić i spodziewać się konkretnego wyniku. Praca z prawdziwym kodem to proszenie się o kłopoty, jeszcze studenci zaczną drążyć i wyjdzie nieogar (bo zwykle wychodzi xD). Znacznie łatwiej jest zostać przy teorii. Chyba tylko jeden z tych rzadkich wykładowców z powołania mógłby zrobić coś takiego. Jednak ja miałęm kilku takich i żaden tego nie zrobił, nawet przerabiając assemblera gdzie miałoby to najwięcej sensu (nie ma za bardzo sensu uczyć pisać, za to warto umieć czytać).

3

@elwis: jak ktoś czuje strach przed zajrzeniem do cudzego kodu to powinien poszukać pracy gdzie indziej .

2
Satanistyczny Awatar napisał(a):

Tak czasem wspominam sobie studia (FAIS UJ) i po dziś dzień nurtuje mnie jedno pytanie - czy zamiast przedmiotów "inżynierii oprogramowania" gdzie było takowych chyba 3 a może nawet i 4 gdzie w zasadzie robiło się to samo - czyli zaspokajało prowadzącego dostarczając mu projekt czy to indywidualny czy grupowy o bylejakich de facto walorach byle robił coś podobnego do tego co prowadzącemu się zdawało że studentom opisał, nie lepiej by było np. wziąć na warsztat jakiś system bazodanowy typu MySQL albo kompilator, może jakiś arkusz kalkulacyjny lub webserwer i dokonać dekonstrukcji, analizy i dyskusji nad pacjentem? Przeanalizować jakie struktury danych implementuje, jakie algorytmy? Jak to współpracuje z systemem operacyjnym - czy reimplementuje jakieś mechanizmy systemu operacyjnego typu alokacja pamieci zamiast korzystać z tego co dostarcza system i temu podobne kwestie. Na żadnym z przedmiotów nie było nawet blisko do takich rzeczy. Czy ktoś z was się otarł o takie tematy na studiach?

Bo studia zaniżają poziom do najsłabszych jednostek dla których takie coś byłoby pozbawione sensu bo nic by nie zrozumieli. Studia to miejsce dla wszystkich a nie tylko pasjonatów.

3
Adin napisał(a):

@elwis: jak ktoś czuje strach przed zajrzeniem do cudzego kodu to powinien poszukać pracy gdzie indziej .

Czemu miałby to zrobić skoro ktoś chce mu tyle płacić za to? Poza tym, jest zapotrzebowanie, więc cały system nagina się pod zapełnienie wakatów. Jak nie ma kompetentych to zobaczymy co uda się zrobić z byle kogo. I jakkolwiek źle to działa to i tak zadziwiająco dobrze. xD Dokładnie to co @bagietMajster napisał. :)

1

Niestety nie, nie było żadnej pracy z istniejącym kodem. Jak się zachowywać. Co ruszać a co nie ruszać. Co jednak warto poprawić przy okazji. Ile klas warto przepisać żeby wprowadzić polimorfizm zamiast jednego chamskiego ifa. To wszystko trzeba było uczyć się samodzielnie, albo z książek, albo z pracy w systemie legacy. Pamiętam jak mi w pierwszej pracy programistak powiedziała "Zwolnisz się i przyjdzie na twoje miejsce kolejny student co będzie się uczyć programować na tym kodzie" :D

3

Panie, kupa ludzie nie rozumiała wielu rzeczy a zaliczała nieraz szybciej niż kumający czaczę. Bo skumanie trochę zajmowało czasu w odróżnieniu od pisania projektów indywidualnych grupowo gdyż wielu prowadzących cierpiało na osobliwą przypadłość nie rozpoznawania (braku chęci rozpoznawania?) pracy niesamodzielnej jak również posiadania mało realistycznych wymagań w stosunku do ich własnego wkładu w przekazywanie tak wiedzy z przedmiotu jak i formułowaniu czego właściwie wymagają w projektach w wyniku czego ci faktycznie pracujący samodzielnie mieli przerąbane i byli oceniani przez pryzmat reszty grupy która czesto pisała projekty zbiorowo. Jak również pomagało we wkuwniu dziesiątek formułek na blachę by je potem recytować na ustnym u egzaminatorów u których należało trzymać się sztywno treści tych formułek, którzy krzywili się jeśli użyłeś synonimu słowa ze ścisłej definicji mimo że była to oznaka że jednak coś z tego co recytujesz kumasz. Więc nierozumienie nie jest przeszkodą w ukończeniu. Potrafi wręcz być sprzymierzeńcem.

1
Satanistyczny Awatar napisał(a):

Tak czasem wspominam sobie studia (FAIS UJ) i po dziś dzień nurtuje mnie jedno pytanie - czy zamiast przedmiotów "inżynierii oprogramowania" gdzie było takowych chyba 3 a może nawet i 4 gdzie w zasadzie robiło się to samo - czyli zaspokajało prowadzącego dostarczając mu projekt czy to indywidualny czy grupowy o bylejakich de facto walorach byle robił coś podobnego do tego co prowadzącemu się zdawało że studentom opisał, nie lepiej by było np. wziąć na warsztat jakiś system bazodanowy typu MySQL albo kompilator, może jakiś arkusz kalkulacyjny lub webserwer i dokonać dekonstrukcji, analizy i dyskusji nad pacjentem? Przeanalizować jakie struktury danych implementuje, jakie algorytmy? Jak to współpracuje z systemem operacyjnym - czy reimplementuje jakieś mechanizmy systemu operacyjnego typu alokacja pamieci zamiast korzystać z tego co dostarcza system i temu podobne kwestie. Na żadnym z przedmiotów nie było nawet blisko do takich rzeczy. Czy ktoś z was się otarł o takie tematy na studiach?

Byłoby lepiej, ale prowadzący nieraz nie wiedza lepiej niż studenci, bo mało kto ma doświadczenie komercyjne.

A jak już mają to nie jako programiści, ale inżynierowie, albo jacyś od ML.

1

Yup. Analizowalismy kernel unixowy. BSD bodajze.

Ale kto zna Cahira, ten wie, ze on ma mnostwo wiedzy i pasji, zeby takie zajecia prowadzic

2

imo nie warto i lepiej pisać takie rzeczy - db enginy, osy, kompilatory od 0. No może jedynie opisać architekturę / koncepty w tych prawdziwych, ale nie analizować kod.

Weź sobie na warsztat taki LLVM - kilka milionów linii nietrywialnego kodu w C++, a ile z tego to faktyczne mięso, a ile z tego nudny boilerplejt czy tona rzeczy bardziej "infrastrukturalnych" czy obsługujących jakieś rzeczy wynikające z historii czy bugów czy userów, a nie coś wynikające z konceptów.

Dodatkowo ile znasz osób które są biegłe w takich codebasach? samo zbudowanie LLVMa to nie jest taka trywialna rzecz, a tutaj musisz mieć biegłego CPPowca z backgroundem w kompilatorach, który w dodatku ma dużo wolnego czasu :)

1
WeiXiao napisał(a):

imo nie warto i lepiej pisać takie rzeczy - db enginy, osy, kompilatory od 0. No może jedynie opisać architekturę / koncepty w tych prawdziwych, ale nie analizować kod.

Weź sobie na warsztat taki LLVM - kilka milionów linii nietrywialnego kodu w C++, a ile z tego to faktyczne mięso, a ile z tego nudny boilerplejt czy tona rzeczy bardziej "infrastrukturalnych" czy obsługujących jakieś rzeczy wynikające z historii czy bugów czy userów, a nie coś wynikające z konceptów.

Dodatkowo ile znasz osób które są biegłe w takich codebasach? samo zbudowanie LLVMa to nie jest taka trywialna rzecz, a tutaj musisz mieć biegłego CPPowca z backgroundem w kompilatorach, który w dodatku ma dużo wolnego czasu :)

Ale można było przeanalizować sam software design, albo jakiś core. Ewentualnie wykazać błędy. Szczegóły implementacyjne to inny przedmiot.

Tak się teraz zastanawiam, że to następny przykład jak bardzo niskiej jakości są studia informatyki w Polsce. Na medycynie, prawie czy innych kierunkach normalnie analizuje się problemy napotkane w branży.

A u nas? Pamiętam, że chłop nam powiedział wprost na algorytmach i strukturach danych(1 rok), że my pewnie lepiej programujemy niż on. Na innych przepisywanie starych książek z c++98 …
Było parę perełek, ale analiza obszernych projektów to powinna być na każdym przedmiocie od 2-3 roku wzwyż.

4

Osobiście "wyspecjalizowałem się" w grzebaniu w wielkich kobyłach kodu (banki, ubezpieczenia) i ze smutkiem musze przyznać, ze nawet to lubie.
Ale uważam, że zabawy ze starym kodem na studiach są raczej bez sensu.
Dużo wysiłku, a satysfakcja mała - może zniechęcić.

IMO o wiele ważniejsze jest po prostu robienie małych projektów zespołowych (od 0).

1

Robiliśmy masę małych projektów zespołowych. Były bieda projektami bo było niewiele czasu, trzeba było proprawiać jakieś pierdoły bo prowadzący sami czasami nie wiedzieli czego właściwie chcieli oraz tematyka nie dawała najczęściej za wiele pola do popisu pod względem algorytmicznym i struktur danych. Jeśli już były stawiane jakieś wymagania "inżynieryjne" to trzeba było sadzić design patterny nie ważne czy były w ogóle potrzebne i dopasowane do problemu. Sorry ale olewanie algosów i struktur i obsesja patternów nie prowadzi do myślenia o efektywnym czy w ogóle o rozwiązaniu problemu. Osobiście nawet nigdy nie zaśmiecałem sobie głowy patternami poza zasadą zakuj, zdaj, zapomnij bo nawet nie programuję obiektowo i ogólnie OOP szkaluję jako cargo cult z mglistą definicją co OOPem jest a co nie. Ogólnie rola algorytmiki była dziwna bo mieliśmy liźnięte na 1szym i 2gim roku ale było to podjście zawieszone w próżni bez jakiejkolwiek dyskusji o zastosowaniach w praktyce - implementowaliśmy te różne grafy, znajdywaliśmy minimalne drzewa rozpinające itd. ale czemuś nie poruszano tematu jak wiele problemów można sprowadzić do takiej postaci i tymi strukturami opisać i rozwiązać tymi algorytmami. Przecież to jest jakaś kaszana totalna tak podchodzić do nauczania informatyki na tym poziomie. Mogłeś poznać wiele przydatnych rzeczy ale nie być świadom jak potężne narzędzie dano ci do ręki. Wiedza musi być usystematyzowana prędzej czy później by można ją było stosować. w systematyzacji potrzebna jest ci wiedza o wadze tego co wiesz. Pomianie zastosowań praktycznych to brak informacji o wadze. Nie wiesz czy twoja wiedza jest dostateczna i niewiele więcej da się w danej dziedzinie powiedzieć, czy może jest dużo więcej do poznania i ledwo liznąłeś temat. To prowadzi do dezorientacji i może prowadzić do marnowania czasu na szukanie czegoś co jest lepsze niż to co już wiesz mimo iż twoja wiedza jest już wystarczająca do rozwiązania w przyzwoitym czasie i w przyzwoity sposób danego problemu. Nie muszę chyba wyjaśniać że ani studentom, absolwentom, pracownikom naukowym czy pierwszym pracodawcom taka sytuacja korzyści raczej nie przynosi.

0

Lwia część tego forum twierdzi że studia nie są od uczenia programowania, a od informatyki ;)

Ja tam się z nimi nie zgadzam, jednakże nie sądzę aby była jakaś większa potrzeba niż chociażby pokazanie na 2-3 slajdach jak "prawdziwy" software korzysta z jakiejś metody/techniki/podejścia

np. LLVM i visitor.

Ale jeżeli chodzi o architekturę LLVMa, to bardziej spodziewałbym się takiego tematu na kursie dot. kompilatorów niż inż opro.

Analiza MINIXa to bardziej jakieś OSy niż inż opro.

przecież to jest jakaś kaszana totalna tak podchodzić do nauczania informatyki na tym poziomie

"na tym poziomie" czyli jakim? bo chyba masz zbyt wysokie oczekiwania :D

0

Akademickim.

1

Jeśli już były stawiane jakieś wymagania "inżynieryjne" to trzeba było sadzić design patterny nie ważne czy były w ogóle potrzebne i dopasowane do problemu

Ktoś kiedyś w innej dyskusji (być może kilka lat temu, nie pamiętam) tłumaczył na forum, że takie bezsensowne wymagania się robi po to, żeby wykładowca miał jak sprawdzać wiedzę studentów, a jakoś musi. I okej, szanuję zawód wykładowcy, ale jednak z perspektywy studentów jest to nauka wsteczna - tj. antyrozwój, uczenie tego, jak uczestniczyć w kulcie cargo, a nie jak podejmować racjonalne decyzje programistyczne.

Pytanie więc, co jest cenniejsze, co bardziej szanujemy - pracę wykładowcy czy korzyść studenta. Niestety w Polsce uczelnie służą głównie wykładowcom, takie mam wrażenie.

1

Poziom studiów informatycznych poza matmą to często niesmaczny żart.
Poziom pewnych przedmiotów na moich był po prostu żenujący, na szczęście było sporo dyskretnej, algosów i grafów więc myśleć jako tako nauczyło.

Natomiast koderka to były jakieś tam śmieciowe apki czy wydumane zadania.
No sorry ale nauka C++ na labach gdzie masz 1-2h żeby coś tam zakodzić w ogóle nie pokaże ci jak się pracuje na 1M+ LoC codebase'zie.
Jak nie zobaczysz naprawdę dużego codebase'u to nie zrozumiesz po co ludzie distcc lub precompiled headers robili.
Niektóre tematy jak tworzenie DLL, linkowanie, GDB, tworzenie paczek zostały zupełnie pominięte (dla C++).
Ostatecznie masz tam jakiś kurs języka ale bez faktycznej praktyki. Nauczyli tyle co książka.
Potem powtarzało się to dla C# i Javy. Tworzenie aplikacji okienkowych to był już clown-world robienie jakiegoś G w winapi (które już wtedy było przestarzałe) a potem WPF (które jest już End of life). Wszystko małe apki bez bazy danych, transakcji, czy skomplikowanego UI z własnymi kontrolkami.

Osobiście uważam że nauka jakiegoś api czy języka to strata czasu na studiach. Raczej powinno się koncentrować na projektach a języka uczyć jako narzędzia do osiągnięcia celu.

Na przykład zamiast uczyć się języka C, można powiedzieć że piszemy nowy system plików do linuxa lub implementujemy jakiś prosty typu FAT16. I wtedy jest zabawa, trzeba przeczytać spec, pomyśleć o testach w końcu napisać.

A przecież uczelnia mogła by zrobić to lepiej. Mogli by mieć np. swój open-matlab utrzymywany przez 10 pokoleń studentów. Taki projekt miałby w kodzie prawdziwe G, ale o to chodzi, praca z takim projektem pokazywała by studentom jak wygląda faktyczny kod z którym się spotkają. Jak trudno jest refactorować coś co jest duże i nie do końca zrozumiałe. Jak testuje się takie aplikacje. A na koniec może ktoś miał by z tego open-source matlaba pożytek.

Niestety profesorom nie chce się. Studentów traktuja jak urzędasy petentów. Albo wylewają na nich flustracje.

Także jak ktoś jest studentem to polecam robić open-source lub własny mini biznesik (czyli własny app i próbować zarobić na niej + inkubator przedsiębiorczości).

Na pewno byłbym teraz w innym miejscu, jakbym mógł dać sobie taką radę. Niestety jest już za późno...

1

system bazodanowy typu MySQL albo kompilator

To jest jakiś absurd. Nie ma szans żeby student ogarnął soft takiej wielkości i złożoności.

Jeśli już próbujemy do betonu uczelnianego programu przemycić coś typowo praktycznego w zawodzie programisty, to proponowałbym po prostu pracę nad istniejącym projektem, powiedzmy 5-10k linii kodu typowego webowego CRUD-a typu zarządzanie magazynem (strzelam) - nudne cholernie ale każdy zrozumie, i np. zespołowo:

  • dodanie jakiejś większej funkcji
  • dodanie Kafki tam gdzie wcześniej był tylko REST
  • dodanie testów wydajnościowych
  • refaktoryzacja

Takie coś wniesie znacznie więcej. Ja wiem że tutaj sami ambitni, ale realia studenckie są jakie są, i mimo iż nie jestem fanem równania w dół, to można chcąc dobrze zepsuć bardziej.

0

Nie ma szans żeby student ogarnął soft takiej wielkości i złożoności.

Kompilator bez optymalizacji nie jest trudny. Parser sobie wygenerujesz toolem a z drugiej strony jest zgranie AST do kodu np. bytecode Javy.

Prosty jednowątkowy system bazodanowy to też nie magia, można zacząć od czegoś prostszego jak key-value store lub implementować gotowy algos jak Kademlia.

Ad REST - jak student ukończy kurs REST to GraphQL będzie standardem...

0
jarekr000000 napisał(a):

Osobiście "wyspecjalizowałem się" w grzebaniu w wielkich kobyłach kodu (banki, ubezpieczenia) i ze smutkiem musze przyznać, ze nawet to lubie.
Ale uważam, że zabawy ze starym kodem na studiach są raczej bez sensu.

Grzebiąc w leciwych projektach siedzisz bardziej powiedzmy w reverse engineeringu. Dobrze jak masz kogo zapytać ale nie zawsze tak jest. Fajna robota dla kogoś kto siedzi w branży trochę, przeszedł swoje. Natomiast młode pokolenie które wchodzi powinno zaczynać od pisania projektów od zera. Te powinny powstawać indywidualnie i zespołowo aby każdy zdawał sobie sprawę ze swoich ograniczeń, uczył się pracować zespołowo.

0

Pisanie zespołowo jest. Od zera jest. I co? I jajco. Jakieś bieda projekty gdzie algorytmy albo się bierze z bibliotek albo są to jakieś bieda harmonogramy rezerwacji gdzie szczytem algorytmiki są locki na bazie.

Fetyszu nowości oprogramowania dla nowości oprogramowania nie chce mi się nawet komentować. Chcesz być innowacyjny to poznaj najpierw to co już było i co jest bo będziesz skazany na wynajdywanie koła od nowa, tylko że ty będziesz to robić bez zaplecza technicznego i finansowego minionych pokoleń. Nie chcesz być innowacyjny to nie czytaj tego wątku bo jest pisany z myślą, że studia są dla tych co chcą być i powinny dać solidne ku temu podstawy. Jeśli nie dają to uważam za naturalne, że powinny być krytykowane a sens ich finansowania z "publicznych pieniędzy" podważany.

System algebry komputerowej albo obliczeń numerycznych spokojnie jest w zasięgu studentów 1go stopnia [tak miałem przedmioty które dawały do tego podstawy mimo że nie byłem świadom faktu że mogę się po nich podjąć ich pisania, co jest moim zdaniem faktem warym szerszej uwagi]. Nie muszą od razu pisać kobyły pokoju mathematiai czy maple. Wspomniane wyżej zabawy w maszyny wirtualne do interpretacji języka czy bytocode też OK. Nawet symulator prostego CPU to o niebo ambitniejszy projekt od większości biedy jakie nam zadawano. Nawet student pierwszego roku jeśli ogarnie shunting yard będzie w stanie po kursie algorytmów i struktur danych zaimplementować kalkulator działający na własnej implementacji BigNum czy nawet pokusić się o stworzenie arkusza kalkulacyjnego jeśli ogarnie sobie np. ncurses. Może to być nawet jeden tego typu projekt na cały pierwszy stopień, nawet jeśli i tak potem ktoś będzie zawodowo pisał tylko edytory tekstu czy silniki renderujące 3D to taki projekt może wiele wnieść tak do wiedzy, myślenia jak i pewności siebie (ta jest potrzebna i tą też trzeba kształtować).

Te rzeczy w podstawowych wariantach nie są jakieś kosmicznie złożone. Implementowano je dla takich gigantów wydajności i mocy obliczeniowych jak ZX Spectrum czy Commodore VIC. A są praktyczne i edukacyjne ze względu na aspekt praktyczny ich wykorzystania tak gotowego projektu jak i części składowych.

Problem tylko, że przedmioty nie są prowadzone tak by te treści wyłozyć a) zrozumiale b) zwięźle c) przygotowująco do samodzielnego poszukiwania publikacji w literaturze przedmiotu, prasie branżowej czy maeriałach z konferencji naukowych/inżynierskich d) w interakcji ze studentami w dyskusjach i rozmowach prowokujących do myślenia.

Nawet jeśli prowadzący nie są orłami to prowadząc przedmioty czasem nawet przez dekadę z hakiem powinni być w stanie chociaż mieć podstawowe rozeznanie jaką literaturę polecić z przedmiotu czy nawet znać ważne publikacje naukowe dostępne czy to publicznie czy z poziomu systemów ich udostępniania gdzie uczelnie często mają dostęp. Ale nie, oni potrafią na ciebie patrzeć jak na kosmitę jak ich o takie rzeczy pytasz.

Niestety króluje bylejakość, chaos i brak uporządkowania. Materiał praktycznie nie jest przedstawiany w szerszym kontekście a jego aspekty praktyczne są często nawet dla prowadzących jak bajki o żelaznym wilku mimo, że niektórzy coś tam nawet niby prowadzą badania powiązane z materiałem i mają jakieś publikacje. Niestety śladu po tym często nie widać w dydaktyce.

Tak, studia to dużo pracy samodzielnej. Problem zaczyna się wtedy gdy jest to praca samodzielna z niemal zerowym wkładem "kadry pedagogicznej", która potrafi na studenta patrzeć jak na kosmitę gdy pyta o jakieś rekomendacje książek czy publikacji. Wtedy nawet najmniej złożone i dość podstawowe działki można rozwlec na kilka semestrów po których najinteligentniejszy student będzie tak skołowany że ledwie będzie rozumiał czego i po co się uczył. Wiedza bez uświadomienia możliwości zastosowania będzie wiedzą niewykorzystaną.

2

d) w interakcji ze studentami w dyskusjach i rozmowach prowokujących do myślenia.

Na pierwszym roku infy na polsl elektrotechnikę wykładał profesor, który niedawno wrócił z USA i chciał wprowadzić "nowoczesne interaktywne metody nauczania". W jego wizji wykłady były tak naprawdę dyskusjami pomiędzy audytorium a nim, która to dyskusja będzie obejmować w większości zadanka z obwodów, które to studenci powinni byli przejrzeć sobie wcześniej z reglamentowanego partiami PDFa z wykładami i rozwiązać w domu, opanowawszy temat wykładu samodzielnie z książki i wideotutoriali z kanału profesora na YT. Chyba za aktywność można było zdobyć zwolnienie z egzaminu.

Cel był szczytny, ale wyszło jak zawsze: mimo szczerych wysiłków profesora, na wykłady chodziło może 10% studentów (ja byłem chyba 2x, bo to było bez sensu), z czego z tych 10% pewnie kilka osób chciało w ogóle o czymkolwiek dyskutować, jeśli w ogóle wiedzieli o czym mowa (btw wszystko po angielsku, bo nowocześnie). Cała akcja okazała się porażką, materiały na nic się nie przydały, a egzamin był dramatycznie trudny.

Takie mam doświadczenie. I szczerze waham się, bo taki interaktywny wykład to w sumie spoko sprawa na pierwszy rzut oka, ale jednak leniwy student byle-zdać-bo-będę-programistę we mnie jest trochę przeciwko takim wynalazkom i może lepiej jednak zrobić po staremu, a egzamin zdać ucząc się tradycyjnie z półlegalnie zdobytych arkuszy z poprzednich lat. No nie wiem.

1

@Satanistyczny Awatar

Poruszasz tutaj wiele różnych wątków i sam zwracasz uwagę że kadra ssie, więc jednak nie chodzi o jakiś konkretny kurs i sposób jego prowadzenia.

Pisanie zespołowo jest. Od zera jest. I co? I jajco. Jakieś bieda projekty gdzie algorytmy albo się bierze z bibliotek albo są to jakieś bieda harmonogramy rezerwacji gdzie szczytem algorytmiki są locki na bazie.

No to może trzeba trudniejsze projekty?

Kiedyś czytałem jak na jakiejś azjatyckiej uczelni podzielono rok na kilka grup i mieli sumarycznie zrobić - CPU, OS, Język programowania czy jakoś tak

O wiele ciekawsze niż opowiadanie o bebechach LLVMa

Edit: znalazłem https://fuel.edby.coffee/posts/how-we-ported-xv6-os-to-a-home-built-cpu-with-a-home-built-c-compiler/

1

I wtedy wchodzi cały biało znienawidzony bootcamp. 2 msc kodowania od zera pod okiem specjalistów i przede wszystkim praktyków. Oszczędność czasu i wbrew pozorom również pieniędzy w przypadku studiów zaocznych. Skupiasz się tylko na językach i technologiach w których chcesz pracować. Tak wygląda YAGNI w prawdziwym życiu 🤩

0
kelog napisał(a):

d) w interakcji ze studentami w dyskusjach i rozmowach prowokujących do myślenia.

Na pierwszym roku infy na polsl elektrotechnikę wykładał profesor, który niedawno wrócił z USA i chciał wprowadzić "nowoczesne interaktywne metody nauczania". W jego wizji wykłady były tak naprawdę dyskusjami pomiędzy audytorium a nim, która to dyskusja będzie obejmować w większości zadanka z obwodów, które to studenci powinni byli przejrzeć sobie wcześniej z reglamentowanego partiami PDFa z wykładami i rozwiązać w domu, opanowawszy temat wykładu samodzielnie z książki i wideotutoriali z kanału profesora na YT. Chyba za aktywność można było zdobyć zwolnienie z egzaminu.

Cel był szczytny, ale wyszło jak zawsze: mimo szczerych wysiłków profesora, na wykłady chodziło może 10% studentów (ja byłem chyba 2x, bo to było bez sensu), z czego z tych 10% pewnie kilka osób chciało w ogóle o czymkolwiek dyskutować, jeśli w ogóle wiedzieli o czym mowa (btw wszystko po angielsku, bo nowocześnie). Cała akcja okazała się porażką, materiały na nic się nie przydały, a egzamin był dramatycznie trudny.

Takie mam doświadczenie. I szczerze waham się, bo taki interaktywny wykład to w sumie spoko sprawa na pierwszy rzut oka, ale jednak leniwy student byle-zdać-bo-będę-programistę we mnie jest trochę przeciwko takim wynalazkom i może lepiej jednak zrobić po staremu, a egzamin zdać ucząc się tradycyjnie z półlegalnie zdobytych arkuszy z poprzednich lat. No nie wiem.

Cały jeden profesor? Już na wstępie zidentyfikowałeś problem. BTW podobnie wyglądało przejście z komuny na ten słynny kapitalizm. Mam nadzieję, że nie uważasz że to argument przeciwko odejściu od komunizmu.

WeiXiao napisał(a):

@Satanistyczny Awatar

Poruszasz tutaj wiele różnych wątków i sam zwracasz uwagę że kadra ssie, więc jednak nie chodzi o jakiś konkretny kurs i sposób jego prowadzenia.

Nie rozumiem skąd taki wniosek. Jak najbardziej chodzi i o kadrę, i o sposób prowadzenia.

Pisanie zespołowo jest. Od zera jest. I co? I jajco. Jakieś bieda projekty gdzie algorytmy albo się bierze z bibliotek albo są to jakieś bieda harmonogramy rezerwacji gdzie szczytem algorytmiki są locki na bazie.

No to może trzeba trudniejsze projekty?

Nie. Zmiana podejścia. Trudniejsze projekty bez zmiany podejścia tylko skończa się rzeźnią.

Kiedyś czytałem jak na jakiejś azjatyckiej uczelni podzielono rok na kilka grup i mieli sumarycznie zrobić - CPU, OS, Język programowania czy jakoś tak

No coś w ten deseń postulowałbym.

O wiele ciekawsze niż opowiadanie o bebechach LLVMa

Edit: znalazłem https://fuel.edby.coffee/posts/how-we-ported-xv6-os-to-a-home-built-cpu-with-a-home-built-c-compiler/

Ktoś cię kiedyś skrzywdził tym LLVM?

1 użytkowników online, w tym zalogowanych: 0, gości: 1