it-swarm-vi.com

Môn học CS mà một sinh viên phải biết

Ở trường đại học, tôi không bao giờ quan tâm đến lý thuyết. Tôi không bao giờ đọc nó. Cho dù tôi đã cố gắng bao nhiêu, tôi cũng không thể đọc được nội dung và không biết điều gì đang thực sự xảy ra trên thực tế. Giống như, ví dụ, trong khóa học về lý thuyết automata, giáo sư của tôi đã nói với tôi mọi thứ có thể liên quan đến khía cạnh toán học của nó, nhưng thậm chí không một lần ông đề cập đến việc nó sẽ được sử dụng thực tế ở đâu. Đây chỉ là một ví dụ.

Tôi đã vượt qua được trường đại học của mình và thực tập tại một công ty, nơi tôi đã làm một dự án và may mắn là họ không bận tâm về điểm số của tôi, vì họ ở trên mức trung bình.

Bây giờ, tôi muốn biết những môn học nào mà một sinh viên CS phải nhận thức một cách tuyệt đối và tích cực? Các đối tượng có thể có liên quan trong ngành công nghiệp. Điều này là do tôi có thời gian rảnh trong tay và nó sẽ giúp tôi hiểu rõ hơn về họ.

Đề xuất của bạn là gì? Giống như đối với một, thuật toán là một chủ đề.

34
Karl

Dù bạn có tin hay không, một trong những điều trở nên quan trọng đối với tôi trong cuộc sống sau này là Compiler Construction. Không phải là phiên bản namby-pamby hiện đại sử dụng Lex và Yacc, đó là cho người giả.

Xây dựng trình biên dịch REAL nơi bạn viết trình quét biểu tượng và trình phân tích cú pháp của riêng bạn từ đầu.

Đây là thứ tôi nghĩ rằng tôi sẽ không bao giờ sử dụng nữa. Nhưng trong 20 năm qua, khóa học đó đã chứng minh trọng lượng của nó bằng vàng gấp 4 lần. Bộ xử lý lệnh từng phải viết, mọi trình quét tin nhắn đến, mọi bộ điều phối người dùng, mọi trình thông dịch kịch bản, đã sử dụng các nguyên tắc từ khóa học đó. Làm theo cách đó và cuộc sống thật ngọt ngào, rõ ràng và đơn giản. VÀ tôi thậm chí đã đưa tất cả thông tin cho một đồng nghiệp chưa làm điều đó - anh ta thực sự phải viết một trình biên dịch cho một máy trừu tượng. Mà tôi có thể thêm đã tiếp tục thành công về mặt thương mại.

Nếu tôi phải đi lên và cảm ơn một giảng viên khóa học đại học trong bất kỳ một môn học nào, thì đây sẽ là nó. Nếu không có điều đó tôi sẽ có được nhưng giải pháp của tôi sẽ xấu hơn nhiều.

(Và trước khi ai đó nhảy lên và nói "tốt, bạn có thể đã sử dụng Lex và yacc ...", câu trả lời là, có lẽ - nó phụ thuộc rất nhiều vào hệ thống. Trong một số trường hợp, ngôn ngữ lập trình không phải là C (ví dụ PL/M và Ada), trong một số trường hợp không có sẵn Lex hoặc Yacc cho nền tảng. Biết những điều cơ bản có nghĩa là một giải pháp đã sẵn sàng thay vì vắt tay cố gắng tìm ra cách bẻ cong một số công cụ để phù hợp với vấn đề.)

42
quickly_now
  1. Cấu trúc dữ liệu/Thuật toán đặc biệt là đồ thị. Số lượng các tình huống trong thế giới thực mà tôi đã quản lý để sử dụng các thuật toán liên quan đến biểu đồ là một điều ngạc nhiên đối với tôi. Tập trung vào việc biết các đặc điểm khi cấu trúc dữ liệu hoặc thuật toán là phù hợp. Ví dụ, việc có thể nhìn thấy một vấn đề và biết sử dụng thuật toán lập trình/tham lam động là rất quan trọng và có thể giúp bạn tiết kiệm rất nhiều thời gian.

  2. Kiến thức làm việc về độ phức tạp tính toán. Bạn không cần phải biết trên đỉnh đầu của bạn về giới hạn dưới của loại cơ số là gì nhưng biết làm thế nào để biết thời gian chạy trong trường hợp xấu nhất của thứ gì đó bạn viết là quan trọng, đặc biệt là đối với các dự án quan trọng.

  3. Ôi các khái niệm. Quản lý bộ nhớ, Trình lập lịch biểu, v.v ... Mọi nhà phát triển thực sự cần có một sự hiểu biết vững chắc về các hệ điều hành do mã bạn viết liên tục tương tác với nó.

  4. NetSec. Tôi đã gặp rất ít nhà phát triển có hiểu biết vững chắc về các mối quan tâm bảo mật cơ bản với phát triển (tràn bộ đệm, xss, SQLI, v.v.). Đây thực sự là điều bắt buộc nếu bạn muốn thành công trong ngành công nghiệp. Thật tuyệt nếu bạn có thể viết điều lớn tiếp theo nhưng bạn sẽ không có nhiều người dùng lâu nếu bạn không bảo mật dữ liệu của họ.

  5. Các mô hình lập trình. Biết các đặc điểm và sự khác biệt giữa lập trình OO/Chức năng/Thủ tục. Một trong những lớp học tốt nhất mà tôi từng có là viết 20 trình thông dịch hướng dẫn đơn giản cho fortan, chương trình, prolog, v.v. bằng chính các ngôn ngữ. Chỉ cần tiếp xúc thực sự có thể giúp bạn hiểu các khái niệm cơ bản của phát triển phần mềm.

37
Kurtis

Đáp ứng các yêu cầu tốt nghiệp không nhất thiết là đủ để trở thành nhà khoa học máy tính giỏi nhất bạn có thể. Đối với một chương trình giảng dạy đại học điển hình, đây là mười điều hàng đầu bạn nên chắc chắn học:

  1. Những điều cơ bản về kinh tế - Một khóa học giới thiệu bao gồm các chủ đề như bổ sung và thay thế rất quan trọng để làm việc trong nền kinh tế lớn hơn, hoặc chỉ hiểu đơn giản là nó Trong khi khái niệm về Giffen Good won thì nhất thiết phải giúp bạn, biết về ngoại tác sẽ. Nó cũng có thể giúp bạn đánh giá cao rằng nhiều tình huống là thắng-thắng hơn bạn có thể nhận ra.

  2. Cách viết bằng chứng - Tất cả các chuyên ngành khoa học máy tính nên biết cách viết bằng chứng. Và toán học rời rạc, trong khi một phần của bữa sáng cân bằng, không tính. [Cảm ứng chỉ là một kỹ thuật chứng minh, và bạn có thể nhận được mà không thực sự biết nhiều về bằng chứng.] Một khóa học về đại số hoặc phân tích thực là cần thiết để thực sự viết bằng chứng. Và theo đại số tôi có nghĩa là lý thuyết nhóm hoặc đại số trừu tượng, không phải là khóa học bạn đã học ở trường trung học. Để có lợi ích đầy đủ, hãy lấy đại số và phân tích thực trong cùng một thuật ngữ.

    [.__.] Tại sao văn bản chứng minh là thiết yếu? Bởi vì nó lập trình! Hãy suy nghĩ về lần đầu tiên bạn học cách lập trình: nếu một nhiệm vụ yêu cầu if và một vòng lặp, bạn có thể không có bất kỳ trực giác nào về việc đặt chúng trong mối quan hệ với nhau. Nhưng bây giờ cùng một nhiệm vụ sẽ cảm thấy hoàn toàn tự nhiên. Viết một bằng chứng rất giống nhau. Có một loạt các thủ thuật mà bạn học được, và một khi bạn học chúng, mọi thứ trông khá khác biệt.

  3. Cách viết - Kỹ năng giao tiếp bằng văn bản là rất cần thiết, cho dù bạn có làm việc trong ngành công nghiệp hay học thuật hay không. Nó tốt nhất nếu bạn có thể tìm thấy một khóa học cơ học, và không phải là một khóa học viết có hiệu quả về một chủ đề khác. Đó là, nhiều trường sẽ cố gắng làm cho các khóa học viết trở nên phù hợp hoặc thú vị hơn bằng cách làm cho nó trở thành một chủ đề đặc biệt. Cố gắng đi cho phiên bản nhàm chán của các khóa học.

  4. Xác suất và thống kê - Có một số điều mà bạn sẽ chỉ nhận đúng bằng cách tham gia một khóa học. Cùng với các yêu cầu chính của CS (sẽ cung cấp cho bạn toán học rời rạc, phép tính đơn biến và nhiều biến số và đại số tuyến tính) và đại số và/hoặc phân tích thực, việc chọn số liệu thống kê có thể sẽ cung cấp cho bạn một điểm nhỏ trong toán học. Học thống kê có thể giúp bạn làm việc với các nhà khoa học khác trong các dự án của họ.

  5. Chủ đề nóng hiện tại - Trong những thập kỷ trước, nó có thể là cơ sở dữ liệu hoặc lập trình hướng đối tượng. Ngày nay nó có thể là lập trình web hoặc kiến ​​trúc hướng dịch vụ. Dù mốt hiện tại là gì, hãy chắc chắn tham gia một khóa học trong đó. Nếu chỉ để xem những gì các mốt là về.

  6. Vấn đề tạm dừng - Hầu hết các vấn đề không thể được giải quyết bằng máy. Đây là một ý tưởng khá sâu sắc rằng văn hóa của chúng ta đã tiếp thu tốt đến mức nó không còn gây sốc nữa. Điều tương tự cũng xảy ra với radio, Goedel và bom nguyên tử; cho đến khi nghệ thuật hậu hiện đại và chiến tranh lạnh mà chúng ta có thể một lần nữa đối phó với những khái niệm này. Tuy nhiên, tham gia một khóa học về lý thuyết tính toán có thể tái cảm nhận bạn với bằng chứng khá tuyệt vời này.

  7. Lập trình chức năng thuần túy - Rất có thể bạn sẽ không đi vào lập trình chức năng thuần túy, trừ khi bạn nghiên cứu về nó hoặc làm việc cho một vài công ty được chọn, nhưng biết nó sẽ giúp bạn trở thành một lập trình viên tốt hơn Lý do là bạn sẽ học được nhiều hình thức trừu tượng mới, và các khái niệm như số và liên tục của Giáo hội và, vâng, đệ quy và các công cụ này cũng có thể được áp dụng cho chương trình Java tiếp theo của bạn.

  8. P và NP - OK, cái này đã nằm trên con đường quan trọng của bạn, nhưng dù sao cũng phải chú ý. Bạn muốn chắc chắn rằng bạn có thể sửa một ai đó khi họ gọi không chính xác NP khăn không đa thức. Hồi Như thể!

  9. Các chủ đề trong khóa học bạn chắc chắn ghét - Đây có thể là khóa học CS bạn thấy ở cấp độ quá thấp, quá lý thuyết hoặc Tất nhiên không phải là CS bạn thấy quá khó chịu, quá khó khăn hoặc quá nhàm chán. Nếu một khóa học như thế này có vẻ là một vấn đề đối với bạn và bạn thấy mình đang giải thích cho người khác lý do tại sao bạn rất vui vì bạn không phải làm như vậy, thì nó sẽ cho bạn biết rằng bạn sẽ học được rất nhiều bằng cách tham gia khóa học Có lẽ bạn đã thắng được học các tài liệu của khóa học, nhưng bạn sẽ học về giới hạn của chính mình và có lẽ nhiều hơn về những lời biện minh mà bạn tự đưa ra. [Gợi ý: Họ thường yếu.]

  10. Khóa học không phải CS mà bạn chắc chắn sẽ yêu thích - Cuối cùng, bạn nên có một số niềm vui. Đây là khóa học mà bạn có thể nhận được ít nhất, nhưng dù sao đi nữa. Làm một lần. Nếu bạn tình cờ yêu thích nhiều khóa học, thì tốt cho bạn, nhưng hãy chắc chắn rằng đó không phải là cách để bao quát phần còn lại của các khóa học trong danh sách này.

Cách tiếp cận của tôi ở đây là thực tế, dựa trên các khóa học bạn thực sự có thể tham gia. Và tôi đã tập trung vào các mục tiêu học tập có khả năng sẽ được học. Lưu ý: Câu trả lời này được điều chỉnh từ một bài đăng trên blog của tôi trên Mười điều mọi chuyên ngành khoa học máy tính nên học .

21
Macneil

Sau khi nói chuyện với một vài đại diện công ty và bạn bè đã có nhiều cuộc phỏng vấn:

  • Cơ sở dữ liệu
  • OOP
  • Thuật toán
  • Cấu trúc dữ liệu

có xu hướng "musts" cho các nhân viên mới (hoặc như họ đã nói, các khóa học "rất khuyến khích").

Các khóa học khác có thể hữu ích là bảo mật máy tính, lắp ráp và kiến ​​trúc máy. Nhiều giáo sư của tôi đã đề nghị với tôi một khóa học biên dịch. Ngoài ra, nếu bạn có thời gian, tôi rất muốn giới thiệu các khóa học toán như lý thuyết đồ thị, toán học rời rạc và tổ hợp. Bạn học được rất nhiều kỹ năng lý luận trong các lớp mà hầu hết các khóa học CS đều có, nhưng cuối cùng lại rất hữu ích khi viết các chương trình rất phức tạp.

Mong rằng sẽ giúp!

8
K-RAN

Nó phần lớn phụ thuộc vào những gì bạn có kế hoạch làm với mức độ. Dường như hầu hết các chuyên ngành CS đều kết thúc với tư cách là kỹ sư phần mềm. Với ý nghĩ đó, tôi thực sự không chắc tại sao nhiều người không chỉ chuyên về công nghệ phần mềm. Tôi nghi ngờ rằng không có đủ các chương trình kỹ thuật phần mềm có sẵn, đặc biệt là tại các tổ chức công cộng.

Tôi đến từ một mặt đất nhúng. Mỗi một người mà tôi làm việc đều có bằng EE hoặc bằng CE và điều đó một phần là do khi "những người già" khi vào đại học không có nhiều chương trình CE. Vì vậy, một điều khá rõ ràng là nếu bạn muốn làm việc trong trường nhúng mà một nền tảng phần cứng là mong muốn.

Tuy nhiên, bất kể lĩnh vực bạn muốn làm việc là gì, tôi tin rằng mọi lập trình viên nên tham gia một khóa học về lập trình lắp ráp. Bạn có thể không bao giờ sử dụng nó, nhưng nó sẽ dạy chính xác những gì đang xảy ra ở cấp bộ xử lý trong khi gọi hàm, cách xử lý các ngắt, cách cấu trúc bộ nhớ hoặc cách sử dụng các chế độ địa chỉ khác nhau. Tôi tin rằng tất cả những điều này sẽ làm cho bạn một lập trình viên tốt hơn.

Ngoài ra, mặc dù có thể không rõ ràng nên một số đây đều là những chủ đề quan trọng khi xem xét Cấu trúc dữ liệu và Thuật toán cho một nền tảng cụ thể.

6
Pemdas

Có 2 cách để trả lời câu hỏi của bạn. Hãy để tôi thử cả hai. Cách đầu tiên là xem xét mọi thứ từ quan điểm thị trường việc làm tiềm năng, kỹ năng mã hóa, v.v ... Vì vậy, đây là danh sách của tôi:

  1. Cấu trúc dữ liệu
  2. Phân tích thuật toán
  3. Lập trình hướng đối tượng
  4. Hoặc là một khóa học cụ thể trong C++ hoặc Java
  5. Các hệ điều hành
  6. Thiết kế giao diện người dùng
  7. Lập trình song song

Cách thứ hai là nhìn mọi thứ từ góc độ trừu tượng một chút, và ai biết được, có thể cũng hơi triết lý. Danh sách sau đây có thể không có các kỹ năng nóng nhất mà thị trường việc làm yêu cầu, nhưng tôi khá chắc chắn khi bạn bước ra khỏi các khóa học này, bạn sẽ đánh giá cao hơn về nghệ thuật phát triển phần mềm.

  1. Ngôn ngữ hữu hạn và lý thuyết tự động
  2. Trình biên dịch xây dựng
  3. Lý thuyết đồ thị
  4. Trí tuệ nhân tạo
5
Fanatic23

Tôi cũng sẽ thêm Kỹ thuật phần mềm hoặc Thực tiễn thiết kế vào danh sách, mặc dù nội dung của chúng thường được chọn bởi các sinh viên trong ngành.

Ngoài ra, theo tôi (không được hỗ trợ bởi nhiều kinh nghiệm) các công ty không thực sự muốn hầu hết những điều lý thuyết được dạy trong các khóa học như cơ sở dữ liệu, v.v., họ muốn mọi người hiểu và có thể sử dụng những thứ này.

EDIT: Do downvote, tôi cảm thấy muốn giải thích câu trả lời của mình. Tôi là sinh viên khoa học máy tính năm cuối, và kinh nghiệm của tôi dựa trên các cuộc phỏng vấn thực tập và công việc của tôi với các công ty hàng đầu trong lĩnh vực này. Theo kinh nghiệm của tôi, mọi người hiếm khi được yêu cầu sử dụng các thuật toán phức tạp hoặc mã cấu trúc dữ liệu rất phức tạp trong các cuộc phỏng vấn hoặc trong công việc.

Hữu ích hơn nếu bạn có thể tạo và sử dụng cơ sở dữ liệu, sử dụng kiểm soát nguồn, biết cách gỡ lỗi đúng cách, biết cách sử dụng các mẫu thiết kế, v.v. Tuy nhiên, như tôi đã nói, những kỹ năng này thường được chọn trong ngành và không được đề cập trong các khóa học. Kỹ thuật phần mềm/Thực hành thiết kế thường liên quan đến việc xây dựng một dự án cỡ trung bình, rất hữu ích cho việc học tất cả các kỹ năng này.

2
apoorv020

Có nhiều khóa học quan trọng, tùy thuộc vào hướng bạn định đi. Tuy nhiên, giả sử bạn hoàn toàn có thể lập trình, khóa học quan trọng nhất phải là:

  • Cấu trúc dữ liệu và thuật toán

    Hầu như mọi thứ trong điện toán đều quay trở lại để xử lý dữ liệu bằng thuật toán. Đặc biệt chú ý đến mảng và hashtables, vì chúng là những cấu trúc dữ liệu hữu ích nhất được sử dụng phổ biến, nhưng danh sách và cây và biểu đồ (tốt, danh sách là loại cây bị hạn chế và cây là loại biểu đồ bị hạn chế) sẽ cũng quan trọng Hơn nữa, hiểu các thuật toán là rất quan trọng để tạo ra mã không khủng khiếp. (Nếu không, bạn sẽ làm những việc thật tồi tệ, như sử dụng chữ O (n3) thuật toán trong đó một O (n đăng nhậpn) người ta sẽ làm.) Nếu bằng cấp CS của bạn không có bắt buộc DS + Một khóa học về nó, đó không phải là CS. Hoặc kỹ thuật phần mềm. Hoặc thậm chí chỉ là lập trình.

Bên cạnh đó, khóa học mà tôi thấy hữu ích nhất trong nhiều năm qua ở nhiều lĩnh vực là:

  • Đồng thời

    Có nhiều khía cạnh để tương tranh, nhưng tôi mong đợi sự hiểu biết về sự khác biệt giữa bộ nhớ chia sẻ và truyền tin nhắn. Tôi cũng muốn có sự bao quát mạnh mẽ của các chiến lược khóa (mutexes, semaphores, v.v.) và giao dịch.

    Tất nhiên, điều này rất quan trọng để hiểu song song hóa, nhưng nó cũng rất quan trọng đối với mọi thứ được phân phối (ví dụ: viết một dịch vụ tiếp xúc với internet, ngay cả khi nó là một luồng đơn vì các máy khách sẽ không đồng bộ bằng mọi cách). Tôi hiểu rằng nó cũng hữu ích để viết trò chơi (thường là đa luồng) và làm việc với các thiết bị nhúng.

Bên cạnh đó, tôi nghĩ rằng đó là lợi ích tốt nhất của sinh viên đại học để họ được tiếp xúc với càng nhiều ý tưởng khác nhau càng tốt. Rất nhiều ngôn ngữ lập trình và mô hình. Rất nhiều lĩnh vực khác nhau của ứng dụng. Một số lượng toán học hợp lý (một lần nữa, vì nó rất hữu ích) và cũng có một số tiếp xúc với các yếu tố con người và tâm lý (bởi vì bất kỳ phần mềm nào tương tác với người dùng đều giao dịch với mọi người). Rốt cuộc, bạn không bao giờ biết chính xác những gì bạn sẽ làm trong tương lai, vì vậy lập kế hoạch cho sự linh hoạt là một chiến lược cuộc sống tuyệt vời.

2
Donal Fellows

Những điều tôi học được ở trường đại học mà tôi sử dụng hàng ngày:

  • Phương pháp thiết kế hướng đối tượng
  • Mẫu thiết kế
  • Biểu thức chính quy
  • Các thuật toán và phân tích cơ bản
  • Cấu trúc dữ liệu

Tôi ước tôi đã tham gia một khóa học cơ sở dữ liệu. .

Tôi đã phải tham gia một vài khóa học toán. Tôi đã không sử dụng tính toán kể từ khi tôi tốt nghiệp. Tôi ước tôi đã tham gia một khóa học thống kê. (Một lần nữa, tôi đã chọn đủ để có được từ khi tốt nghiệp, nhưng tôi ước tôi biết nhiều hơn.)

Ngoài bộ phận CS, hãy tham gia một khóa học viết. Kỹ năng giao tiếp bằng văn bản tốt là điều cần thiết để thành công.

2
pwc

Khi tôi học đại học, có khá nhiều chủ đề mà tôi không thể thấy được sử dụng trong cuộc sống thực của mình và đôi khi trực giác đó đã được chứng minh là đúng (Phương pháp chính thức thực sự chỉ thực tế đối với các vấn đề tầm thường trong hầu hết các trường hợp) và những lần khác đã hoàn toàn sai (ký hiệu Big-O rất hữu ích) vì vậy tôi đoán rằng toàn bộ bản thân trẻ hơn của tôi là một phần đúng.

Nếu bạn muốn chuẩn bị cho thế giới thực, ngoài những thứ @ K-Ran khuyên ở trên, tôi khuyên bạn nên đọc Hoàn thành mã và sử dụng nó làm cơ sở để nghiên cứu sâu hơn về bất kỳ chủ đề nào bạn thấy khó khăn hoặc không cảm thấy bạn đã được bảo hiểm đầy đủ.

1
glenatron

Là người thường xuyên phỏng vấn ứng viên cho các công việc lập trình và ai đó sau khi làm việc trong hơn 12 năm cảm thấy hoàn thành hợp lý, tôi sẽ đề xuất những điều sau đây

  • Thiết kế cơ sở dữ liệu & SQL: Thật đáng ngạc nhiên khi nhiều lập trình viên không biết SQL đơn giản và những người có kỹ năng SQL tốt là vô giá. Để có thể thiết kế một cơ sở dữ liệu tốt có thể không hữu ích trong một công ty có cấu trúc cơ sở dữ liệu được thiết lập, đối với các công ty mới khởi nghiệp và các công ty đang trải qua thay đổi, đó là một PHẢI!
  • Mẫu thiết kế. Đơn giản họ sẽ giúp bạn đưa ra quyết định tốt hơn về thiết kế tốt
  • OOP: Đây thường là một yêu cầu trước cho hầu hết các khóa học, nhưng nó sẽ giúp ích.
  • Thuật toán: Bởi vì rất ít người biết đệ quy là gì, hãy để một mình hiểu khi nào nó có thể tiết kiệm cho họ rất nhiều mã hóa phức tạp
  • Cấu trúc dữ liệu: Hầu hết các ngôn ngữ hiện đại đều xử lý công cụ này cho bạn, nhưng hiểu chúng là chìa khóa để thiết kế tốt.

Sau đó, một số công việc ngoại khóa, đọc:

  • Chứng nhận loại sách. Họ thường dạy bạn bên dưới kiểu bao gồm cú pháp và toán tử. Điều quan trọng hơn nhiều là BIẾT lý do tại sao bạn đang làm một việc gì đó, thay vì "vì nó hoạt động", điều này rất phổ biến.
1
Codemwnci

TIỀN GỬI CỦA NÓ , không có câu trả lời hay cho câu hỏi này.

Lập trình viên là một thế giới chung để xác định một người viết phần mềm máy tính.

Bây giờ, có những phần mềm các loại. Ví dụ: sử dụng wikipedia làm nguồn tổng quát hóa, chúng ta có thể gặp khái quát lớn :

  • lập trình hệ thống
  • phần mềm lập trình
  • phần mềm ứng dụng

Trong trường đầu tiên lập trình hệ thống phát triển trình điều khiển thiết bị, hệ điều hành, máy chủ, vì vậy, ví dụ bạn có thể theo khóa học hệ điều hành.

nhưng còn phần mềm lập trình thì sao? Ở đây như wikipedia đã viết, bạn có thể viết mã trình biên dịch, trình gỡ lỗi, trình thông dịch, trình liên kết, trình soạn thảo văn bản, vì vậy, một khóa học về lý thuyết tự động, lý thuyết ngôn ngữ, ngôn ngữ và trình biên dịch có thể hữu ích.

Không phải chúng ta có thể nói về phần mềm ứng dụng dưới bất kỳ hình thức nào:
[.__.] - trò chơi video: đại số, vật lý, các khóa học hướng đối tượng?
[.__.] - phần mềm toán học: các khóa học toán học?
[.__.] - chỉnh sửa hình ảnh: toán học, vật lý, thuật toán?
[.__.] - tự động hóa công nghiệp: toán học, vật lý, thuật toán, các khóa học robot?
[.__.] - phần mềm y tế: sinh học, y tế, khóa học nào khác?
[.__.] - rất nhiều thứ ở đây: rất nhiều khóa học ở đây.

Như bạn có thể thấy có rất nhiều khóa học bạn có thể làm theo và sẽ trở nên hữu ích cho công việc của bạn.

Theo kinh nghiệm của tôi, tôi là một phần mềm ứng dụng và kỹ thuật phần mềm hệ thống trong lĩnh vực bảo mật (bạn muốn theo khóa học bảo mật?), Bắt đầu từ một chút Rất có kinh nghiệm trong lập trình, tôi trở nên thú vị hơn trong các thuật toán và hệ thống phân tán và một lần nữa tôi cảm thấy không thoải mái về sự đơn giản của ứng dụng mục đích chung mà tôi đã viết (sniffer, hệ thống phát hiện xâm nhập mạng, trình phân tích giao thức và trình phát hiện, v.v.).

Như bạn đã học được một cách chua chát trong khoa học máy tính lý thuyết! bạn đã làm bùng nổ các khóa học này? : P

Ví dụ, bạn đã học được rằng tất cả ngôn ngữ máy tính có thể được trang bị trong một tập hợp các hàm toán học có thể tính toán được và ví dụ nếu kinh nghiệm của bạn có cùng đường dẫn của tôi, chẳng mấy chốc bạn cảm thấy khó chịu trong tập tính toán nhỏ này và giống như tôi, bạn có thể bắt đầu phát triển phần mềm không hấp dẫn và đáng kinh ngạc vì cùng một THIẾT KẾ THIẾT KẾ trở lại một lần nữa (bạn có theo dõi các khóa học mẫu thiết kế không?) và ví dụ bạn có thể bắt đầu quan tâm nhiều hơn đến TẠI SAO và ngôn ngữ có thể được dịch theo chức năng toán học và bắt đầu học rằng ngôn ngữ máy tính không quá phức tạp! ví dụ, bạn có thể sớm ngạc nhiên hơn về con người và tâm lý, và bạn có thể nhận được nhiều sự quan tâm hơn về nó và trở thành một người quản lý dự án tốt! Bạn đã theo dõi các khóa học về vòng đời phần mềm chưa?

Vậy bây giờ, khóa học PHẢI-CÓ trong sự nghiệp CS của bạn là gì?

Tôi khuyên bạn nên học nhiều như bạn có thể học trong tất cả các lĩnh vực, đặc biệt là trong lĩnh vực lý thuyết, bởi vì trong lĩnh vực công việc chung, bạn có thể sớm cảm thấy thực sự buồn chán về sự phức tạp nhỏ xung quanh bạn, và trở thành một công nhân toàn thời gian mà bạn thực sự có ít thời gian để học Làm thế nào mọi thứ thực sự hoạt động và nhiều thời gian hơn để xem làm thế nào những người có kiến ​​thức lý thuyết mạnh mẽ đã dự kiến ​​những thứ để làm việc và cung cấp cho bạn khả năng mã hóa để có được thực phẩm ở nhà.

có một cảm giác sai về thực tế trong khoa học máy tính. nhà khoa học máy tính chẳng hạn đôi khi thực sự xa nhà phát triển phần mềm.

hãy xem lời giải thích của wikipedia.

vui vẻ với cuộc sống :)

2 xu của tôi.

xin lỗi vì tiếng anh rất tệ.

1
boos

Tôi nghĩ bạn nên học như sau:

Hệ điều hành: - Mặc dù bạn có thể không cần nó để làm việc như một lập trình viên nhưng rất đáng để biết một hệ điều hành hoạt động như thế nào và nó được mong đợi từ một lớp CS. Bất kỳ cuốn sách tốt có thể giúp đỡ.

OOP: - Đây là bánh mì và bơ. Phải. Sách nếu bạn muốn hỏi: Cuốn sách đầu tiên của bạn nên là: - đầu tiên là OOAD, sau đó bạn có thể tìm cuốn sách của Grady Booch và Ivar Jacobson

Cấu trúc dữ liệu và thuật toán: - Rất quan trọng để phát triển tư duy logic và tư duy.

Đối với tôi điều này là đủ. Không bao giờ là quá muộn. :)

1
Abhi

Tôi đến với điều này từ một quan điểm hơi khác ở chỗ tôi không tốt nghiệp CS, tôi tốt nghiệp ngành Kỹ thuật điện tử (với một trẻ vị thành niên trong kinh doanh).

Dựa vào đó tôi nghĩ rằng một danh sách những điều bạn phải hiểu là tương đối ngắn vì tôi (và nhiều sinh viên CS không phải là sinh viên tốt nghiệp khác) sống sót hạnh phúc mà không biết gì về thiết kế trình biên dịch hoặc tương tự.

Những gì tôi sẽ nói tôi đã chọn rằng tôi thấy hữu ích:

  • Thiết kế RDBMS - Các RDBMS ngồi sau hầu hết các hệ thống và trang web và bạn nên hiểu ít nhất những điều cơ bản về những gì đang diễn ra (tôi đã học được điều này trong công việc).
  • Thiết kế giao diện người dùng cơ bản - tất cả các lập trình viên giỏi nhất mà tôi từng làm việc có thể tạo ra một ứng dụng có thể sử dụng không xấu như địa ngục. Ngoại trừ một nhưng anh ta là ngoại lệ chứng minh quy tắc.
  • Một số chương trình cơ bản - và tôi có nghĩa là cơ bản. Tôi đã học được một số C (để xử lý hình ảnh và hệ thống nhúng), một số Ngôn ngữ hội (mà tôi đã quên trong vài tuần sau khi hoàn thành khóa học) và một số Pascal (một khóa học máy tính cơ bản là tiêu chuẩn cho tất cả các kỹ sư). Khi phỏng vấn tôi choáng váng về việc có bao nhiêu sinh viên tốt nghiệp CS thực sự có thể lập trình theo bất kỳ cách nào mà các tổ chức thương mại sẽ coi là hữu ích vì vậy tôi không mong đợi nhiều, nhưng tôi thực sự mong họ biết những điều cơ bản.
  • Logic - Tôi đã học nó thông qua các thiết bị điện tử kỹ thuật số, các nhà toán học thông qua lý thuyết, CS tốt nghiệp thông qua lập trình nhưng tuy nhiên bạn học nó, bạn nên nắm bắt tốt về nó vì có quá nhiều thứ liên quan đến nó.
  • Kỹ năng giao tiếp - Tôi đã thực hiện một vài khóa học tại trường đại học ngoài bằng cấp thực tế, kỹ năng thuyết trình và sự quyết đoán của mình. Rất nhiều ý nghĩa thông thường nhưng nó không bao giờ đau đớn để được nói những điều hợp lý một vài lần.
  • Những điều cơ bản của kinh doanh và kế toán. Một số lập trình viên hành động như vậy không thành vấn đề nhưng với tôi, nó quan trọng với bất kỳ ai làm việc trong công ty - đây là cách trò chơi hoạt động và nó sẽ kiểm soát cuộc sống của bạn, vậy tại sao bạn không muốn biết ít nhất là sự thô lỗ của Làm thế nào và tại sao mọi thứ xảy ra?

Và nếu bạn có cơ hội tìm hiểu về quản lý dự án thì điều đó thực sự sẽ không gây hại nhưng điều đó được dạy khá tệ ở trường đại học trong nhiều trường hợp và đó là điều bạn sẽ học được một chút về công việc chỉ bằng cách làm việc trong các dự án.

1
Jon Hopkins

Điều quan trọng nhất mà sinh viên CS cần thành thạo là tiếng Anh.

Nếu không có sự hiểu biết về cả nói và viết tiếng Anh, bạn sẽ mãi mãi ở thế bất lợi.

Chỉ cần nhìn vào vô số câu hỏi xuất hiện trên các trang web Stack. Cách quá nhiều trong số họ là khó để giải mã. Một số người sử dụng kết hợp l33t, nhắn tin (không chắc thuật ngữ chính xác). Những người khác đưa ra một tuyên bố và chỉ đơn giản là thêm một dấu hỏi trong khi thiếu những suy nghĩ quan trọng như động từ hoặc tính từ.

Nếu bạn không thể giao tiếp thì bạn sẽ không thể khiến bản thân hiểu ít hơn những gì người khác đang nói.

Mọi thứ khác chỉ là chi tiết. Nếu bạn có thể giao tiếp, có ít nhất trí thông minh trung bình và có thể hiểu những gì bạn đọc thì bạn cũng có thể có một chương trình nghề nghiệp thành công.

1
NotMe

Tôi cũng sẽ thêm một số khóa học về Nhân lực/Tâm lý cơ bản vào danh sách.

Điều này có vẻ như là một bổ sung kỳ lạ, nhưng một phần của công việc một cách chuyên nghiệp là học cách bán mình và đàm phán. Bước vào cuộc phỏng vấn 'thực sự' đầu tiên của bạn mà không có kiến ​​thức vững chắc về động lực của HR-drone là một công thức cho thảm họa và có khả năng kết thúc với việc sinh viên bị vướng vào mức lương thấp.

Biết kẻ thù của bạn để bạn có thể bảo vệ chính mình.

0
Peter Bernier