it-swarm-vi.com

Môn học / lý thuyết khó nhất trong Khoa học máy tính?

Môn học/lý thuyết CS khó nhất mà bạn đã học nhưng quan trọng đối với lĩnh vực này là gì? Và lý do xin vui lòng?

17
Abimaran Kugathasan

Có hai vấn đề khó khăn trong khoa học máy tính: bộ nhớ đệm, đặt tên và lỗi tắt 1

37
Brian Carlton

Thành thật mà nói, trình biên dịch xây dựng!

35
Pemdas

Thiết kế và phân tích thuật toán

Tôi nghĩ rằng câu hỏi đó phụ thuộc vào giáo viên bạn có, và môn học đó được tổ chức như thế nào trong sự nghiệp của bạn.

Phân tích thuật toán có thể khó như ai đó muốn. Hãy tính rằng có những vấn đề chưa được giải quyết, và không chỉ có thế: những vấn đề không thể giải quyết được.

Vấn đề là bạn có thể có một vấn đề, và nếu bạn biết nó không thể được giải quyết, điều đó thật hoàn hảo. Nhưng nếu bạn không? Bạn có thể dành nhiều thời gian để cố gắng chứng minh NP-Complete hoặc cố gắng tìm một giải pháp thời gian đa thức để giải quyết nó.

Chứng minh NP-Hoàn thành là không dễ dàng. Vâng, có rất nhiều vấn đề được biết đến, nhưng vấn đề là tìm ra các mức giảm để chứng minh rằng đó là NP-Complete. Và nếu bạn dành nhiều giờ/ngày/tháng để cố gắng chứng minh điều đó, và nó có thể được giải quyết trong thời gian đa thức thì sao? :)

Ngoài ra còn có các môn học khác, như Trình biên dịch, Lý thuyết nhómHàm đệ quy nguyên thủy có thể khó như kế hoạch môn học hoặc giáo viên muốn; )

22
Oscar Mederos

Nhận dạng mẫ tức là Trí tuệ nhân tạo. Điều này đề cập đến điện toán thông minh cùng với các công cụ nhận dạng mẫu khác như, Nhận dạng ký tự quang học, Giọng nói thành văn bản, nhận dạng khuôn mặt, v.v.

Nhiều điều "tuyệt vời" bạn có thể làm hoặc ước bạn có thể làm với máy tính dựa trên các thuật toán này và chúng tôi đã cố gắng hoàn thiện chúng trong nhiều thập kỷ mà không có nhiều thành công.

18
Malfist

Lựa chọn của tôi là lý thuyết tính toán

(Hmm ... có thể nó không quan trọng, nhưng chắc chắn là khó)

12
Maglob

Chỉ có hai vấn đề khó khăn trong Khoa học máy tính: vô hiệu hóa bộ đệm và đặt tên mọi thứ. - Phil Karlton

10
Gareth

lý thuyết phạm trù (toán học rời rạc), nhưng đáng

7
Steven A. Lowe

Mật mã học

Nếu bạn làm điều đó chỉ hơi sai, nó có thể tốn một triệu công ty.

6
davidhaskins

Hệ điều hành, đặc biệt là phần có liên quan đến phân luồng.

Và lý do không phải là vì thật khó để khiến 5 triết gia ăn pizza bằng nĩa. Lý do là bởi vì viết mã đa luồng rất khó và không nhất thiết phải dễ dàng cho con người (ít nhất là nam - theo vợ tôi) để tính toán.

4
Peter Turner

Phân tích số

Nó không quá khó đối với các vấn đề về đồ chơi mà bạn đưa ra trong khóa học, nhưng một khi bạn bắt đầu xem xét các vấn đề thực sự, nó sẽ biến thành vấn đề nghiêm trọng.

3
Peter Taylor

Lý thuyết hàng đợi

Về mặt kỹ thuật, đây là một nhánh của toán học, nhưng có liên quan cao trong CS.

Gần như mọi thứ trong CS đều dựa trên hàng đợi (hiển thị (rõ ràng) và vô hình (không quá rõ ràng hoặc ngụ ý)).

Trong những ngày đầu của CS, hàng đợi là rõ ràng.
[.__.] Một hàng các chương trình (mỗi chương trình một cỗ bài).

Ngày nay, hàng đợi không quá rõ ràng. Internet ví dụ: một mạng chuyển mạch gói, nhưng các gói hình thành hàng đợi và định tuyến các gói là một hình thức thu nhỏ hàng đợi.

3
Martin York

Tôi cũng bỏ phiếu cho Thiết kế trình biên dịch. Đặc biệt là khi phần DFA và NFA xuất hiện. Tôi cũng không rõ lắm về NP vấn đề và công cụ.

3
Yuva

Giải thích các yêu cầu của khách hàng khi khách hàng không thực sự biết họ muốn gì. Điều này không được dạy trong trường đại học, và là một trong những kỹ năng cần thiết nhất phải có.

2
Steven Striga

Có nhiều chủ đề khó xử trong lĩnh vực này, nhưng những vấn đề khó khăn liên tục của tôi là những vấn đề liên quan đến Thuộc tính hệ thống toàn cầ. Ví dụ về chủ đề chung này bao gồm:

  • Đa luồng an toàn và không có bế tắc
  • Bảo vệ

Đây là những khó khăn bởi vì bạn theo đuổi thứ gì đó chỉ tồn tại khi mọi thứ đều chính xác; bạn cần một thuộc tính hệ thống toàn cầu và hầu như tất cả các công cụ có sẵn (và tất cả những công cụ mở rộng theo các vấn đề thực theo kinh nghiệm của tôi) chỉ thực sự làm lý luận cục bộ . Đó là quá trình đi từ lý luận về các phần của chương trình đến toàn bộ Shebang, điều đó rất khó, đặc biệt là vì hoàn toàn có thể có các phần hoàn toàn chính xác nhưng ở đó vẫn có các lỗi tinh vi do các thành phần được sắp xếp không chính xác; các lỗi có thể là đặc điểm nổi bật không mong muốn

1
Donal Fellows

Trình biên dịch xây dựng. Khó nhưng phải hiểu các khái niệm đằng sau

1
Nipuna

Thiết kế hạt nhân bất cứ ai? Chà, tôi thực sự không biết nó đã được thực hiện như thế nào và các tính năng được nhắm mục tiêu cho HĐH là gì, nhưng đối với tôi, việc nghĩ đến việc thiết kế kernel phải là một nhiệm vụ khó khăn.

Tôi cũng nghĩ về bảo mật máy tính; Tôi thực sự không biết điều gì làm cho một hệ thống không an toàn, ngoại trừ, tràn bộ đệm rõ ràng, tiêm XSS và SQL.

Tôi không chắc chắn, nhưng dường như một số thuật toán cũng không an toàn; nhìn vào dự án MetaSploit, nó liệt kê tất cả các loại vi phạm bảo mật: bạn có thể thấy có rất nhiều cách mà một chương trình có thể bị sai sót.

1
jokoon

Cá nhân tôi là Logic chính thức. Thật khó khăn khi bắt đầu, nhưng một khi bạn hiểu được các quy tắc và quản lý để chơi với nó đủ, bộ não của bạn sẽ hoạt động Logic++;, mà trong phát triển là một điều rất tốt.

Như một lưu ý phụ, tôi đang trả lời trực tiếp câu hỏi - đây chắc chắn không phải là môn học khó nhất khi tôi có bằng cấp, nhưng nó có lẽ là môn học "áp dụng thực tế" khó nhất.

1
Kyle Rozendo

Thiết kế và phân tích thuật toán. Không khó để hiểu và phân tích đã biết thuật toán, việc thiết kế và phân tích thuật toán mới cho các vấn đề khó là khó, và đòi hỏi hiểu biết rộng về nhiều lĩnh vực và thực hành áp dụng nhiều cách khác nhau kỹ thuật.

0
philosodad

Tôi thích câu trả lời của bạn (và tôi đã không quên nâng cao chúng), như trình biên dịch, kernel, v.v., nhưng hầu hết các lập trình viên không bao giờ gặp những vấn đề này. Có một chút dễ dàng hơn, nhưng vấn đề phổ biến hơn: đồng thời - chủ đề, khóa. Thật dễ dàng để viết một chương trình tạo ra các lỗi ma thuật, nếu chúng ta tạo ra một lỗi nhỏ trong kiến ​​trúc tương tranh.

Vì vậy, tôi nói, đó không phải là vấn đề khó nhất trong điện toán, nhưng vì nó thường được sử dụng, nên nó là một vấn đề nguy hiểm.

0
ern0

Tối ưu hóa thuật toán là chủ đề đầy thách thức.

0
Rachel

Ký hiệu Z/phương pháp chính thức được sử dụng để làm tổn thương não của tôi ở trường đại học. Chủ yếu là vì tôi ghét nó. Khó sẽ dễ hơn rất nhiều khi bạn tận hưởng những gì bạn đang làm và khó hơn nhiều khi bạn không làm.

0
Ian

Môn học/lý thuyết CS khó nhất mà bạn đã học nhưng quan trọng đối với lĩnh vực này là gì?

Toán rời rạc.

Thật khó khăn vì các lý thuyết liên quan rất lỏng lẻo với nhau nhưng chúng được sử dụng trong CS. Tôi đoán quá nhiều việc ghi nhớ ...

Chứng minh bằng cảm ứng, Big O, đệ quy, chia và cấu hình, Lý thuyết đồ thị, blah blah .. argh!

Trình biên dịch đối với tôi thật dễ dàng, bởi vì chúng tôi phải học Lý thuyết về Automata. ^^

0
mythicalprogrammer

Lập trình ràng buộc. liên quan đến các vấn đề tổ hợp, các vấn đề hoàn thành NP.

0
Sorantis

Dịch vụ thông tin quản lý Trong thời gian học đại học, tôi từng có một môn quản lý mỗi học kỳ khiến tôi phát điên.
Khó khăn! các chủ đề tốt như Thiết kế trình biên dịch, Thiết kế hệ điều hành vv rất khó nhưng chúng thực sự thú vị và đầy thách thức. Tôi thực sự nhầm lẫn trong các môn học như Hệ thống thông tin/Dịch vụ quản lý, v.v. vì chúng đầy sự nhàm chán và bạn phải trải qua rất nhiều lý thuyết.

0
Ranger

Nếu bạn đang làm việc trong con trỏ C/C++ là khái niệm quan trọng nhất cần biết. Nhưng bằng cách nào đó tôi không bao giờ hiểu nó đầy đủ ở trường đại học.

0
Manoj R

Lập trình hướng đối tượng

Có lẽ vì tôi đã cắt răng trên FORTRAN và APL, nhưng việc chuyển từ ngôn ngữ thủ tục nghiêm ngặt sang đối tượng là điều tôi đã đấu tranh trong nhiều năm. Nó không giúp những người được gọi là 'chuyên gia' viết các bài báo và hướng dẫn mâu thuẫn về ý nghĩa của việc hướng đối tượng và cách tốt nhất/đúng đắn để xây dựng các chương trình hướng đối tượng.

0
oosterwal