我试图了解理论计算机科学研究的内容。理论计算机科学家做什么?
我知道大量时间用于教学,指导研究生,申请资金和部门职责。抛开它们,您如何度过研究时间?您通常从事哪些主要活动?我猜您正在阅读论文,进行思考,召开会议和撰写文件。还有其他吗?
我试图了解理论计算机科学研究的内容。理论计算机科学家做什么?
我知道大量时间用于教学,指导研究生,申请资金和部门职责。抛开它们,您如何度过研究时间?您通常从事哪些主要活动?我猜您正在阅读论文,进行思考,召开会议和撰写文件。还有其他吗?
Answers:
关于话题
理论计算机科学可能有不同类型的问题 。这里的重要词是“ 理论的 ”(因为我们都对计算机科学的处理方式有所了解)。理解理论这个词并不是很明显。很长一段时间以来,我都把它的意思是数学的,而不是例如“黑客”。我从语言学的人那里学得更好: 理论对他们来说显然不是数学上的意思,而是基于一种可能是非正式的理论(尽管它也可能是数学的),并且是一种有组织的知识和概念,构成了对可观察现象的理解,并希望允许进行演绎和预测性使用获得的知识。它还通过减少可以从中推导出其余概念的原始概念的数量来减少学习和教导的数量。
理论可以与实践相对,这是将这些知识用于实际运行计算引擎,构建系统等的方式。我也可以与应用相对,即将这些知识用于解决科学和人类其他领域的问题。活动。
但是我怀疑是否存在明确的界限。
这就是说,理论计算机科学涵盖了多个领域,我将尽力给出一些内容,同时我确信我会忘记其他内容,而且其他人可能会不同意这个组织。
一个领域是可计算性,它研究可以计算的内容以及在相当抽象的意义上如何进行计算:很大程度上是Suresh Venkat的答案中描述的内容。
另一个是算法学,它找到了有效的方法来计算具有特定约束的特定问题的答案。可计算性是算法学的理论背景。
语义(需要一个更好的名称),将计算问题和算法的概念组织分析为更高级别的概念,以便分解出已证明有用且经常重复使用的技术,例如子程序,数据-结构,模块,信息隐藏。它包括数学工具的开发,这些工具适当地形式化了这些概念以允许进行高级推理(例如,Scott语义)。它还涉及到表达的方式,因此也涉及语法和语义之间的分离和关系。编程语言概念是其中的一部分(尽管语言设计可能是该知识的实际应用)。它还可以包括证明理论与计算理论之间的关系,以及类型系统的现代作用。
计算和基础物理学之间的关系是另一个可能比到目前为止发展得更快的主题。例如。计算的限制与物理世界的属性(例如物理信息密度或热力学定律)之间是否存在关系。量子计算可以提高我们的计算能力;我们可以希望更多吗?尽管有关于超计算的 TCS研究,但有些人可能仍然认为这仍然是TCS 。
关于具体活动
我跳过了学术生活中需要进行的明显活动。或工业界的科学生活:教学,出版,审阅论文,撰写拨款申请书,承担学术责任,管理人员,为学生或决策者提供建议。但是即使那样,您的问题也没有简单的答案。在这里,我只是勾勒出一些想到的方面,但是我相信还有很多要说的。而且我不确定我是否会回答您。一些最优秀的科学家写了有关其工作的书,这可能给您有关科学活动的提示。
理论研究可能涉及很多事情,具体取决于您的技能和兴趣,科学家之间的差异很大。很难说这件事,因为每个人都比其他人更了解自己的活动和兴趣。大多数研究需要广博的知识,因为有趣而真正原始的结果通常来自于将事物联系起来,或者将一种技术从一个(子)领域转移到另一个领域,或者对同一问题获得不同的技术观点。因此,尽可能在广度和深度上进行学习非常重要。请记住,尽管您有时间和能力作为学生或初级教师/科学家,但由于责任和生活一般,两者都会在以后减少。教授您不擅长的领域可能是一种继续学习的方式。
人们所做的工作可能会有很大不同,因为幸运的是,人们之间的差异非常大,他们的兴趣和技术能力千差万别,可以相互补充。有些人是解决问题的人。他们着眼于其他人或自己提出的理论或实践问题,并试图解决这些问题,或者接近全部或部分解决方案。其他人将更擅长于构造现有知识,将事物联系起来,然后找到新的问题要问。两者都是必不可少的。
寻找更简单的技术成果证明,更简单的理论表述或合并概念非常重要。它概括了结果,减少了学习的次数,强调了基本思想,并可能带来了新的理解。由于我们的学习时间有限,因此只有凝聚知识,才有可能取得进步。
一个简单的例子是对形式语言的抽象家族的研究。当语言理论第一次发展时,对于每种语言家族(常规,无上下文,RE,...),都反复证明了闭包特性,并使用了依赖于该家族的专门技术。然后发现这些封闭性质具有与相关家族无关的内在联系,因此对其进行了研究。今天,我们只需要检查给定族的一些更简单的闭包属性,就可以“免费”获得其他所有属性。
另一个重要的一点是,理论,实践或实验工作之间没有如此明确的区别。一个好的理论可能会导致可以机械化解决问题的系统的实施。实施这样的系统需要一个好的理论家,需要结合理论和实际工作,包括系统实施或语言设计。我想到了许多示例,例如证明和/或程序综合系统,同步并行系统的专用语言,可以系统地导出计算复杂性的受限算法语言。能够产生这样的实用系统不仅很重要,它可以使理论结果更广泛地得到使用,而且对于理论家来说,重要的是要熟练地使用这些系统,如果仅仅是卸载他现在不太有创造力的部分的话。工作,或为这些系统的开发和扩展做出贡献。
另一个方面是能够通过实际实验比较理论方法。在这里,问题是比较不同的技术来实现相同的目标。比较实现通常是没有意义的,因为它们的效率通常取决于编程语言或实现者的编程技能。但是,如果可以在一个共同的理论框架中全部表达它们,那么有时可以在该框架内通过实验比较它们。在这里,理论和实践是相互支持的,就像在科学中一样。单纯的理论分析并不总是容易实现的。此外,实验分析如果执行得当,会表现出意想不到的行为,可能会激发更好的理论分析。
这个世界并不简单或清晰。这就是为什么它可以充满各种技能的乐趣所在。通过任何方式质疑自己的知识并回答他人的问题。
人们经常忘记两件事:科学伦理学,并向人们解释科学伦理学。两者都是必不可少且艰巨的。
从某种意义上说,浏览该站点将告诉您理论计算机科学家所思考的各种问题(处于较低水平)。在非常高的水平上,理论计算机科学家会问有关计算的数学基础的问题:
从这些问题开始,出现了许多其他主题,涉及应用程序领域,数学,计算机科学的其他部分,等等。
在我看来,第一手资料可能会有所帮助,但在CS中似乎很少见(与数学,传记/类似回忆录的写作等相反)。这里有两个在线裁判可以解决这个问题,可能会对您有所帮助。它们更适合于博士生和以CS为导向的研究,但大多数将用于教授级研究(除了教学,许多博士也这样做)。[在某些方面,教授被视为在职业生涯中不断/重复地撰写许多“微型”博士学位论文(研究论文),或在某些情况下“超级”博士学位论文(书)。]该主题,如果您指出它们将是您问题的可接受答案,则会添加一些内容。
如何在MIT AI Lab进行研究 “由一大批现任,以前和荣誉的MIT AI Lab研究生组成” /编辑大卫·查普曼(David Chapman)
该文件冒昧地解释了如何进行研究。我们提供的启发式方法可能有助于掌握研究(阅读,写作,编程)以及理解和享受过程本身(方法,主题和顾问选择以及情感因素)所需的特定技能。
如何成为一名成功的博士学位学生(计算机科学专业) Mark Dredze(约翰霍普金斯大学),Hanna M. Wallach(麻省大学阿默斯特分校)