首页 > 图书中心 > 可视化计算

前言

本书是一个新的计算机教育时代的产物,计算思维就是这个时代的名称。一般认为科学思维主要分为理论思维、实验思维和计算思维三大类,所以理论、实验和计算成为推动人类文明进步和科技发展的三大支柱。而计算思维的主要内容则包括了问题求解、系统设计和人类行为理解。

在高等院校的计算机教育领域,一直存在两种截然不同的教材: 一种是面向计算机和信息专业领域的,众多成熟和系统性很强的教材并形成学科教育的基础;另一种则是面向所有专业的计算机基础教材,由于其中的内容大部分是面向计算机基本应用的,所以技术选择对平台工具具有一定的依赖性,而且随着技术的变换而不断变化。

由于计算机与网络技术的迅猛发展,技术和平台工具选择的相互依赖会导致大部分专业工作者在学校所接触到的信息技术和产品不久就成为“明日黄花”并为更新的技术和产品所替代,甚至一种计算工具尚未完全掌握,新一代的工具又产生了。这种状况往往令人目不暇接,以至于无所适从。另一方面,计算机科学的基础内容,那些在计算机科学课程系列中被认为极为重要的核心理念和基本方法,虽然变化缓慢,但由于其枯燥艰深,难以为广大的其他专业工作者所了解和掌握。

在这个新的计算机教育时代,大学计算机课程的重要任务之一是让学习者体验到计算原理的相互影响以及问题有效解决的思维方式,并从中获得计算的愉悦。

本书的目的就是朝着这个方向努力。希望在有限的时间里,将计算机科学的核心理念传播给非计算机专业的读者,并且,希望这些理念是可以观察、验证和投入实际应用的--即使这种应用水平还属于初级阶段,可能存在很多需要改进的地方。

鉴于目前大部分高校学生具备的计算机和信息应用技术和认知基础,本书的重点放在以下方面。

(1) 程序设计基础: 本书对读者的程序设计知识的要求为“零起点”,而介绍算法显然离不开最基本的程序设计概念。但本书的主旨并不是介绍程序设计,所以程序设计语言的选择和应用采用了不同于以往传统教材的做法,目的是用最短的时间让读者掌握一种可以进行算法讨论的程序设计工具。这部分内容包含在第1、2章中。

(2) 算法分析要点: 算法是计算机科学的精髓,也是本书所强调的核心内容。算法分析的要点是通过理论估算和实验验证两种方式,比较算法设计的时间和空间复杂性;让读者熟悉和了解在计算机科学中算法设计普遍应用的“空间换时间”的基本原则。这部分出现在第2章。

(3) 基本算法与策略: 与高校学生的计算机与信息基础结合,进行常用基本算法的介绍,让读者可以直观地感受使用计算机进行问题求解的魅力,并养成分析问题和选择算法的习惯;而基本策略的引入则是计算思维的直接体现,可以让读者感受计算机科学中应用人类传统智慧的一些基本原则,并形成计算策略应用的基本规律。这部分内容包含在第3章中。

(4) 计算与数据模型: 模型化的思想是科技发展的重要手段,这部分内容主要考虑两个方面: 一是以图灵机为核心的计算理论的引入和验证,为读者提供有限状态机算法设计的基本训练;二是开始引入抽象数据类型,因为计算科学的两个核心概念--抽象和自动化都涉及基础理论和应用实现。这部分内容出现在第4章。

(5) 具有数据结构特色的算法: 内容包括在第5~7章中,每一章的内容都与某种抽象数据类型相关,是本书实践计算思维教学的问题求解部分内容最为集中的部分,具有较强的实践性和应用价值。

(6) 计算工具的选择和评估: 计算思维必定受到人和计算工具的能力限制。这部分介绍计算工具的选择原则和评估方法,以便读者明确认识计算工具的限制和最大限度地利用计算工具本身的能力,这也是本书的特殊视角的反映。由于作为算法评估工具的可视化程序设计语言除了进行算法原型的设计和分析之外,也可以将算法设计的结果转换成为其他的程序设计语言。这样,除了能够完成基本的算法功能外,符合应用需求的程序和计算环境就有了选择的必要。这部分内容出现在第8章。

本书可以作为一门类似于“大学计算机”性质课程的基础教材,供大学本科一、二年级的学生使用。同时也可以作为程序设计、数据结构和离散数学等课程的入门参考书。

作者谨向全体参与以“计算思维”为切入点的大学计算机课程和教学改革的同行致以敬意。采用一种全新的视角来开展这类课程的教学,不仅需要辛勤的付出和投入,而且需要具备挑战未知领域的勇气和魄力。

经过两年多的准备和实践,作者发现这种付出是非常值得的--当学生拿着自选专题的算法大作业,同教师和同学进行交流的时候,你会突然发现,在学期开始时甚至不知道分支、循环为何物的学生,到了期末已经可以与他人讨论非常专业的算法问题了。这是大学计算机基础课教师所追求的最高境界和所能获得的最好奖励。

在本书编写过程中,得到了国内外专家学者以及我们的学生的帮助,在此谨致谢意。

西安交通大学计算机教学实验中心主任、全国首届教学名师冯博琴教授在作者任教的单位中倡导开展以“计算思维”为切入点的新一轮大学计算机课程教学改革,并亲自推动了少年班“计算概论”、“大学计算机基础”的课程改革实验,使得作者有机会进行改革方案的创新和实践。

可视化程序设计工具RAPTOR的主创者之一Martin C.Carlisle博士,对作者提出的对该工具的设计改进做出了详尽和积极的答复。

西安交通大学李仁厚教授、黄尚恒教授、吴裕远教授评审了采用本书作为教材的校级选修课的大纲,并建议修改课程名称,本教材最后成书时也采用了该课程修改后的名称。

感谢上海交通大学过敏意教授、福州大学陈国龙教授、重庆邮电大学王国胤教授、西安交通大学邓建国教授、广东工业大学程良伦教授、湖南大学李仁发教授、桂林电子科技大学董荣胜教授、华南师范大学叶惠文教授、成都理工大学孙淑霞教授、深圳大学王志强教授、肇庆学院胡忠望教授、华东理工大学陈志华副教授针对本书所提出的建设性意见和建议。

特别感谢西安交通大学周梦远同学、西安电子科技大学薛飞洁同学为本书中的程序样例的设计与调试提供了重要的帮助以及西安交通大学少年103班、少年104班全体同学为“计算概论”课程的算法设计大作业所付出的努力。

感谢清华大学出版社焦虹主任和张民编辑对本书立项和出版所做的努力。

对于本书存在的缺陷和不足,作者诚恳地期望各位同行和读者赐教。

作者 2012年11月于西安交通大学

版权所有(C)2014 清华大学出版社有限公司 京ICP备05029640号 京公网安备11010802013248号

联系我们 | 网站地图 | 法律声明 | 友情链接 | 盗版举报 | 人才招聘