在今天的数字世界当中,计算机科学已成为人人皆需学习的重要科目。与之相关的知识以及计算思维技能对于开发创新数字技术、理解现代社会以及获得该领域相关资质而言最为重要。
CS Unplugged 活动旨在让您了解是什么主题 - 您可通过这样做,了解它是什么。在这个早期阶段,暂时不要正式定义它,让我们来思考它可能如何影响日常生活。例如,想想您最喜欢的搜索引擎。从表面上看,它就像一个相当简单的界面:设有一个供您键入要搜索内容的文本框,以及一个用于开始搜索的按钮。执行文本框和按钮所需的编程知识水平相当基础,您可通过编写一个简短的程序(可能少于 20 行)执行搜索,以浏览网站上的所有文本并显示任何匹配项。但显然,事实并非如此简单! 每天,搜索数量都将达到数十亿次。网页上有数十亿次搜索,上述方法会(最终)给出答案,但速度会变得极慢且无效率,没有人会使用它。
此种情况正是计算机科学大显身手之时。计算机科学有许多领域可确保系统运行良好,而 Unplugged 就对其中大部分领域进行了相关说明。您如何能够在几分之一秒内搜遍数十亿个条目(搜索算法)?您如何能够确保其易于使用(人机交互)?我们需要保证其安全性——用户不希望其他人知道他们在搜索什么,而搜索引擎亦不希望被商业利益操纵其搜索排名(计算机安全和加密)?搜索引擎通常会预测您要搜索的内容(人工智能)。它必须足够可靠——即便搜索引擎公司数千名程序员当中有人犯了一个小小的错误,搜索引擎网站的正常运行也不会受到丝毫影响(软件工程)。它需要具备良好的扩展性——即便访问量增加到 10 倍,其也无需消耗 100 倍的计算资源(算法)。搜索的相关性通常取决于网站之间的关系——您需要一张能够显示哪些网站链接至哪些其他网站的地图(图表)。
上述领域涵盖计算机科学这一学科的绝大部分内容。编程只是我们将想法付诸实现的一个工具(这是一个极其强大的工具,需要丰富技巧方可驾驭得当)。但是,仅靠编程本身并不足以帮助我们打造出人人爱用的软件。计算机科学为程序员提供了必要的独门秘籍,帮助他们了解如何让自己的软件变得快速、高效、可靠、安全、易用、智能、可扩展甚至令人愉悦!
这就是我们开发 CS Unplugged 的原因 - 希望青少年学生能够理解计算机科学所涵盖的伟大创意,而不必首先将自己打造为专业程序员。他们并不会精确学习如何构建下一个搜索引擎、社交网络或游戏应用程序,但将了解需要哪些类型的技术方可成功。我们不希望他们将数字系统看作是无法参与的某种魔法,而是看作他们能够理解的东西,并且对某些人来说,是可创造的东西。实际上,当您开始了解哪些可以完成、哪些无法完成时,它也呈现出魔幻的一面。