Na studiach nigdy nie interesowałem się teorią. Nigdy tego nie czytam. Bez względu na to, ile próbowałem, nie byłem w stanie czytać różnych rzeczy i nie wiedziałem, co się właściwie dzieje. Podobnie jak na przykład w moim kursie na temat teorii automatów, mój profesor powiedział mi wszystko, co może być związane z jego matematycznym aspektem, ale ani razu nie wspomniał o tym, gdzie miałoby to być praktyczne. To tylko przykład.
Udało mi się zdać maturę i odbyć staż w firmie, gdzie zrealizowałem projekt i na szczęście nie zawracali mi głowy ocenami, ponieważ były powyżej średniej.
Teraz chcę wiedzieć, jakie przedmioty student CS powinien bezwzględnie i pozytywnie mieć świadomość? Tematy, które mogą mieć znaczenie w branży. Dzieje się tak, ponieważ mam trochę wolnego czasu i pomogłoby mi to lepiej je zrozumieć.
Jakie są twoje sugestie? Podobnie jak jeden, algorytmy to jeden przedmiot.
Odpowiedzi:
Wierzcie lub nie, jedną z rzeczy, które okazały się dla mnie kluczowe w późniejszym życiu, była Kompilator. Nie nowoczesna wersja namby-pamby z użyciem Lexa i Yacca, to jest dla manekinów.
PRAWDZIWA konstrukcja kompilatora, w której od zera piszesz własny skaner symboli i parser.
Myślałem, że nigdy więcej tego nie użyję. Ale w ciągu ostatnich 20 lat kurs ten udowodnił swoją wagę w złocie 4 razy. Każdy procesor poleceń, który musiałem pisać, każdy skaner wiadomości przychodzących, każdy dyspozytor użytkownika, każdy interpreter skryptów, stosował zasady z tego kursu. Zrób to w ten sposób, a życie będzie słodkie, jasne i proste. I nawet przekazałem wszystkie informacje koledze, który tego nie zrobił - musiał napisać kompilator dla abstrakcyjnej maszyny. Co mogę dodać, odniosło duży sukces komercyjny.
Gdybym musiał wstać i podziękować wykładowcy uniwersyteckiego na jakikolwiek temat, to byłoby to. Bez tego bym sobie poradził, ale moje rozwiązania byłyby o wiele brzydsze.
(I zanim ktoś podskoczy i powie „dobrze, że mogłeś użyć leksyk i yacc ...” odpowiedź może być - zależy to bardzo od systemu. W niektórych przypadkach językami programowania nie były C (np. PL / M i Ada), w niektórych przypadkach na platformie nie były dostępne łatwo dostępne Lexy lub Yacc. Znajomość podstaw oznacza, że rozwiązanie jest dostępne, zamiast załamywania rąk, próbując wymyślić, jak zgiąć narzędzie, aby dopasować się do problemu.)
źródło
Struktury danych / algorytmy, zwłaszcza wykresy. Ilość rzeczywistych sytuacji, w których udało mi się zastosować algorytmy związane z grafem, była dla mnie niespodzianką. Skoncentruj się na poznaniu cech charakterystycznych, kiedy struktura danych lub algorytm jest odpowiedni. Na przykład zauważenie problemu i umiejętność korzystania z dynamicznego programowania / chciwego algorytmu jest ważne i pozwala zaoszczędzić dużo czasu.
Praktyczna znajomość złożoności obliczeniowej. Nie musisz wiedzieć z góry, co to jest dolna granica rodzaju radix, ale wiesz, jak dowiedzieć się, jaki najgorszy czas działania napisanego tekstu jest ważny, szczególnie w przypadku projektów o kluczowym znaczeniu dla wydajności.
Koncepcje systemu operacyjnego. Zarządzanie pamięcią, harmonogramy itp. Każdy programista powinien naprawdę dobrze rozumieć systemy operacyjne, biorąc pod uwagę, że kod, który piszesz, stale z nim współdziała.
NetSec. Zetknąłem się z bardzo małą liczbą programistów, którzy dobrze rozumieją podstawowe kwestie bezpieczeństwa związane z programowaniem (przepełnienie bufora, xss, SQLI itp.). Jest to naprawdę konieczne, jeśli chcesz odnieść sukces w branży. To świetnie, jeśli możesz napisać kolejną wielką rzecz, ale nie będziesz mieć wielu użytkowników na długo, jeśli nie zabezpieczysz ich danych.
Paradygmaty programowania. Znać cechy charakterystyczne i różnice między programowaniem OO / funkcjonalnym / proceduralnym. Jedną z najlepszych zajęć licencjackich, jakie kiedykolwiek miałem, było pisanie prostych 20 tłumaczy instrukcji dla fortan, schematu, prologu itp. W samych językach. Już sama ekspozycja może naprawdę pomóc w zrozumieniu podstawowych koncepcji rozwoju oprogramowania.
źródło
Spełnienie wymagań ukończenia studiów niekoniecznie wystarcza, aby być najlepszym informatykiem, jakim możesz być. W przypadku typowego programu nauczania w college'u znajdziesz dziesięć najważniejszych rzeczy, których powinieneś się nauczyć:
Podstawy ekonomii - kurs wprowadzający obejmujący takie tematy jak uzupełnienia i substytuty jest niezbędny do pracy w gospodarce wyższej lub po prostu jej zrozumienia. Chociaż koncepcja Dobra Giffen niekoniecznie pomoże, wiedza na temat efektów zewnętrznych tak. Może to również pomóc ci docenić, że więcej sytuacji jest korzystnych dla obu stron, niż mogłeś sobie wyobrazić.
Jak napisać dowód - wszystkie kierunki komputerowe powinny wiedzieć, jak napisać dowód. Dyskretna matematyka, choć stanowi część dobrze zbilansowanego śniadania, się nie liczy. [Indukcja jest tylko jedną techniką dowodową i możesz sobie z nią poradzić, nie wiedząc wiele o dowodach.] Kurs algebry lub prawdziwej analizy jest konieczny, aby naprawdę napisać dowody. A przez algebrę rozumiem teorię grup lub algebrę abstrakcyjną, a nie kurs, który uczyliście w szkole średniej. Aby uzyskać pełną korzyść, weź algebrę i prawdziwą analizę w tym samym terminie.
Dlaczego pisanie dowodów jest niezbędne? Ponieważ to programuje! Pomyśl o tym, kiedy po raz pierwszy nauczyłeś się programować: jeśli zadanie wymagało
if
i pętli, być może nie miałeś intuicji, gdzie je umieścić względem siebie. Ale teraz to samo zadanie wydawałoby się całkowicie naturalne. Pisanie dowodu jest bardzo podobne. Istnieje zestaw sztuczek, których się uczysz, a kiedy się je nauczysz, wszystko wygląda zupełnie inaczej.Jak pisać - Umiejętności w zakresie komunikacji pisemnej są niezbędne, niezależnie od tego, czy będziesz pracować w branży, czy w środowisku akademickim. Najlepiej, jeśli znajdziesz kurs mechaniki, a nie kurs pisania, który efektywnie dotyczy innego tematu. Oznacza to, że wiele szkół będzie próbowało uczynić kursy pisania bardziej interesującymi lub interesującymi, czyniąc je specjalnym tematem. Spróbuj wybrać „nudną” wersję kursu.
Prawdopodobieństwo i statystyki - są pewne rzeczy, które można prawidłowo odebrać, biorąc udział w kursie. Wraz z głównymi wymaganiami CS (które powinny dać ci dyskretną matematykę, rachunek jednej zmiennej i rachunek wielu zmiennych oraz algebrę liniową) i algebry i / lub analizy rzeczywistej, zbieranie statystyk prawdopodobnie da ci niewielkie znaczenie z matematyki. Statystyki uczenia się mogą pomóc w pracy z innymi naukowcami nad ich projektami.
Aktualny gorący temat - W poprzednich dekadach mogły to być bazy danych lub programowanie obiektowe. Dzisiaj może to być programowanie sieciowe lub architektura zorientowana na usługi. Jakakolwiek jest obecna moda, koniecznie weź udział w kursie. Żeby tylko zobaczyć, o co chodzi w modzie.
Problem zatrzymania - Większość problemów nie może być rozwiązana przez maszyny. Jest to dość głęboka idea, że nasza kultura tak dobrze się wchłonęła, że nie brzmi już szokująco. To samo dotyczy radia, Goedela i bomby atomowej; dopiero sztuka ponowoczesna i zimna wojna pozwoliły nam poradzić sobie z tymi pojęciami. Jednak biorąc udział w kursie teorii obliczeń, możesz ponownie uwrażliwić cię na ten dość niesamowity dowód.
Programowanie czysto funkcjonalne - najprawdopodobniej nie przejdziesz do programowania czysto funkcjonalnego, chyba że przeprowadzisz w nim badania lub pracujesz dla kilku wybranych firm, ale wiedza o tym pomoże ci być lepszym programistą. Powodem jest to, że poznasz wiele nowych form abstrakcji oraz takich pojęć, jak liczby i kontynuacje Kościoła oraz monady i tak, rekurencja, a te narzędzia można zastosować również w następnym programie Java.
P i NP - OK, ten jest już na twojej krytycznej ścieżce, ale i tak uważaj. Chcesz mieć pewność, że możesz poprawić kogoś, kto nieprawidłowo nazywa NP „nie-wielomianowy”. Jakby!
Tematy z kursu, którego z pewnością nie znosisz - może to być kurs CS, który uważasz za zbyt niski, zbyt teoretyczny, lub kurs inny niż CS, który uważasz za zbyt niekorzystny, zbyt trudny lub zbyt nudny . Jeśli taki kurs wydaje Ci się być problemem, a tłumaczysz innym, dlaczego tak się cieszę, że nie musisz brać takiego a takiego, powinien ci powiedzieć, że dużo się nauczysz biorąc kurs! Być może nie nauczysz się materiałów kursu, ale dowiesz się o własnych ograniczeniach i być może więcej o uzasadnieniach, które sam sobie uznasz. [Wskazówka: zazwyczaj są słabi.]
Kurs non-CS, który z pewnością pokochasz - w końcu powinieneś się dobrze bawić. Jest to kurs, z którego prawdopodobnie skorzystasz najmniej, ale i tak go wykorzystaj. Zrób to raz. Jeśli akurat lubisz wiele kursów, to dobrze dla Ciebie, ale upewnij się, że nie przeszkadza to w pokryciu pozostałych kursów z tej listy.
Moje podejście tutaj było praktyczne, oparte na kursach, które możesz faktycznie wziąć. Skoncentrowałem się na celach uczenia się, których można się nauczyć. Uwaga: Ta odpowiedź została zaadaptowana z mojego blogu na temat Dziesięciu rzeczy, które powinien znać każdy informatyk .
źródło
Po rozmowie z kilkoma przedstawicielami firmy i przyjaciółmi, którzy mieli wiele wywiadów:
wydają się być „ obowiązkowe ” dla nowych pracowników (lub, jak powiedzieli, „wysoce zalecane” kursy).
Inne przydatne kursy to bezpieczeństwo komputera, montaż i architektura maszyn. Wielu moich profesorów poleciło mi również kurs kompilatora. Ponadto, jeśli masz czas, bardzo polecam kursy matematyki, takie jak teoria grafów, matematyka dyskretna i kombinatoryka. Nauczysz się wielu umiejętności rozumowania na tych zajęciach, nad którymi prześwieca większość kursów CS, ale w końcu są bardzo przydatne podczas pisania bardzo złożonych programów.
Mam nadzieję, że to pomaga!
źródło
W dużej mierze zależy to od tego, co planujesz zrobić ze stopniem naukowym. Wygląda na to, że większość kierunków CS kończy się jako inżynier oprogramowania. Mając to na uwadze, naprawdę nie jestem pewien, dlaczego więcej osób nie zajmuje się wyłącznie inżynierią oprogramowania. Podejrzewam, że nie ma wystarczającej liczby programów inżynierii oprogramowania, szczególnie w instytucjach publicznych.
Pochodzę z osadzonego podłoża. Każda osoba, z którą pracuję, miała stopień EE lub CE, a to częściowo dlatego, że kiedy „starzy faceci”, kiedy studiowali, nie było tak wielu dostępnych programów CE. Jest więc oczywiste, że jeśli chcesz pracować w polu osadzonym, pożądane jest tło sprzętowe.
Niezależnie od dziedziny, w której chcesz pracować, uważam jednak, że każdy programista powinien przejść kurs programowania. Możesz go nigdy nie używać, ale nauczy dokładnie, co dzieje się na poziomie procesora podczas wywołania funkcji, w jaki sposób obsługiwane są przerwania, jak zbudowana jest pamięć lub jak wykorzystywane są różne tryby adresowania. Wierzę, że dzięki tym wszystkim będziesz lepszym programistą.
Ponadto, choć może to nie być oczywiste, niektóre z nich są ważnymi tematami przy rozważaniu struktur danych i algorytmów dla konkretnej platformy.
źródło
Istnieją 2 sposoby na odpowiedź na twoje pytanie. Pozwól mi spróbować obu. Pierwszym sposobem jest spojrzenie na rzeczy z potencjalnego punktu widzenia rynku pracy, umiejętności kodowania itp. Oto moja lista:
Drugi sposób to patrzeć na sprawy z nieco abstrakcyjnej perspektywy, a kto wie, może być też trochę filozoficzny. Poniższa lista może nie zawierać najgorętszych umiejętności wymaganych przez rynek pracy, ale jestem pewien, że kiedy wyjdziesz z tych kursów, będziesz w stanie głębiej docenić sztukę tworzenia oprogramowania.
źródło
Dodałbym również do listy Inżynierię oprogramowania lub Praktyki projektowania, chociaż ich treść zazwyczaj są odbierane przez studentów z branży.
Ponadto, moim zdaniem (choć nie ma to dużego doświadczenia) firmy tak naprawdę nie chcą większości teoretycznych rzeczy nauczanych na kursach takich jak bazy danych itp., Chcą, aby ludzie rozumieli i mogli z nich korzystać .
EDYCJA: Ze względu na głosowanie mam ochotę wyjaśnić moją odpowiedź. Jestem studentem informatyki ostatniego roku, a moje doświadczenie opiera się na moich stażach i rozmowach kwalifikacyjnych z wiodącymi firmami w tej dziedzinie. Z mojego doświadczenia wynika, że ludzie rzadko wymagają stosowania skomplikowanych algorytmów lub kodowania bardzo skomplikowanych struktur danych podczas wywiadów lub pracy.
Bardziej przydatne, jeśli możesz tworzyć bazy danych i korzystać z nich, korzystać z kontroli źródła, umieć poprawnie debugować, umieć używać wzorców projektowych itp. Jednak, jak powiedziałem, umiejętności te są zazwyczaj podnoszone w branży i nie są objęte kursami. Inżynieria oprogramowania / praktyki projektowe zazwyczaj obejmują zbudowanie projektu średniej wielkości, bardzo przydatnego do nauki wszystkich tych umiejętności.
źródło
Rzeczy, których nauczyłem się na studiach, których używam na co dzień:
Chciałbym wziąć kurs bazy danych. (Odebrałem wystarczająco dużo, by się utrzymać, odkąd ukończyłem szkołę, ale chciałbym wiedzieć więcej.) Chciałbym również, aby nauczono kontroli wersji - jest wszechobecna, niezwykle użyteczna i została całkowicie zignorowana w programie nauczania mojej szkoły.
Musiałem wziąć kilka kursów matematyki. Nie korzystałem z rachunku różniczkowego od czasu ukończenia studiów. Chciałbym wziąć kurs statystyczny. (Ponownie zebrałem wystarczająco dużo, aby przetrwać od ukończenia szkoły, ale chciałbym wiedzieć więcej).
Poza działem CS weź kurs pisania. Dobre umiejętności komunikacji pisemnej są niezbędne do osiągnięcia sukcesu.
źródło
Istnieje wiele ważnych kursów, w zależności od kierunku, w którym planujesz iść. Jednak zakładając, że możesz w ogóle programować, najważniejszym kursem musi być:
Struktury danych i algorytmy
Praktycznie wszystko w informatyce wraca do obsługi danych przy użyciu algorytmów. Zwróć szczególną uwagę na tablice i tablice skrótów, ponieważ są to najbardziej przydatne struktury danych w powszechnym użyciu, ale listy i drzewa i wykresy (cóż, listy są ograniczonymi typami drzew, a drzewa są ograniczonymi typami wykresów) być również ważnym. Ponadto zrozumienie algorytmów ma kluczowe znaczenie dla tworzenia kodu, który nie jest straszny. (W przeciwnym razie zrobisz rzeczy, które są po prostu okropne, na przykład użyjesz algorytmu O ( n 3 ), w którym zrobi to O ( n log n ).) Jeśli twój stopień CS nie ma obowiązkowego kursu DS + A, to nie CS. Lub inżynieria oprogramowania. A nawet po prostu programowanie.
Poza tym kurs, który przez lata był dla mnie najbardziej użyteczny w wielu dziedzinach, to:
Konkurencja
Współbieżność ma wiele aspektów, ale oczekiwałbym zrozumienia różnicy między pamięcią współużytkowaną a przekazywaniem wiadomości. Chciałbym również, aby istniało silne omówienie strategii blokowania (muteksy, semafory itp.) I transakcji.
Jest to oczywiście istotne dla zrozumienia równoległości, ale ma również kluczowe znaczenie dla wszystkiego, co jest dystrybuowane (np. Pisanie usługi udostępnianej w Internecie, nawet jeśli jest ona jednowątkowa, ponieważ klienci i tak będą asynchroniczni). Rozumiem, że jest to również przydatne do pisania gier (które zwykle są wielowątkowe) i pracy z urządzeniami osadzonymi.
Poza tym myślę, że w najlepszym interesie większości studentów jest, aby byli narażeni na tak wiele różnych pomysłów, jak to możliwe. Wiele języków programowania i paradygmatów. Wiele różnych obszarów zastosowania. Rozsądna ilość matematyki (znowu, ponieważ jest tak często przydatna), a także pewne narażenie na czynniki ludzkie i psychologię (ponieważ każde oprogramowanie, które wchodzi w interakcje z użytkownikami, ma do czynienia z ludźmi). W końcu nigdy nie wiesz dokładnie, co będziesz robić w przyszłości, więc planowanie elastyczności to świetna strategia życiowa.
źródło
Kiedy byłem na studiach, było kilka tematów, których nie widziałem w życiu, a czasem intuicja okazała się słuszna (metody formalne są w rzeczywistości praktyczne tylko w przypadku trywialnych problemów w większości przypadków), a innym razem było całkowicie błędne (notacja Big-O jest bardzo przydatna), więc wydaje mi się, że moje młodsze „ja” miało częściowo rację.
Jeśli chcesz się przygotować do prawdziwego świata, oprócz rzeczy zalecanych powyżej przez @ K-Ran, sugeruję przeczytanie Code Complete i wykorzystanie go jako podstawy do głębszych badań nad dowolnymi tematami, które uważasz za trudne lub których nie masz. wystarczająco osłonięty.
źródło
Myślę, że powinieneś przestudiować następujące rzeczy:
System operacyjny: - Nawet jeśli nie musisz go używać jako programisty, warto wiedzieć, jak działa system operacyjny i oczekuje się tego od stopnia CS. Każda dobra książka może pomóc.
OOP: - To jest chleb z masłem. Koniecznością. Książki, jeśli chcesz zapytać: Twoja pierwsza książka powinna być: - kieruj się najpierw OOAD, potem możesz wybrać książkę Grady'ego Boocha i Ivara Jacobsona
Struktury danych i algorytmy: - Bardzo ważne, aby rozwinąć logiczne myślenie i sposób myślenia.
Tyle mi wystarczy. Nigdy nie jest za późno. :)
źródło
Jako osoba, która regularnie przeprowadza rozmowy kwalifikacyjne z kandydatami do pracy programistycznej i osoba, która po ponad 12 latach pracy w branży czuje się rozsądnie osiągnięta, proponuję następujące
Następnie dodatkowe prace programowe przeczytaj:
źródło
TO ZALEŻNOŚCI , nie ma jednej dobrej odpowiedzi na to pytanie.
Programista to ogólny świat identyfikujący kogoś, kto pisze oprogramowanie komputerowe.
Teraz istnieje oprogramowanie wszelkiego rodzaju. Na przykład, używając wikipedii jako źródła uogólnienia, możemy spotkać 3 wielkie uogólnienia :
W pierwszym polu programowania systemu opracuj sterowniki urządzeń, system operacyjny, serwery, dzięki czemu możesz na przykład przejść kurs systemu operacyjnego.
ale co z oprogramowaniem do programowania ? tutaj, jak napisała wikipedia, możesz kodować kompilatory, debuggery, tłumacze, linkery, edytory tekstu, więc kurs automatyzacji teorii, teorii języka, języka i kompilatorów może być przydatny.
Czy nie możemy mówić o jakimkolwiek oprogramowaniu aplikacyjnym:
- gry wideo: algebra, fizyka, kursy obiektowe?
- oprogramowanie matematyczne: kursy matematyczne?
- edycja obrazu: matematyka, fizyka, kursy algorytmów?
- automatyka przemysłowa: matematyka, fizyka, algorytm, kursy robotyki?
- oprogramowanie medyczne: biologia, medycyna, co jeszcze kurs?
- dużo rzeczy tutaj: dużo kursów tutaj.
Jak widać, jest wiele rzeczy, które możesz śledzić i przydadzą się w twojej pracy.
Z mojego doświadczenia jestem inżynierem oprogramowania systemowego i aplikacyjnym w dziedzinie bezpieczeństwa (chcesz przejść kurs bezpieczeństwa?), Zaczynając od małego doświadczenia w programowaniu, interesuję się algorytmami i systemem rozproszonym i znów czuję niewygodne w prostocie aplikacji ogólnego przeznaczenia, którą napisałem (sniffer, system wykrywania włamań do sieci, separator protokołu i detektor itp.).
Jak kwaśno nauczyłeś się informatyki teoretycznej! Czy znasz te kursy? : P
Nauczyłeś się na przykład, że cały język komputerowy można dopasować do zestawu obliczalnych funkcji matematycznych i na przykład, jeśli twoje doświadczenie osiągnie tę samą ścieżkę, wkrótce poczujesz się nieswojo w tym małym zestawie rachunku różniczkowego i podobnie jak ja, możesz zacząć widzieć, jak rozwija się oprogramowanie nie jest tak wciągające i niesamowite, ponieważ ten sam WZÓR PROJEKTU powraca ponownie (czy uczęszczasz na kursy wzornictwa projektowego?) i na przykład możesz zacząć bardziej interesować się DLACZEGO i JAK język można tłumaczyć na funkcje matematyczne i zacząć naucz się, że język komputera nie jest tak skomplikowany! wkrótce możesz na przykład być bardziej zaskoczony osobą i psychologią, możesz zainteresować się nią i zostać dobrym kierownikiem projektu! czy śledzisz kursy na temat cyklu życia oprogramowania?
Więc teraz, jaki jest kurs MUST-HAVE w Twojej karierze CS?
Proponuję nauczyć się tyle, ile możesz się uczyć na wszystkich polach, szczególnie na polu teorii, ponieważ we wspólnej dziedzinie pracy szybko możesz się nudzić z powodu niewielkiej złożoności wokół ciebie, a stając się pracownikiem zatrudnionym w pełnym wymiarze godzin masz naprawdę mniej czasu na naukę jak rzeczy naprawdę działają i znacznie więcej czasu, aby zobaczyć, jak ludzie z dużą wiedzą teoretyczną przewidzieli rzeczy do pracy i dają ci możliwość kodowania, aby dostać jedzenie w domu.
w informatyce jest złe poczucie rzeczywistości. na przykład informatyk czasami jest naprawdę daleko od programisty.
spójrz na wyjaśnienie wikipedii.
baw się dobrze z życiem :)
moje 2 centy.
przepraszam za mój bardzo zły angielski.
źródło
Bez wątpienia najważniejszą rzeczą, w której studenci CS powinni biegle mówić, jest angielski.
Bez zrozumienia zarówno mówionego, jak i pisanego angielskiego na zawsze będziesz w niekorzystnej sytuacji.
Wystarczy spojrzeć na mnóstwo pytań, które pojawiają się na stronach Stack. Zbyt wiele z nich jest trudnych do rozszyfrowania. Niektóre osoby używają mieszanki l33t, wysyłania SMS-ów (nie jestem pewien poprawnego terminu). Inni wypowiadają się i po prostu dodają znak zapytania, pomijając ważne małe myśli, takie jak czasowniki lub przymiotniki.
Jeśli nie potrafisz się komunikować, nie będziesz w stanie sprawić, że zrozumiesz, a tym bardziej zrozumiesz, co mówią inni.
Cała reszta to tylko szczegóły. Jeśli potrafisz się komunikować, masz co najmniej przeciętną inteligencję i rozumiesz, co czytasz, to również możesz mieć udane programowanie kariery.
źródło
Podchodzę do tego z nieco innej perspektywy, ponieważ nie ukończyłem CS, ukończyłem inżynierię elektroniczną (z nieletnim w biznesie).
Na tej podstawie uważam, że lista rzeczy, które musisz zrozumieć, jest stosunkowo krótka, ponieważ ja (i wielu innych absolwentów CS) przeżyję szczęśliwie, nie wiedząc nic o projektowaniu kompilatora lub tym podobnych.
Co powiedziałbym, że wybrałem, które uważam za przydatne:
A jeśli w ogóle masz szansę dowiedzieć się o zarządzaniu projektami, to naprawdę nie zaszkodzi, ale w wielu przypadkach na uniwersytecie jest to bardzo źle nauczone i jest to coś, czego nauczysz się trochę w pracy, tylko przy projektach.
źródło
Do listy dodałbym również kilka podstawowych kursów HR / psychologii.
Może to wydawać się dziwnym dodatkiem, ale część pracy zawodowej polega na uczeniu się, jak sprzedawać się i negocjować. Wejście do pierwszego „prawdziwego” wywiadu bez solidnej wiedzy na temat motywacji drona HR to przepis na katastrofę, który prawdopodobnie skończy się wkręceniem studenta w niską pensję.
Poznaj swojego wroga, abyś mógł się chronić.
źródło
1 rok:
Drugi rok:
Trzeci rok:
4 rok:
Kursy te powinny zapewnić mnóstwo teorii i praktyki kodowania.
źródło
Dziwne, że nikt nie wspominał o architekturze komputerowej.
źródło