Jak zacząć w teoretycznej CS?

35

Jestem studentem pierwszego roku informatyki i już wiem, że chcę studiować na akademii, koncentrując się na kierunkach teoretycznych. Przeczytałem już niektóre artykuły wymienione w tym pytaniu i pytanie to przekonało mnie dalej.

Co powinienem teraz robić , jako student, aby zaangażować się w polu? Co mogę zrobić, aby przygotować się do badań w tej dziedzinie?

Dobra osoba
źródło
7
Nie jest to wystarczająco znaczące, aby opublikować je jako odpowiedź, ale rozważ także wybranie kopii „Wprowadzenie do teorii obliczeń” Michaela Sipsera. Nawet jeśli nie masz czasu na samodzielne studiowanie z tą książką, jest to świetna referencja, jeśli jest coś, co musisz sprawdzić, co nie jest jasno wyjaśnione w Wikipedii.
Philip White,
2
Nie wiem, jak działa ta procedura, ale chciałbym zobaczyć to jako wiki społeczności.
chazisop,
3
oflaguj pytanie do uwagi moderatora, a my sobie z tym poradzimy.
Suresh Venkat,
2
@Good Person: OP nie może zadać pytania CW, tylko moderatorzy mogą.
Kaveh
2
@Good Person: jak wspomina Kaveh, oryginalne plakaty nie mogą już publikować postów CW (podobnie jak nikt z uprawnieniami do edycji). Tylko mody mogą to zrobić. żadne przestępstwo nie było zamierzone.
Suresh Venkat,

Odpowiedzi:

29

Pozwól, że udzielę odpowiedzi z drugiej strony. Współpracowałem z kilkoma studentami studiów licencjackich. Doświadczenie było mieszane: z niektórymi publikowałem artykuły i pracuję w toku, a z innymi tak naprawdę nigdy nie zaczęliśmy.

Wspaniale, że wiesz, co chcesz robić. Jako student, na czym powinieneś się skupić:

  • Budowanie matematycznych „mięśni”, które pomogą ci, gdy zaczniesz poważnie pracować nad problemami
  • Poznawanie różnych aspektów teoretycznego CS, aby poznać obszar i dowiedzieć się, jakie problemy / obszary są dla ciebie interesujące
  • (w zależności od obszaru) rozwiązywanie zagadek, być może rozwiązywanie niektórych ćwiczeń i rozwiązywanie problemów badawczych.

Znajdź profesora, który cię poprowadzi, i postaw na czas! Najtrudniejszą rzeczą, jaką napotkasz, jest stworzenie czasu na zastanowienie się nad problemami w trakcie zajęć, zadań i egzaminów. Ale musisz zarezerwować bloki czasu na swoje niezależne studia i badania, w przeciwnym razie bardzo trudno będzie poczynić jakiekolwiek postępy. To, jak to zrobisz, zależy od ciebie: może uda ci się znaleźć profesora, który spotka się z tobą raz w tygodniu i wyznaczy cele pośrednie, albo może wyznaczysz cel długoterminowy (poprzez ćwiczenie X ćwiczeń z tekstu) i będziesz stale pracował nad że.

Suresh Venkat
źródło
4
Niezła odpowiedź! „musisz zarezerwować bloki czasu na swoje niezależne studia”: to przypomina mi moje własne doświadczenia. Kiedyś byłem leniwym studentem matematyki, a potem w mistrzu odkryłem ładny problem z TCS (koncentrujący się wokół funkcji zajętego bobra). Pracę nad wolnym czasem zacząłem pod kierunkiem jednego z moich prof. Nigdy nie znalazłem czegoś interesującego na ten temat, ale 12 lat później napisałem z nim ponad 15 artykułów (ale nigdy nie był moim doktorem / mistrzem, tylko „zewnętrznym” mentorem).
Sylvain Peyronnet,
1
Odpowiedź Suresha jest świetna! Dla PO: budowanie matematycznych „mięśni” oznacza przyzwyczajenie się do języka i narzędzi matematyki (kombinatoryka, teoria grafów, analiza itp.), A także przyzwyczajenie się do udowodnienia twierdzeń! (I to jest naprawdę ekscytująca część! :-)
Jay
19

Obecnie jestem doktorantem, a nie profesorem, więc moja sugestia pochodzi z mojego (ograniczonego) osobistego doświadczenia jako doktoranta.

Kiedy byłem studentem pierwszego roku, zawsze pracowałem jako asystent naukowy w lecie z różnymi profesorami w moim dziale. Osobiście uważam, że jedynym sposobem, aby dowiedzieć się, czy TCS jest naprawdę dla Ciebie, czy nie, jest praca nad konkretnymi problemami i zobaczenie, co możesz cieszyć się najbardziej. Znalezienie profesora i tematu, który mi się podobał, zajęło mi sporo czasu. Istnieje również aspekt „społeczny” w badaniach, a różni profesorzy mają różne nawyki pracy i nadzoru, dlatego te letnie prace badawcze dadzą ci lepsze pojęcie, jakiej jakości oczekujesz od przełożonego w przyszłości.

W informatyce istnieje wiele interesujących dziedzin, a TCS jest tylko jednym z nich. Dlatego zawsze najlepiej jest mieć otwarte opcje i rozmawiać z różnymi profesorami. Bardzo ważne jest, aby specjalizować się podczas doktoratu, ale jako student, myślę , że rada Marka Bravermana jest niezwykle istotna:

„Postaraj się nauczyć jak najwięcej. [...] Później będzie trudniej!”

[Mark próbował zapisać się na wiele kursów (znacznie powyżej limitu) i badać różne dziedziny matematyki i informatyki, gdy był studentem.] Spróbuj uczestniczyć w wykładach i seminariach na różne tematy w twoim dziale. Kiedy jesteś w wyższych latach, powinieneś również poprosić o zgodę na audyt kursów podyplomowych związanych z zainteresowaniami.

Również w zależności od tego, czy zajmujesz się matematyką, czy CS, musisz również zaplanować kursy, które powinieneś podjąć, aby przygotować solidne podstawy. Jeśli jesteś studentem matematyki, powinieneś wziąć więcej kursów CS w zakresie algorytmów i złożoności, które dają bardziej „algorytmiczny” umysł. Jeśli jesteś studentem CS lub inżynierii, zawsze dobrym pomysłem jest nauczenie się podstawowych kursów matematyki w:

  • Kombinatoryka
  • Prawdopodobieństwo i statystyka
  • Zaawansowana algebra liniowa
  • Algebra abstrakcyjna
  • Analiza

Prawdą jest, że nigdy nie można nauczyć się wystarczającej ilości matematyki i że należy nauczyć się szybko wybierać nowe matematyki / metody / techniki, gdy zajdzie taka potrzeba. Ale solidne tło z pewnością ułatwi ci rozpoczęcie TCS.

Życzę powodzenia i sukcesów!

Dai Le
źródło
6
+1: niezła odpowiedź. Dodam, że przyjmowanie / audytowanie nie teoretycznych kursów CS lub nie CS jest również dobrą rzeczą, otwiera umysł na możliwe problemy, nad którymi pracujesz, nigdy nie wiesz, gdzie pojawia się fajne pytanie teoretyczne, więc miej oczy otwarte . :)
Kaveh
Czy poleciłby Pan „Zaawansowaną algebrę liniową” Steve'a Romana do samodzielnej nauki dla absolwentów?
Jacob
2
@Jacob: Książka Romana jest z pewnością polecana przez wielu ludzi. Jest bardzo zaawansowany i obejmuje ładne tematy, takie jak moduły, wypukłość, afiniczna geometria, produkty tensorowe itp. Ale najważniejsze jest to, że zawsze powinieneś wybierać coś, co jest odpowiednie dla twojego smaku i tła! Więc przejrzenie kilku książek w bibliotece przed podjęciem decyzji jest zawsze dobrym pomysłem (przynajmniej dla mnie).
Dai Le
11

Jako student pierwszego roku, najlepiej jest wyrazić to zainteresowanie profesorom z wydziału CS, którzy mogą ci pomóc (zapewniając dużą część ich pracy!). Oczekuję, że większość z nich z przyjemnością pomogłaby studentowi, który byłby zainteresowany tymi samymi rzeczami, którymi są. Przynajmniej mogą udzielić ci dobrych rad na temat tego, jakie zajęcia odbywać w twojej instytucji, oraz porad dostosowanych do twojej sytuacji.

Peter Boothe
źródło
10

Wydaje się, że wielu innych ludzi udziela dobrych rad. Aby dodać do mądrości, pozwól mi powiedzieć: nie ma czegoś takiego, jak zbyt duża znajomość matematyki (chyba że zdecydujesz, że zamiast tego chcesz robić czystą matematykę). Poważnie, poznajcie swoją analizę, kombinatorykę, algebrę, może teorię powtórzeń, górę alg i tak dalej. To sprawia, że ​​bycie szeroko czytanym w różnych obszarach teorii CS jest znacznie łatwiejsze :)

Carter Tazio Schonwald
źródło
2
doskonała rada. Mówię to wszystkim studentom, którzy również ze mną rozmawiają.
Suresh Venkat,
7

Zrobiłeś świetny pierwszy krok! Drugi pboothe o rozmowie z profesorem w twoim dziale. Jeśli interesujesz się teorią, znajdź każdego, kto uczy kursy teoretyczne i porozmawiaj z nimi. Mogą występować problemy, które nie wymagają zbyt dużego tła, aby rozpocząć. Z mojego osobistego doświadczenia wynika, że ​​w teorii grafów i kombinatoryce jest więcej problemów, które są bardziej dostępne niż teoria, ale nadal budują te same umiejętności badawcze. Nie bój się swojego działu matematyki!

Pomocne może być również zaangażowanie się w społeczność, zwłaszcza poprzez zadawanie pytań i udzielanie odpowiedzi w tym miejscu. Pomogłoby to mieć swoją nazwę użytkownika Bądź swoim własnym imieniu, więc wiemy, kim jesteś.

Derrick Stolee
źródło
6

Jestem prawie absolwentem. Odpowiedzi na twoje pytanie są dla mnie również interesujące, ale być może moje małe osobiste doświadczenie może pomóc.

Oto moja lista (w losowej kolejności) sugestii, co możesz zrobić:

  • Przede wszystkim przeczytaj jak najwięcej artykułów / książek / notatek z wykładów. Ale ważne jest również, aby zastosować swoją wiedzę do ćwiczeń, a później do otwierania problemów! Niektórzy z moich nauczycieli zawsze mówią: Nie tylko twoje mięśnie potrzebują ciągłego treningu :)
  • Przeczytaj / Zadaj / Odpowiedz na pytania na tej stronie (lub innej pokrewnej stronie SE) to dobry sposób na naukę pracy z tematami badawczymi w TCS lub matematyce.
  • Staram się czytać wiele blogów TCS od znanego badacza. Tematy obejmują zarówno bieżące, jak i historyczne wyniki.
Marc Bury
źródło
Czy masz jakieś linki do tych blogów?
SH7890
2

Myślę, że najważniejsze jest jak najszersze zbadanie, aby dowiedzieć się, jakie aspekty TCS naprawdę Cię ekscytują. W trakcie tej eksploracji może się okazać, że najbardziej intrygują cię skrzyżowania TCS z innymi dziedzinami (np. Ekonomia) lub zastosowania TCS (np. Do sieci komputerowych) lub tematy TCS, które są również częścią innych obszarów w CS jak obliczeniowa lub statystyczna teoria uczenia się. Cholera, jest nawet możliwe, że możesz zmienić kierunek na matematykę lub fizykę lub coś podobnego, jeśli twoje zainteresowania poprowadzą cię w tym kierunku.

Chodzi mi o to, że jako student pierwszego roku naprawdę masz okazję do eksploracji z mniejszą presją niż jako student lub profesor. I nie przejmuj się, jeśli nie skończysz w „typowych podejrzanych” tematach TCS.

Oczywiście byłoby idealnie, gdybyś zagłębił się w jakąś dziedzinę, uczył się solidnych technik i publikował świetne wyniki.

A jeśli staniesz się ekspertem w nowej, gorącej dziedzinie, zanim stanie się głównym nurtem, prawdopodobnie będzie to świetne dla twojej kariery.

Mugizi Rwebangira
źródło