Kto może nauczyć się programować? [Zamknięte]

17

Zawsze waham się, kiedy rozmawiam z profesorami o próbie poprawy odsetka osób kończących studia z tytułem CS w porównaniu z liczbą osób, które zaczynają myśleć, że tego właśnie chcą. Z jednej strony naprawdę uważam, że ważne jest, aby profesjonaliści byli zaangażowani i udzielali tych informacji zwrotnych, z drugiej strony byłoby lepiej, gdyby mniej studentów niższych klas kończyło się dyplomem CS.

Nie sądzę, że każdy umysł jest zbudowany na tę dziedzinę i musisz być dobrym uczniem przez całe życie. Musisz się wykazać wysokim poziomem cierpliwości i umiejętności rozwiązywania problemów. Jeśli masz „właściwy” rodzaj mózgu, te trudne problemy są tym, co prowadzi cię do kontynuacji. Jeśli po prostu dostaniesz długą listę łatwych problemów, nudzisz się, więc ci ludzie nie są dobrzy w powtarzalnych zawodach. Nie muszę wchodzić we wszystkie szczegóły ... jeśli to czytasz, prawdopodobnie wiesz, o co mi chodzi.

Pytanie brzmi zatem: jak znaleźć równowagę w programie studiów, który jest dostępny dla wystarczającej liczby osób, aby uzyskać dofinansowanie i uznać go za sukces, ale także nie okazuje się osobom, które tak naprawdę nie są przygotowane do pracy? Być może lepszym pytaniem jest, jakich wskaźników używasz, aby wiedzieć, czy zmiany, które wprowadzasz w programie studiów, poprawiają go? Nie wiem, czy wyższy wskaźnik ukończenia szkoły to dobra miara. I wydaje się, że opinie, które można by próbować uchwycić wiele lat później na temat pracy, którą zajmują absolwenci, byłyby zbyt opóźnione.

Zmagałem się z tym pytaniem od dłuższego czasu, głównie dlatego, że nie sądzę, aby istniała odpowiedź. Ale pomyślałem, że zapytam, czy ktokolwiek wie o jakimkolwiek badaniu, które zostało na ten temat przeprowadzone.

Dodatek: Niedawno mój bardzo mądry profesor przypomniał mi, że nie każdy, kto ukończy dyplom CS, chce nawet zostać pełnoetatowym programistą, gdy odkryje, co to znaczy. Ale dzięki zdobytemu wykształceniu mogliby być świetnymi menedżerami projektów, menedżerami, administratorami systemów itp. Myślę, że to był bardzo dobry punkt, o którym nie pomyślałem tutaj. Istnieje bardzo wysoki odsetek osób, które nie kończą pracy w dziedzinie, w której się specjalizują, CS nie jest wyjątkiem. Posiadanie dodatkowych ludzi pomaga nie tylko w budżecie na stopień, ale także zwiększa odsetek nie-programistów, którzy wciąż wiedzą o nim wystarczająco dużo, aby pracować z programistami.

Beth Whitezel
źródło
@ Job- Dzięki, to świetny punkt i sprawia, że ​​czuję się znacznie lepiej.
Beth Whitezel,
2
@job: mówiąc jako major psychologii, teraz programując maszyny NMR, mogę to potwierdzić.
Matt Ellen,

Odpowiedzi:

33

Ok, według popularnego popytu ... Niech wolny rynek to zrozumie. Wiesz, 95% kierunków psychologicznych robi coś innego. Nie wszyscy z dyplomem CS / moll kończą programowanie, ale robią lepszych menedżerów, analityków, kierowników projektów niż ci bez niego. Nie noś na sobie ciężaru świata. Stopień CS to tylko kartka papieru. Osoby z dyplomami z matematyki, fizyki, chemii i biologii stają się programistami i nie każdy z dyplomem CS zostaje programistą. Bez milionów dzieci aspirujących do bycia najlepszym graczem w baseball nie mielibyśmy tak wielkich gwiazd. System samoreguluje się.

Praca
źródło
W pewnym stopniu się zgadzam, ale musiałem również wspierać kod napisany przez osoby z dyplomami z fizyki, matematyki i inżynierii mechanicznej, które uważały się za programistów. To, że ktoś robi coś dla swojej pracy, nie oznacza, że ​​robi to dobrze ...
Joel C
7
Widziałem dużo złego kodu napisanego przez studentów CS. Widziałem niesamowity kod napisany przez ludzi z matematyki, fizyki lub cokolwiek innego. Nie ma prawie żadnej korelacji między tym, co dokładnie studiowałeś, a jakością twojego kodu.
jhocking
1
idźcie, biologia!
jhocking
11

Chociaż uważam, że odpowiedź Hioba jest ważna, należy pamiętać, że tę samą odpowiedź można zastosować do młyna naukowego. „Zapłaciłem 199,95 USD, a teraz daj mi dyplom CS”.

Poznanie ciała studenta zgodnie ze standardem „prawdziwych programistów” nie jest tak naprawdę twoim zadaniem. Nauczanie studentów, jak programować / projektować jest (przypuszczalnie?). Jeśli nie zmieniłeś sposobu myślenia na studiach, zmarnowałeś tam swój czas. Twoim celem jest pokazanie każdemu uczniowi, który wykazuje zainteresowanie, że zostanie programistą zmienia sposób myślenia na lepsze. Robisz to pośrednio, pokazując im ...

  1. czym tak naprawdę jest programowanie i ...
  2. że mogą to zrobić.

Robimy to źle

Istnieją szeroko zakrojone badania, które pokazują, że sposób, w jaki 95% naszych programów szkoleniowych uczy programowania / CS, jest okropny. Przeciętny program CS zaczyna się od

  • Semestr programowania podstawowego w języku C ++ / Java / C #, który przez 16 tygodni uczy kilku rzeczy bardziej zaawansowanych niż „to jest pętla for”. Analogia może być taka, że ​​wydział fizyki spędził semestr studiując alfabet grecki przed rozpoczęciem kinematyki.
  • Drugi semestr pierwszego roku przenika do podstawowych struktur danych i zwykle całkowicie pozostawia 1/3 do połowy studentów.
  • Rok drugiego roku poświęca się na połączenie zestawu, struktur danych, analizy algorytmicznej, kursu etyki i być może pierwszego kursu tematycznego. W tym roku tracisz kolejną połowę przybywających studentów.
  • Juniorzy i seniorzy uczęszczają na zajęcia o nazwach takich jak „Grafika”, „Sieć I i II”, „Systemy operacyjne” i jest to pierwszy naprawdę interesujący materiał, który uczniowie mogą zobaczyć.

Prawie wszystko inne jest lepsze

Prawie każdy eksperyment poprawia sytuację, mierzoną pod względem zrozumienia przez studentów tematów ORAZ zapisów do programu ORAZ wskaźników ukończenia studiów. Niektóre eksperymenty, które widziałem w czasopismach ACM CSE , to ...

  • Budowanie od bardzo prostych teoretycznych maszyn stanów do montażu i do C, kończąc na C # / Java w poprzednim roku. Nacisk kładziony jest na powolne indeksowanie warstw abstrakcji.
  • Wybór bardzo „prostego” języka, aby skupić uczniów na strukturach danych i abstrakcji. Widziałem dobre wyniki ze studentami piszącymi raczej złożone aplikacje internetowe w wariancie programu do końca pierwszego roku. (To była zmodyfikowana wiki, która przeglądałaby tekst strony przed wyświetleniem ... trochę zabawy)
  • Koncentrowanie początkujących uczniów na określonym obszarze (networking) i nauczanie każdej struktury / instrukcji Java jako „na boku”. W drugim tygodniu studenci pingują serwer pocztowy, aby zobaczyć listę swoich e-maili, a ostatecznym projektem jest prosty klient IM. Nacisk kładziony jest na pokazanie studentom, w jaki sposób programiści tworzą jedną część świata.
  • Niektóre programy koncentrują się na robotyce. Gra dla początkujących z burzami mózgów Lego ... studia drugiego stopnia wykorzystują API typu C, Juniorzy i seniorzy współpracują z ME i EE we współpracy między kampusami, aby budować dość złożone systemy.
  • Jeden program skupia studentów na kodzie CZYTANIA w pierwszym półroczu. Analizują kod w systemie X11, aby uczyć kontroli przepływu i podstawowej składni przez około 8 tygodni, zanim jeszcze zaczną pisać kod. Ich pierwsze programy to małe łatki, które modyfikują trochę zachowanie.

Każdy z tych eksperymentów spowodował znaczną poprawę początkowego zainteresowania studentów, transferu wiedzy i utrzymania do ukończenia studiów. Niektóre są bardziej odpowiednie dla niektórych środowisk akademickich niż inne, ale jeśli postępujesz zgodnie ze strukturą opisaną w powyższym akapicie, zadaj sobie pytanie: „Czy pozostanę przy pierwszych dwóch latach tego programu?”

Jkerian
źródło
Zgadzam się z tobą, że powinniśmy skupić się na pokazaniu im, na czym polega programowanie i jak może zmienić twój proces myślowy, niezależnie od tego, co zrobisz później. Dobre myśli.
Beth Whitezel,
2

Programować to instruować w logiczny sposób, aby osiągnąć pożądany efekt. Innymi słowy, nakazuje komputerowi wykonanie jakiegoś zadania. Jedynym sposobem na przejście do przodu jest ćwiczenie.

Podobnie jak nauka angielskiego lub innego języka, musisz zacząć od nauki składni (alfabetu), a następnie przejść do gramatyki i innych konstrukcji. Wymagany czas różni się w zależności od złożoności języka. Kodowanie w językach wyższego poziomu, takich jak SQL, Python jest prawie jak pisanie po angielsku.

nayan
źródło
2

Myślę, że kilka aspektów pomogłoby -

  • Profesje, które są świadome współczesnego prawdziwego świata. Jeśli są w stanie rozmawiać o aktualnej technologii i jej dopasowaniu do ram teoretycznych, jest to o wiele bardziej odpowiednie dla nieświadomych historii studentów niż rozwikłań VAXen bez odniesienia do obecnej technologii.

  • Staże wspierane przez dział. Jeśli dział może zagwarantować co najmniej 2 lata płatnej pracy z firmami technologicznymi, to jest świetna zachęta do pozostania.

Szczerze mówiąc, studenci współczesnej informatyki są o wiele bardziej błogosławieni niż ci, którzy żyją nawet 5-10 lat temu. Możliwość zakupu systemu klasy ekonomicznej, a następnie zainstalowania maszyny wirtualnej i nauki wielu języków, systemów operacyjnych itp. Za darmo jest takim czynnikiem umożliwiającym, że trudno ją przecenić.

Oczywiście przełomowi ludzie, tacy jak Hopper i Knuth, uczyli się bez shinii. Geniusz zniknie.

Paul Nathan
źródło
Chociaż pomysł jest świetny ... dwa lata gwarantowanej płatnej pracy zawodowej są niestety nierealne. Tak, są płatne staże, ale większość absolwentów ma szczęście, że dostała teraz jeden płatny i często musi zadowolić się bezpłatnym. W innych stanach może być inaczej. Myślę, że masz rację, że mają więcej możliwości. Mogą przyczynić się do wielu innych projektów typu open source, a także kilka lat temu.
Beth Whitezel
@ BitOff: Nigdy nie słyszałem o nieodpłatnym stażu CS.
Paul Nathan
Bez żartów? W takim razie musi to być lokalizacja.
Beth Whitezel,
1

Utwórz obszar przejściowy dla potencjalnych, odnoszących sukcesy studentów spoza programu studiów, aby ograniczyć ryzyko. Może to obejmować sponsorowanie zajęć AP CompSci w lokalnych szkołach średnich, aby zapobiegawczo oddzielić pszenicę od plew. Jeśli okaże się to zbyt trudne, spróbuj infiltrować lokalne rozdziały DECA (lub utwórz nowy) za pomocą programu zorientowanego na CS w oddziałach szkół średnich lub college'ów. I odwrotnie, będziesz pokazywał przedsiębiorczym studentom poszukującym umiejętności zarządzania, być może z niezrealizowanym potencjałem CS, nową ścieżką do spełnienia ich aspiracji biznesowych za pośrednictwem Twojego środowiska akademickiego.

Travis J
źródło
Tak, całkowicie się zgadzam, że musimy robić więcej, aby wprowadzić CS na wcześniejszych wiekach niż na studiach. Wiem, że większość szkół średnich oferuje jedną lub dwie zaawansowane klasy komputerowe, które potrafią opanować język programowania, ale nie sądzę, żeby to wystarczyło. Często myślałem, że gdybyś mógł uczyć prostego, przyjaznego dzieciom języka dla uczniów klas 4-6, to zainteresowałbyś się nim w odpowiednim wieku. Po raz pierwszy nauczyłem się podstaw, kiedy miałem 8 lub 9 lat i chociaż zajęło mi to kolejne 10 lub więcej lat, aby naprawdę się w to zaangażować, pozostawiło mi to wspaniałą pamięć „programowania”.
Beth Whitezel
1

Twierdzę, że kluczem jest zrozumienie różnych poziomów takich programów:

Uniwersytety - tam zwykle można studiować tylko ze względu na studia. W tym przypadku może istnieć zupełnie inny standard w zakresie tworzenia programów i dostosowywania ich, ponieważ może to być dość teoretyczna, a przynajmniej tak pamiętam z studiowania informatyki na wyższych kursach.

Uczelnie - są one bardziej zorientowane na karierę zawodową, a kluczową kwestią jest informacja zwrotna od branży i łączenie firm z uczelniami wyższymi. Analizowanie miejsc docelowych 6-12 miesięcy po ukończeniu studiów może być miarą używaną do sprawdzania, jak dobrze radzą sobie ludzie po ukończeniu studiów, ponieważ kluczowym pytaniem jest to, czy ktoś postrzegał ich czas i pieniądze za zdobycie takiego wykształcenia. Aktualizacja programu będzie prawdopodobnie częstsza, ponieważ programy tutaj mogą być nieco krótsze, np. Programy uniwersyteckie Honor Bachelor zwykle trwały 4 lata, a program studiów wyższych może trwać 18–24 miesięcy. Wyzwanie polega zatem na tym, aby ta część miała powiązania z firmami, aby ludzie mogli się zorientować w pracy i zobaczyć, co działa, a co nie.

JB King
źródło