前    言
  “计算机科学与计算思维导论”是计算机科学、计算机工程、软件工程、信息技术等分支学科的学生全面了解计算机学科基本概貌的引导性课程,也是电子信息类专业重要的基础课程。
  在计算机教育史上,有关学科综述性引导课程的构建一直受到各国计算机学界的高度重视。IEEE-CS&ACM计算学科教程(Computing Curricula 2001,CC2001)报告指出:整个学科综述性引导课程的构建有助于推动学科的发展,鼓励各学术团体及教师个人从事这方面的研究,以适应计算机科学技术飞速发展的需要。因此,自CC2001发布以来,世界各国高校都非常重视计算机学科“引导”课程的构建,纷纷开设了“计算机(科学)导论”“计算机(科学)概论”一类的课程。为此,笔者经历了漫长而不懈的探索,编写且多次再版了《计算机科学导论》。
  随着计算机学科教育研究探索的深入,人们提出了“计算思维”(computational thinking),它是人类求解问题的一条有效途径,是一种分析问题、解决问题的过程和思想。如何将计算思维融入计算机学科体系中,不仅受到计算机相关专业从教者的高度关注,而且得到学术团体和教育部门的高度重视。2007年,美国国家科学基金会(National Science Foundation of America,NSF)将“计算思维能力”(computational thinking ability)培养列为“大学计算机教育重生的途径计划”的核心。2012年,我国教育部要求大学计算机教育的总体建设目标应该定位在“普及计算机文化,培养专业应用能力,训练计算思维能力”上,并明确定位大学计算机课程是与数学、物理等同地位的重要基础课程。
  面对这种新思想和新要求,如何将计算思维引入计算机学科的引导课程及其知识体系中,即如何构建基于计算思维的综述性引导课程,如何进行课程定位,应该起到什么作用,应该达到什么目的等,这些既是需要认真思考的问题,也是必须首先明确的问题。为此,笔者一直在对计算机学科引导课程的构建进行深入探索,并在探索中不断提高构建该课程的认识。
  (1)基于计算机学科形态的“计算机科学导论”的思想方法是抽象、理论、设计,而计算思维的本质是抽象与自动化,如何将学科形态与计算思维相融合,并充分发挥学科形态与计算思维在人才培养中的引导作用,是计算机学科引导性课程的核心,也是本课程的创新和突破点。
  (2)基于计算机学科体系的“计算机科学导论”不同于“大学计算机基础”,虽然它们都是计算机学科的入门课程,但课程性质完全不同。“大学计算机基础”是非计算机专业的公共基础课程,为专业课程服务,课程构建的实质是对计算机功能的工具性认识;而“计算机科学导论”是计算机类专业全程教学内容的引导性课程,课程构建的实质是寻求一种统一的思想来认知计算机学科,即站在学科的高度对计算机学科进行科学化和系统化的描述,并注重学科发展的动态性和知识传授的有效性。由于计算思维是运用计算机科学的基础概念求解问题、设计系统和理解人类行为的科学方法,将计算思维融入计算机学科的知识体系中,会极大地加深对计算机科学及其学科的认识。
  (3)作为计算机学科的引导课程,应承担起一种“承前启后”的作用。所谓“承前”,就是介绍计算机的形成与发展历程,让学生了解计算机学科的内涵及其来龙去脉,并从中受到启迪;所谓“启后”,就是描述计算机学科的知识体系,让学生懂得应该掌握哪些知识、具备什么样的知识结构和能力,以便在学习过程中明确目标,把握现在,放眼未来。
  (4)作为计算机学科的通识课程,应涵盖计算机学科教育的各个方面。通过本课程的学       习,透视学科体系、展示学术魅力、掌握学习方法、培养计算思维、传承计算文化、弘扬科学精神、激发拼搏意识,燃起探索热情。
  随着对该课程教学研究与探索的深入,围绕“教什么”和“怎样教”以及“计算思维”与“学科形态”内在关联等问题,我们不断更新课程建设理念,不断调整课程知识结构,不断寻求突破与创新,构建计算机科学与计算思维相融合的课程体系。本书就是上述思想的具体体现,并力图实现如下教学目标。
  (1)抓住实质,体现导论课程内涵。作为导论课程,应充分体现“导”与“论”的真实内涵。
  所谓“导”,就是站在学科的高度俯瞰计算机学科全貌,引导学生全面了解计算机学科的知识体系、学科形态、科学方法、根本问题、经典问题等,而不是深入探讨分支细节,避免“只见树木,不见森林”。许多具体问题可以“知其然,不知其所以然”,详细内容在后续相关课程中讨论。
  所谓“论”,就是基于学科形态的方法论。本书以“计算机学科是一门计算的学科,计算机系统是一个离散化系统,计算机方法是一种形式化方法”作为计算机学科方法论的立足点和着力点。
  计算机学科方法论是本课程的核心。事实上,教会学生某一知识或技术远不如教会学生掌握分析问题和解决问题的方法重要,正所谓“授人以鱼,不如授人以渔”。这既是“计算机科学与计算思维导论”与“大学计算机基础”及其他课程的本质区别所在,也是本书(本课程)的教学目标所在。
  (2)创新结构,构建计算思维体系。本书以计算思维为引导,以学科形态为纽带,以能力培养为目标,创新性地构建了计算思维方法与计算学科形态相融合的知识体系。这样,既体现了计算思维与学科形态在课程教学中的引导作用,又为学生创造了更多计算思维的实践机会,着实培养学生运用计算思维分析问题、解决问题的方法和能力。构建本课程知识体系的指导思想是体现学科基础特性、突出科学思维方法、涵盖学科知识主领域的“进阶式-模块化”知识体系结构。
  基本概念(第1~3章):计算机科学概述,计算机学科体系,计算思维及其作用体现;
  基本方法(第4~7章):数据表示的基本思维,计算系统的基本思维,程序设计的基本思维,算法构建的基本思维;
  基本技术(第8~10章):数据库技术,计算机网络技术,计算机前沿技术。
  因而,本书结构新颖、层次分明、由浅入深、循序渐进、逻辑性强、远近兼顾、便教便学。
  (3)启迪思维,揭示计算学科特性。本书力图通过计算机的形成与发展,揭开计算机科学的神秘面纱;通过硬件子系统与操作系统管理相结合,揭示计算系统的工作机制;通过数据表示、计算系统、程序设计、算法构建,揭示计算思维的本质——抽象与自动化;通过数据库技术、网络技术及新技术应用,揭示计算学科的形态——抽象、理论、设计。从而使得思维随着知识的贯通而形成,能力随着思维的形成而提高,并通过深入分析与比较,使学生认识到构建计算思维本质与计算学科形态的目标是一致的,其宗旨是寻找通用的方法,处理类似的问题。以此启迪学生去科学思考,为日后在专业领域中能有所发现、有所突破、有所创新奠定基础。
  (4)问题引导,激发学生求知欲望。本课程的重要意义是使学生对计算机学科的各知识领域产生浓厚的学习兴趣和强烈的求知欲,同时又有太多的疑惑和不理解,非常渴望了解其中的科学道理,这是学好本专业的源动力,正所谓“知之者不如好之者,好之者不如乐之者”。本书各章均以“问题引出”导入所要探讨的内容,使学生在学习过程中有的放矢,带着问题去寻找答案,怀着好奇心去探索奥秘,从而消除学习中的畏难情绪,调动学习的积极性,激发学习的创造性。
  (5)多措并举,强化全程能力培养。计算机学科的最大特点是知识面宽、实践性强、软硬件技术更新换代快,所以既要重视理论学习能力的培养,也要重视实践能力的培养,更要重视自我提高能力的培养。为此,还编写了与本书配套的《计算机科学与计算思维导论学习辅导》,其中包含实验指导的内容,形成融理论教学、学习辅导和实验指导三位一体的教学环境,从而使学生在潜移默化中意识到能力培养的全面性、知识更新的重要性、自我提升的必要性。
  总之,无论是课程建设理念,还是知识结构;无论是教学内容,还是思维方法,都力求体现创新性、规范性、先进性和示范性,并在传授知识的同时,弘扬中华文化对人类社会发展的贡献。
  教材是课程建设的真实体现,先进的课程建设理念和设计思想,最终需要通过教材来组织与实施。同时,教材是课程教学的基本依据,是教学研究、探索和改革的载体,它容纳了教学目标和教学内容,明确了教学过程和教学方法,体现了教学理念和教学思想。因此,合理定位本课程的教学内容,形成科学的知识体系和稳定的知识结构,使之成为重要的引导性课程,是“计算机科学导论”课程教学改革的主要目标;根据课程的作用、地位和特点,以计算思维能力培养为切入点,是深化该课程教学改革、提高课程品质和教学效果的重要任务。本书是将教学研究、课程建设与能力培养相结合的具体体现,也是作者多年来探索课程教学改革与人才培养的结晶。
  本书由李云峰、李婷和丁红梅编著,李云峰负责统稿,姚波、曹守富等老师参与了课程资源的建设工作。
  在本书的编写过程中,参阅了大量近年来出版的国内外同类优秀教材,并从中吸取了大量宝贵营养,在此谨向这些著作者表示衷心感谢!
  由于本书在教学思想、知识体系、内容组织等方面都是一种新的探索,因此难免存在疏漏、不妥甚至错误之处,敬请读者批评指正。
  
  作  者????
  2023年1月

- II -
计算机科学与计算思维导论

- III -
前??言