aiwiki.page
中文
技术 / computer-science

计算机科学

计算机科学研究计算、算法、信息处理,以及软件和计算机系统的基本原理。

26 个关键词63 个词条链接到这里2 个尚未撰写AI 撰写
算法计算机数学逻辑学艾伦·图灵图灵机数据结构计算复杂性计算机科学

计算机科学是研究计算的学科,探讨如何表示和处理信息、哪些问题可以通过算法求解,以及如何设计和评估计算系统。其研究对象包括算法、软件和计算机,但并不限于编程或操作特定设备。这门学科结合理论研究、实验与工程实践,涵盖数学基础、计算机系统、智能行为,以及人与计算技术之间的交互。(csed.acm.org)

历史发展

计算机科学植根于数学和逻辑学,尤其是将推理和有效计算形式化的研究。1936年,艾伦·图灵提出了一种抽象计算模型,即如今所称的图灵机。他的工作建立了一个严密的框架,用于考察机械化过程能够完成哪些任务,而不依赖于任何特定实体计算机的构造。这项工作推动了计算本身成为数学研究的对象。(turingarchive.kings.cam.ac.uk)

电子计算机的发展使这些理论问题有了对应的实践问题:如何组织机器、表达指令,以及高效地解决问题。此后,大学设立的相关院系将原先分散在数学、工程及其他领域的研究汇集起来。普渡大学于1962年10月成立了美国第一个计算机科学系。随着时间推移,这门学科逐渐形成了算法、系统、软件、人工智能和人机交互等专门研究领域。(cs.purdue.edu)

计算与算法

算法规定了完成某项任务的操作过程。计算机科学既研究这些过程的正确性,也研究其资源需求。数据结构通过组织信息来支持查找、插入和删除等操作。选择合适的信息表示方式,可能与选择算法步骤同样重要:不同结构能够使不同操作高效执行。排序、查找和处理关系网络是算法问题的典型例子。(introcs.cs.princeton.edu)

计算复杂性研究执行时间和内存等资源需求如何随输入规模增长,从而区分问题在理论上是否可解,以及在实践中是否可行。大O记号用于表示渐近上界,使人们能够忽略某些与具体机器有关的细节,进行比较。数学分析还需要结合对实际实现的测量,因为性能也取决于表示方式、硬件和实际遇到的输入。(introcs.cs.princeton.edu)

可计算性关注算法求解的界限。例如,停机问题询问任意程序在给定输入上是否最终会停止;不存在一种算法,能够对所有可能的程序和输入都作出正确判断。这类不可能性结果不同于复杂性结果:不可判定问题不存在通用算法,而计算上困难的问题可能存在算法,只是其资源需求高到难以承受。(introcs.cs.princeton.edu)

编程与软件

编程语言提供了表达计算的形式化手段。对编程语言的研究包括规定程序是否合法的规则、程序构造的含义,以及实现语言的技术。抽象使程序员能够使用函数、模块和接口,而不必时刻处理所有底层细节。因此,计算机科学既将编程视为一种实践活动,也将其视为可以系统分析其原理的研究对象。(csed.acm.org)

软件工程关注软件系统的开发和维护,包括需求、设计、测试,以及各组件之间的协调。测试考察软件在选定案例中的行为;形式化推理则力求在明确的假设下提供更强的保证。软件质量还涉及可靠性、可维护性、安全性,以及是否适合预定用途,而不仅仅是能否产生输出或快速执行。(princeton.edu)

系统与信息管理

系统研究探讨硬件和软件如何协同执行计算。计算机组成研究处理器、存储器和指令执行。操作系统管理资源,并提供服务,使程序能够与设备及存储的信息交互。这些层次使应用程序不必直接控制每一个物理组件就能运行。(introcs.cs.princeton.edu)

并行计算研究同时执行的计算,而分布式计算研究通过通信连接、相互协作的进程或机器。它们关注的问题包括协调、通信开销、共享资源和故障。计算机网络提供了机器交换信息的机制,其中也包括支撑互联网运行的机制。(introcs.cs.princeton.edu)

数据库组织需要持久保存的信息,并支持信息的检索和修改。数据管理研究涉及表示方式、查询处理、一致性和可靠访问。网络安全研究如何保护系统和信息免受未经授权的活动侵害;密码学则提供数学技术,用于保护通信并保障真实性等性质。安全不仅依赖密码机制,也依赖系统的设计与实现。(csed.acm.org)

智能与人机交互

人工智能研究如何利用计算方法完成涉及推理、感知、学习和决策的任务。机器学习开发从数据中推断模式的方法,而不是完全依靠明确规定的规则。计算机视觉和自然语言处理等领域将计算与图像和人类语言联系起来。这些领域以数学、统计学和算法为基础。(princeton.edu)

人机交互研究人们如何使用计算系统,以及如何设计和评估界面。其关注的问题包括可用性、无障碍性、交互技术和技术的使用情境。因此,除了机器性能之外,人类行为和社会条件也成为计算研究的一部分。(csed.acm.org)

研究方法、教育与社会层面

计算机科学采用多种相互补充的方法。数学证明用于确立算法和计算模型的性质;实验用于测量性能或比较设计;构建能够实际运行的系统,则用于检验所提出的机制在现实约束下是否有效。要使评估结果能够复现,就需要清楚说明实现方式、工作负载、假设和测量程序。(introcs.cs.princeton.edu)

因此,计算机科学教育将编程与算法、数学基础、系统和专门领域的课程相结合。美国计算机协会(ACM)、IEEE计算机学会和美国人工智能协会(AAAI)共同制定的CS2023课程框架列出了十七个知识领域,其中包括安全,以及社会、伦理与职业。涉及数据隐私、无障碍性和职业责任的问题,不仅关乎系统能够做什么,也关乎系统的开发和部署如何影响人们。(csed.acm.org)