Tại sao đi đến khoa học máy tính / nghiên cứu lý thuyết?


36

Tôi hiện đang bắt đầu học đại học [khoa học máy tính] và ở đó chúng tôi có rất nhiều cơ hội để bắt đầu nghiên cứu. Trước khi tìm thấy trang web này, tôi không có ý định đi theo con đường này [Tôi muốn làm việc với AI, có lẽ là nhà phát triển trò chơi.], Nhưng bây giờ tôi có thể [hoặc tôi cần] để đưa ra lựa chọn.

Bạn có thể thuyết phục tôi tham gia vào "thế giới" này không? "Phân khúc" nào tôi có thể theo dõi? Có bất cứ điều gì về các loại chủ đề mà một nhà khoa học hoặc nhà nghiên cứu máy tính làm việc trên?


18
Chúng tôi rất vinh dự khi trang web đã truyền cảm hứng cho bạn để suy nghĩ về lý thuyết! Và bạn đã đến đúng nơi, nếu bạn muốn biết một nhà khoa học máy tính lý thuyết hoạt động trên ... chỉ cần tiếp tục đọc và bạn sẽ tìm ra!
Ryan Williams

6
Đây phải là wiki cộng đồng.
Dave Clarke

Mới tham gia hôm nay và có cùng một câu hỏi ... Tôi đã học kỹ thuật Điện tử nhưng khi còn học đại học bắt đầu cảm thấy thiên về CS ... Chưa bao giờ có giới thiệu chính thức về Lý thuyết, nhưng bây giờ tôi rất vui vì đã tìm thấy trang này ... Và @ Júlio Souza cảm ơn vì đã hỏi câu hỏi này. Tôi sẽ theo dõi điều này từ hôm nay :)
Alan Turing

@supercooldave đã thay đổi nó thành wiki cộng đồng.
JulioC

Phần kết: JulioC trở thành nhà phát triển phần mềm.
domotorp

Câu trả lời:


32

Tôi có thể liên hệ lý do của mình khi là sinh viên đăng ký vào các chương trình sau đại học của TCS vào mùa đông sắp tới này (còn rất ít thời gian nữa!).

  • Có vẻ đẹp. Đây không phải là điều tôi có thể giải thích (và đã chứng kiến ​​các nhà toán học khác không giải thích được). Nó giống như "màu vàng." Nếu bạn chưa nhìn thấy nó, tôi không chắc tôi có thể giao tiếp với bạn nó là gì. Nhưng vì bạn đã trở nên quan tâm đến lý thuyết, tôi cho rằng có thể bạn đã trải nghiệm nó.
  • Có tính phổ quát. Toàn cầu vượt ra ngoài Luận án Giáo hội-Turing . TCS ở cốt lõi của nó điều tra các hiện tượng cấp cao và cấp thấp trong thông tin - đó là "vật lý" của thông tin. Và vì thông tin là nguyên tử định tính , lý thuyết thông tin có nhiều điều để nói về vật lý (giáo sư QM của tôi đã nói riêng với tôi rằng ông yêu lý thuyết thông tin). Tất cả điều này đang được nói, đó là một nơi nào đó giữa Pure Math và Engineering. Nó có khả năng và tính linh hoạt để đóng góp trực tiếp cho cả hai và được đóng góp trực tiếp cho cả hai. Tuy nhiên, nó chiến đấu trên biên giới riêng của mình.
  • Có phạm vi. Điều này đã được gợi ý trong viên đạn trước. Tin học tìm đường vào nhiều ứng dụng khác nhau - nhét mọi người từ DHD đến khởi động quan tâm đến Bạn sẽ không tìm thấy chính mình. Như đói xin tài trợ như Pure Toán học. (Bạn vẫn sẽ luôn thấy mình đói vì tài trợ.)
  • Có một thử thách. Hãy xem một danh sách các vấn đề mở trong Khoa học máy tính lý thuyết (và theo đuổi sự hiểu biết về chúng cho đến khi kết thúc cuộc điều tra). Họ rất khó khăn - đây là một số lý do tại sao . Chúng tôi thực sự không hiểu TCS - hầu hết các bằng chứng của chúng tôi đều tập trung vào việc đưa ra bằng chứng. Còn quá nhiều việc phải làm!

19

Thật vậy, cho dù bạn quyết định đi vào nghiên cứu trong khoa học máy tính lý thuyết là một vấn đề lựa chọn. Nhưng ngay cả việc xem xét các câu hỏi trên trang web này (như bạn có thể đã làm) hy vọng sẽ mang lại cho bạn cảm giác về bề rộng, phạm vi một vẻ đẹp của lĩnh vực này. Tôi thậm chí không biết bắt đầu từ đâu khi chỉ cho bạn các nguồn bạn có thể đọc để đánh giá cao loại công việc mà các nhà lý thuyết làm, nhưng có một câu hỏi trên chính trang web này mà tôi nghĩ có thể bạn quan tâm.

Câu hỏi là:

Paul Erdos đã nói về "Cuốn sách" nơi Chúa giữ bằng chứng thanh lịch nhất cho mỗi định lý toán học. Điều này thậm chí đã truyền cảm hứng cho một cuốn sách (mà tôi tin rằng hiện đang ở phiên bản thứ 4 của nó): Bằng chứng từ cuốn sách.

Nếu Chúa có một cuốn sách tương tự cho các thuật toán, bạn nghĩ thuật toán nào sẽ là một ứng cử viên?

Hiện tại có 64 câu trả lời cho câu hỏi này, bao gồm các thuật toán cho các vấn đề nhỏ, vấn đề lớn, câu đố và toán học sâu. Tôi tin tưởng mạnh mẽ rằng nếu tất cả những gì bạn đã làm là xem qua danh sách này và đọc thêm về bất kỳ thuật toán nào gây chú ý, bạn sẽ học được rất nhiều về những gì các nhà khoa học máy tính lý thuyết làm và tại sao chúng ta làm điều đó.

Chúc may mắn !


16

Lý do nhiều người trong chúng ta đi vào nghiên cứu là vì chúng ta thấy việc vượt qua ranh giới của những gì được biết đến cả về trí tuệ và sự thú vị. Thực hiện nghiên cứu cũng cho chúng ta sự tự do gần như vô song để giải quyết các vấn đề mà chúng ta thấy có ý nghĩa và thú vị, và nó khiến chúng ta không ngừng thử thách (mà chúng ta thích).

TCS (trái ngược với các lĩnh vực khác) là một nghiên cứu toán học về khoa học máy tính. Bạn có thể làm việc trên khía cạnh lý thuyết của nhiều lĩnh vực khác nhau từ các hệ thống phân tán đến học máy. Sự lựa chọn giữa TCS và các lĩnh vực khác trong khoa học máy tính phụ thuộc vào sở thích và khả năng của bạn nằm ở đâu. Nếu sở thích và khả năng tự nhiên của bạn nằm nhiều trong lập trình hoặc thiết kế hệ thống hơn là phân tích toán học, thì có lẽ bạn không nên vào TCS. Mặt khác, nếu các kỹ năng và sở thích của bạn nằm nhiều hơn ở khía cạnh toán học, thì bạn nên xem xét TCS.

Ngoài ra, bạn không phải luôn luôn chọn một khu vực trên tất cả các khu vực khác. Nhiều người làm việc về các vấn đề từ cả hai khía cạnh lý thuyết và thực tiễn. Điều này là phổ biến, ví dụ, trong học máy, nơi đầu tiên chúng ta thiết kế và phân tích các thuật toán (thường là lý thuyết) và sau đó thử nghiệm chúng trong thế giới thực (thiết kế thử nghiệm, ứng dụng, v.v.).

Một cách tốt để tìm ra những gì bạn muốn làm là tham gia các lớp học ở nhiều lĩnh vực khác nhau, và có thể thử cả ngành công nghiệp và nghiên cứu trong mùa hè của bạn. Khi kết thúc việc học của bạn, bạn có thể sẽ có một ý tưởng tốt về những gì bạn muốn làm.


Tôi thực sự thích môn toán, nhưng tôi thích lập trình. Có lẽ tôi có thể tìm ra cách nào đó để làm việc với cả hai "bên" cùng một lúc, như học máy [trong khu vực AI, phải không?]. Vào năm tới, tôi sẽ đăng ký vào một số lớp học trong trường đại học của tôi như Phân tích thuật toán và AI có thể giúp tôi.
JulioC

Học máy (ít nhất là theo quan điểm của tôi) không phải là một lĩnh vực phụ của AI, mặc dù có một số sự chồng chéo. Nói một cách đơn giản, AI tập trung vào giải quyết các vấn đề mà con người thường giải quyết. Học máy tập trung vào phát triển các thuật toán và hệ thống thay đổi hành vi khi họ nhìn thấy dữ liệu. Vì vậy, có sự chồng chéo rõ ràng giữa hai lĩnh vực, nhưng chúng cách xa nhau. Học máy rõ ràng mang đến cho mọi người cơ hội để thực hiện cả lý thuyết và lập trình, nhưng tôi chắc chắn đó không phải là trường con duy nhất của CS mà nó là sự thật.
Lev Reyzin

11

Lý thuyết ngôn ngữ lập trình là niềm vui cho trẻ và già. Đó là áp dụng logic vào thế giới thực. Hãy tham gia cuộc diễu hành !!

Nghiêm trọng hơn, đối với tôi, lý thuyết ngôn ngữ lập trình rất thú vị vì những lý do sau:

  • tác động nhận thức đến thế giới thực: hệ thống loại rộng lớn hoạt động trong Haskell và các ngôn ngữ chức năng khác, bắt nguồn từ các ý tưởng logic thuần túy (Hệ thống F), ảnh hưởng đáng kể đến sự phát triển của các ngôn ngữ như Java (khái quát khủng khiếp, đóng cửa) và Scala (hiện đại ngày nơi lý thuyết-đáp ứng sân chơi thực hành).

  • vẻ đẹp: nhiều công cụ được sử dụng trong lý thuyết ngôn ngữ lập trình dựa trên logic. Phần lớn bắt nguồn từ sự tương ứng của Curry-Howard, thể hiện mối liên hệ chặt chẽ giữa quy tắc chứng minh logic và quy tắc đánh máy cho các ngôn ngữ lập trình và giữa việc loại bỏ logic và đánh giá trong ngôn ngữ lập trình. Hai ví dụ đẹp gần đây về ứng dụng logic trong nghiên cứu ngôn ngữ lập trình là công trình mở rộng về logic phân tách trong xác minh và ứng dụng các ý tưởng tập trung bằng chứng để hiểu các khái niệm ngôn ngữ lập trình như thứ tự đánh giá và khớp mẫu .

  • thú vị: bạn có thể lập trình và lý thuyết cùng một lúc, đặc biệt nếu bạn đang chính thức hóa và xác minh lý thuyết của mình bằng một trợ lý chứng minh như Coq.

  • và nhiều thứ khác nữa.


11

Một trong những lý do chính khiến tôi thấy lý thuyết tính toán (ngành khoa học máy tính lý thuyết của tôi) hấp dẫn và đáng nghiên cứu là lý do sau: nó cung cấp cho chúng ta một cách để điều tra một số câu hỏi triết học sâu sắc (và đôi khi khó hiểu).

Một trong những người sáng lập ra lý thuyết tính toán, Alan Turing, đã cố gắng tìm ra ý nghĩa của tính toán của một hàm tính toán cho một người được trang bị một tờ giấy, bằng cách đưa ra một mô tả toán học của quá trình. Tôi không phải là người duy nhất nghĩ rằng anh ta cực kỳ thành công và máy Turing đã chứng tỏ là một mô hình chính xác của nhiều quy trình tính toán khác.

Bây giờ chúng ta có một lớp các đối tượng toán học mô tả các tính toán, chúng ta thực sự có thể chứng minh các định lý về chúng, do đó cố gắng khám phá những gì có thể được tính toán và cách tính toán nó; Nó ngay lập tức chỉ ra rằng rất nhiều chức năng hoàn toàn hợp pháp hoàn toàn không thể được tính toán và chúng có thể được phân loại theo mức độ không thể tính toán được (một số chức năng chỉ là không thể tính toán hơn so với các chức năng khác).

Một số kẻ khác, những người đầu tiên thường được xác định với Juris Hartmanis và Richard E. Stearns, đã cố gắng mô tả về mặt toán học ý nghĩa của một hàm (resp., Một vấn đề) khó hoặc dễ tính toán (resp., Để giải quyết). Có một số biện pháp phức tạp theo đó độ cứng của các vấn đề có thể được mô tả; điều phổ biến nhất là chúng ta cần bao nhiêu thời gian để giải quyết chúng. Alan Cobham và Jack Edmonds đã khá thành công trong việc xác định một khái niệm hợp lý về tính toán hiệu quả.

Trong khuôn khổ phức tạp tính toán, bây giờ chúng ta có thể chứng minh một số kết quả phù hợp với khái niệm trực quan của chúng ta về tính toán. Ví dụ yêu thích của tôi là định lý phân cấp thời gian: nếu chúng ta được dành nhiều thời gian hơn để tính toán, chúng ta có thể giải quyết các vấn đề khó hơn.

Vấn đề mở trung tâm của lý thuyết phức tạp, P vs NP , chỉ là một sự chính thức hóa của một câu hỏi có ý nghĩa triết học khác: có thực sự khó giải quyết vấn đề hơn là kiểm tra xem một giải pháp bị cáo buộc của nó có thực sự đúng không? Tôi tin rằng câu hỏi này đáng để hỏi và trả lời, độc lập với ý nghĩa thực tế của nó.


+1: thích :) ps: ai đó bày tỏ ý kiến ​​tương tự trên blog của Scott .
Kaveh

6

Chúng tôi không thể "thuyết phục" bạn, vì khoa học máy tính không tốt hơn về mặt toán học so với AI hay bất kỳ lĩnh vực nào khác. Vì vậy, chúng ta không thể thực hiện một bằng chứng về sự thống trị của nó! IMO, Đó là một vấn đề của hương vị hơn bất cứ điều gì khác.


1
Tôi đồng ý với bạn, nhưng có lẽ anh ấy muốn biết tại sao "bạn" (hoặc mọi người khác ở đây) lại chọn lĩnh vực này.
MS Dousti

@ Júlio Souza: Trong tiêu đề, nó phải là "lý thuyết" chứ không phải "lý thuyết".
MS Dousti

Tôi không muốn biết liệu nó có tốt hơn không, nhưng tôi muốn biết lý do tại sao bạn chọn lĩnh vực này, như Sadeq nói.
JulioC

6

Thật khó để trả lời câu hỏi đó một cách chắc chắn, nhưng có một vài điều cần lưu ý ở đây.

Nếu bạn làm nghề khoa học máy tính, công việc của bạn có thể sẽ không chỉ là xử lý và cấu trúc dữ liệu theo cách làm cho nó hữu ích và hiệu quả để sử dụng, mà còn suy nghĩ về cách thức và lý do bạn đang làm việc, cũng như trong nó giới hạn hoạt động (nếu không vì lý do nào khác ngoài việc hiểu nó đủ để thực hiện nó). Đây là trường hợp đặc biệt đối với AI / NLP / IR, rất RẤT nghiên cứu, ngay cả khi bạn không ở trong học viện. Trên thực tế, đi sâu vào AI khá nhiều đảm bảo rằng bạn sẽ giải quyết được nhiều vấn đề "lý thuyết", và trên thực tế có thể khó tìm được một công việc mà không có nền tảng đó. Vì vậy, đó có thể là một lý do thuyết phục bạn sẽ xem xét nó.

Không chỉ vậy, có lẽ sẽ rất khó dành phần lớn cuộc đời của bạn trong bất kỳ lĩnh vực CS nào, nơi bạn sẽ phải duy trì liên lạc mật thiết như vậy với một quy trình tinh vi và thất thường (và không đề cập đến khó khăn), trong khi đồng thời không duy trì quan tâm bất cứ điều gì ngay cả những điều cơ bản tại sao mọi thứ hoạt động. Nói cách khác, tôi cho rằng bạn có thể kết dính các thư viện với nhau trong suốt quãng đời còn lại, nhưng nếu điều đó không giống với điều của bạn, bạn sẽ phải có ít nhất một người quen biết với các nguyên tắc cơ bản của các vấn đề bạn giải quyết.

Mặc dù tích cực tham gia nghiên cứu TCS là một câu hỏi mà có lẽ chỉ bạn mới có thể trả lời, nhưng điểm khởi đầu tốt (IMO) là bắt đầu với một cái nhìn về các vấn đề bạn quan tâm và xem xét từ đó. Bạn thậm chí có thể không có đủ thông tin để trả lời câu hỏi đó, vì vậy cách tốt hơn để tiến hành có thể là xem sở thích của bạn đưa bạn đến đâu.


Cảm ơn câu trả lời. Tôi hoàn toàn đồng ý với POV của bạn, làm việc trên một cái gì đó chỉ cần làm nó, mà không biết tại sao nó hoạt động, làm thế nào nó hoạt động và nếu tôi có thể làm cho nó tốt hơn không phải là điều tôi muốn. Tôi nghĩ rằng tôi có thể cố gắng giữ kế hoạch của mình với AI [hoặc một cái gì đó khác, giống như "nghiên cứu thực tiễn"], nhưng tôi sẽ tiếp tục cố gắng tìm hiểu về các chủ đề khác trên TCS.
JulioC

6

Điều khiến tôi tò mò nhất là khả năng áp dụng lý thuyết về khoa học máy tính vào các ngành khác, đặc biệt là sinh học và sinh học tế bào. Nếu khái niệm này cũng hấp dẫn bạn, tôi khuyên bạn nên xem qua những điều sau đây: một bài luận của Jeannette Wing về tầm quan trọng của Tư duy tính toán ; và một báo cáo NSF về việc áp dụng Ống kính thuật toán cho các ngành khoa học khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.