我如何开始理论CS?


35

我是一名学习计算机科学的新生,并且我已经知道我想进入学术界,并且要以理论比较科学为重点。我已经阅读了该问题中引用的一些论文,并且这个问题进一步说服了我。

作为一名本科生,我现在应该做什么以参与该领域?我该怎么做才能为该领域的研究做准备?


7
这实际上还不足以作为答案,但也可以考虑摘取Michael Sipser的“计算理论导论”的副本。即使您没有时间自学该书,如果您需要查找的内容在Wikipedia上没有明确说明,也可以作为参考。
菲利普·怀特2010年

2
我不知道该程序如何工作,但我希望将其视为社区Wiki。
chazisop 2010年

3
标记问题以引起主持人注意,我们将予以处理。
Suresh Venkat 2010年

2
@好人:OP不能提问 CW,只有主持人可以。
卡夫

2
@好人:正如卡夫(Kaveh)所提到的那样,原始发帖人不能再发布帖子了(拥有编辑权限的人也不能)。只有mod可以做到这一点。无意冒犯。
Suresh Venkat 2010年

Answers:


29

让我从另一侧提供答案。我和一些本科生研究人员一起工作。经验好坏参半:有一些我发表了论文并在进行中,有的则从未真正开始过。

知道您想做什么很棒。作为一名本科生,您应该重点关注以下内容:

  • 建立数学上的“肌肉”,这将在您开始认真解决问题时为您提供帮助
  • 探索理论CS的不同方面,以了解该领域并找出您觉得有趣的问题/领域
  • (取决于区域)解决一些难题,也许解决一些练习,然后逐步解决研究问题。

寻找一位教授来指导您,然后及时投入!您将面临的最困难的事情是创造开放时间来思考课堂作业,作业和考试中的问题。但是,您需要为自己的独立研究和学习留出一定的时间,否则很难取得任何进展。如何操作取决于您自己:也许您可以找到一位教授,每周与您见面并为您设定中间目标,或者您可以设定长期目标(通过文本中的X练习)并稳定地工作那。


4
好答案!“您需要为自己的独立学习留出一定的时间”:这使我想起了自己的经历。我曾经是一个懒惰的数学学生,然后在硕士课程中我发现了一个不错的TCS问题(围绕繁忙的海狸函数)。我开始在我的一位教授的指导下从事业余时间的工作。我从来没有发现关于这个问题的有趣信息,但是12年后,我和他一起写了15篇论文(但是他从来不是我的博士/硕士顾问,只是“外部”导师)。
Sylvain Peyronnet 2010年

1
Suresh的答案很好!对OP:构建数学“肌肉”意味着要习惯数学的语言和工具(组合学,图论,分析等),还要习惯于证明定理!(这是真正令人兴奋的部分!:-)
杰伊2010年

19

我目前是博士生,而不是教授,所以我的建议来自我(有限的)研究生经历。

当我还是一名本科生时,我总是在夏天担任研究助理,并在我系中担任不同的教授。我个人认为,弄清TCS是否真正适合您的唯一方法是着手解决具体问题,并从中找到最大的享受。我花了相当长时间才找到我喜欢的教授和话题。研究中还有一个“社会”方面,不同的教授具有不同的工作和监督习惯,因此,这些暑期研究工作将使您更好地了解您将来希望从主管那里获得的最高素质。

计算机科学中有许多有趣的领域,而TCS只是其中之一。因此,最好始终保持您的选择公开并与其他教授交谈。在攻读博士学位时,专业化非常重要,但是作为本科生,我认为Mark Braverman的建议非常相关:

“尽力学习。[...]以后会更加困难!”

[Mark尝试着参加许多课程(远远超过限制),并在他还是本科的时候就探索了数学和计算机科学的不同领域。]尝试参加有关部门中不同主题的讲座和研讨会。在高年级时,您还应该请求允许审核与您的兴趣相关的研究生课程。

此外,根据您是要学习数学还是CS的专业,还必须计划要准备的课程,以为您奠定坚实的基础。如果您是数学专业的本科生,那么您应该参加更多的算法和复杂性CS课程,这会使您更加“算法”化。如果您是计算机科学或工程专业的本科生,那么学习以下基础数学课程总是一个好主意:

  • 组合学
  • 概率统计
  • 高级线性代数
  • 抽象代数
  • 分析

的确,您永远无法学习足够的数学,并且应该学会在需要时快速学习新的数学/方法/技术。但是,扎实的背景肯定会让您更轻松地开始使用TCS。

祝你好运和成功!


6
+1:不错的答案。我会补充说,参加/审核非理论性CS或非CS课程也是一件好事,它为解决可能出现的问题打开了思路,您永远不知道哪里会出现好的理论问题,所以请睁大眼睛。:)
Kaveh

您会推荐史蒂夫·罗曼(Steve Roman)的“高级线性代数”进行研究生自学吗?
雅各布

2
@雅各布:罗马的书肯定是很多人推荐的。它确实非常先进,涵盖了诸如模块,凸度,仿射几何,张量积等不错的主题。但是最重要的是,您应该始终选择适合您的口味和背景的东西!因此,在决定之前浏览图书馆的一堆书总是一个好主意(至少对我而言)。
戴勒

11

作为一名新生,您最好的选择是向CS系的教授表达这种兴趣,他们可以为您提供帮助(为他们的工作提供很大的帮助!)。我希望他们中的大多数人会很乐意帮助那些对自己的事物感兴趣的本科生。至少,他们可以为您提供关于在您的机构上什么课程的好的建议,并根据您的情况量身定制。


10

许多其他人似乎在给出各种好的建议。令我感到惊讶的是,我要说的是:没有太多的数学知识(除非您决定自己想做纯数学)。认真地,了解您的分析,组合学,代数,也许是一些代表理论,alg top等。它使跨CS理论领域的广泛阅读变得容易得多:)


2
极好的建议。我也告诉所有与我交谈的本科生。
Suresh Venkat 2010年

7

您迈出了伟大的第一步!我将第二次谈论与您所在系的教授交谈。如果您对理论感兴趣,请找到教理论课程的人并与他们交谈。他们可能有一些问题,不需要太多的背景知识即可上手。以我的个人经验,图论和组合论中有更多的问题比理论上更容易解决,但仍具有相同的研究技能。不要害怕您的数学系!

这也可能有助于开始参与社区活动,特别是通过在此处提问和回答问题。将您的用户名设为您自己的名字会有所帮助,以便我们了解您的身份。


6

我快要毕业了。因此,您的问题的答案对我来说也很有趣,但是也许我的一点个人经验会有所帮助。

这是我的建议列表(随机排列),您可以做什么:

  • 首先,请阅读尽可能多的论文/书籍/讲义。但是,将您的知识应用到练习中,然后解决问题也很重要!我的一些老师总是说:不仅您的肌肉需要持续训练:)
  • 在此站点(或其他一些相关的SE站点)上阅读/询问/回答问题是学习如何处理TCS或数学研究主题的好方法。
  • 我尝试阅读许多来自著名研究员的TCS博客。主题涵盖当前和历史结果。

您是否有指向这些博客的链接?
SH7890

2

我认为最重要的是,尽可能广泛地探索,以了解TCS的哪些方面真正使您兴奋。在探索过程中,您可能会发现最吸引您的问题是TCS与其他领域(例如经济学)的交叉或TCS的应用(例如在计算机网络中)或TCS主题,它们也是CS其他领域的一部分例如计算或统计学习理论。哎呀,如果您的兴趣朝着这个方向发展,您甚至有可能将您的专业改为数学或物理或相关专业。

我的观点是,作为新生,您确实有机会以比研究生或教授更少的压力进行广泛的探索。如果您没有出现在“通常的可疑” TCS主题中,也不要惊慌。

当然,如果您“深入”某些领域,学习扎实的技术并发表出色的成果,那将是理想的选择。

而且,如果您最终在成为一个热门新领域的专家之前成为主流,那可能对您的职业生涯很有帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.