it-swarm.cn

计算机科学中最困难的学科/理论?

您学习过哪些最困难的CS学科/理论,但对该领域来说很重要?原因是什么?

17
Abimaran Kugathasan

“计算机科学中有两个难题:缓存,命名和错误率1错误”

37
Brian Carlton

老实说,编译器的构造!

35
Pemdas

算法设计与分析

我认为这个问题取决于您的老师,以及您的职业如何组织该科目。

分析算法可能会像有人想要的那样困难。算一下,有未解决的问题,不仅是:无法解决的问题。

问题是您可能遇到问题,如果您知道无法解决,那就太好了。但是,如果不这样做怎么办?您可能需要花费大量时间来证明它是NP-Complete,或者试图找到一个多项式时间解决方案来解决它。

证明NP的完整性并不容易。是的,已经知道了很多问题,但是要做的是找到减少点以证明它是NP-Complete。如果您花费大量的时间/天/月来演示它,并且可以在多项式时间内求解,该怎么办? :)

还有一些其他科​​目,例如编译器组理论原始递归函数可能与科目计划或老师想要的一样困难; )

22
Oscar Mederos

模式识别即人工智能。这是指智能计算以及其他模式识别工具,例如光学字符识别,语音到文本,面部识别等。

您可以使用计算机执行或希望通过计算机执行的许多“很酷”的事情都依赖于这些算法,并且数十年来,我们一直在尝试对其进行完善,但并未取得很大的成功。

18
Malfist

我的选择是 可计算性理论

(嗯...也许那不那么重要,但是肯定很困难)

12
Maglob

在计算机科学中只有两个棘手的问题:缓存失效和命名。 - 菲尔·卡尔顿

10
Gareth

范畴论(离散数学),但值得

7
Steven A. Lowe

密码学

如果您做的有点错误,则可能使公司损失数百万美元。

6
davidhaskins

操作系统,尤其是与线程有关的部分。

原因不是因为很难让5位哲学家用叉子吃披萨。原因是因为编写多线程代码本身就很困难,而且对于人类(至少是男性-据我的妻子来说,是男性)的思想很难计算。

4
Peter Turner

数值分析

在课程中给您的玩具问题并不难,但是一旦您开始考虑真正的问题,它就会变得很费力。

3
Peter Taylor

排队论

从技术上讲,这是数学的一个分支,但在CS中具有很高的相关性。

CS中的几乎所有内容都基于队列(可见(明显)和不可见(不太明显或隐含))。

在CS的早期,队列很明显。
程序队列(每个程序都需要一副纸牌)。

如今,队列并不那么明显。例如,互联网:一个分组交换网络,但是分组形成队列,路由分组是队列最小化的一种形式。

3
Martin York

我也投票赞成Compiler Design。尤其是在DFA和NFA部分进入的地方。对于NP问题和问题,我也不太清楚。

3
Yuva

解释客户需求当客户并不真正知道他们想要什么时。这不是大学教授的,是拥有的最基本的技能之一。

2
Steven Striga

该领域中有许多尴尬的主题,但是我选择的持久性难题却是全局系统属性。此一般主题的示例包括:

  • 安全无死锁的多线程
  • 安全

这很困难,因为您追求的是只有当一切正确时才存在的事物。您需要一个全局系统属性,但实际上所有可用的工具(以及全部可以解决我的实际问题的工具)实际上只能进行局部推理。这是从对程序的各个部分进行推理到整个Shebang的过程的过程,这很困难,尤其是因为完全有可能使各个部分本身都是正确的,但是由于组件的排列不正确,仍然存在细微的错误;错误可能是不希望出现的特征...

1
Donal Fellows

编译器构造。很难,但必须了解背后的概念

1
Nipuna

内核设计任何人?好吧,我真的不知道它是如何完成的,以及操作系统的目标功能是什么,但是对我而言,考虑设计内核是一项艰巨的任务。

我还考虑计算机安全;我当然不知道是什么使系统不安全,除了明显的缓冲区溢出,XSS和SQL注入。

我不确定,但是似乎有些算法也不安全。查看MetaSploit项目,其中列出了所有类型和种类的安全漏洞:您可以看到有很多方法可以破坏程序。

1
jokoon

我个人是形式逻辑。一开始很难,但是一旦您掌握了规则并设法使用足够的规则,您的大脑就会Logic++;,这在开发中是非常好的事情。

附带说明一下,我直接回答了这个问题-这绝对不是我获得学位时最难的科目,但它可能是最难的“现实生活中适用的”科目。

1
Kyle Rozendo

算法设计与分析。并不难理解和分析known算法,这是困难的,要设计和分析新算法很困难,并且需要对许多领域有广泛的了解,并在应用许多不同方法时需要实践技术。

0
philosodad

我喜欢您的答案(而且我也不会忘记投票),例如编译器,内核等,但是大多数程序员从未遇到过这些问题。有一个更简单但更常见的问题:concurrency-线程锁定。即使我们在并发体系结构中犯了一个小错误,编写产生魔术错误的程序也很容易。

因此,我说,这不是计算中最困难的问题,但是因为它是常用的,所以它是一个危险的问题。

0
ern0

算法的优化是具有挑战性的主题。

0
Rachel

在大学时,Z表示法/形式方法曾经伤害过我的大脑。主要是因为我讨厌它。当您享受自己所做的事情时,辛苦会容易得多,而当您不喜欢时,辛苦就容易得多。

0
Ian

您学习过哪些最困难的CS学科/理论,但对该领域来说很重要?

离散数学。

这很困难,因为这些理论之间的联系非常松散,但它们却在CS中使用。我想太多了...

通过归纳证明,大O证明,递归,除法运算,图论,等等等等。

对我而言,编译器很容易,因为我们必须采用自动机理论。 ^^

0
mythicalprogrammer

约束编程。处理组合问题,NP完全问题。

0
Sorantis

管理信息服务在我上大学期间,我每学期都有一个管理科目,这使我非常生气。
强硬!像编译器设计OS设计之类的主题很艰巨,但它们确实很有趣且充满挑战。我真的搞砸了诸如管理信息系统/服务之类的主题,因为它们充满了无聊,并且您必须经历很多理论。

0
Ranger

如果您使用的是C/C++,则指针是最重要的概念。但是以某种方式,我在大学里从来没有完全理解它。

0
Manoj R

面向对象编程

可能是因为我不肯使用FORTRAN和APL,但多年来我一直在努力从严格的过程语言转换为对象。所谓的“专家”撰写相互矛盾的文章和教程并没有帮助他们了解面向对象的含义以及构建面向对象程序的最佳/正确方式。

0
oosterwal