前言
计算思维被认为是与理论思维、实验思维并列的第3种思维模式,是“互联网+”、大数据和人工智能时代所有人都应具备的一种思维模式。近些年来,国家推行了一系列信息技术引领的行动计划,如“‘互联网+’行动计划”“新一代人工智能发展规划”等,这些计划的关键和基础是要培养一批具有“互联网+”思维、“大数据”思维和“人工智能”思维的人才,这种思维本质上都是一种计算思维。这种思维,既不能狭义地理解为“各种计算机硬件/软件的应用”,也不能狭义地理解为“计算机语言程序设计训练”,它其实是解决社会、自然问题的一种思维方式。例如,计算机管理“磁盘”所使用的“化整为零、还零为整”思维,对如何进行现实中不同性能资源(如物流仓储配送中的资源)的高效管理具有指导意义;管理“程序执行”的“分工—合作—协同”思维,对现实中管理和执行宏观任务也是有借鉴作用的。因此,计算思维对培养既有宏观协调能力又有微观精细化执行能力的新时代人才有重要的意义。2015地平线报告指出“强调计算思维教育,可以帮助学习者解读真实世界的系统并解决全球范围的复杂问题”,这应该是计算思维教育的终极目的之一。
在这种背景下,各高等学校都开设了“大学计算机”课程,要求各学科各专业的学生都要学习这门课程。那么,“大学计算机”应该是一门什么样的课程呢?它应是面向大学低年级学生开设的,与“大学数学”“大学物理”有一样地位的技术型通识类思维教育课程。它不应只是讲授计算机及其软件(如Office、Access、IE等)使用的课程,也不应是仅仅训练学生程序设计能力的课程,它应是讲授每个大学生都应具备的计算思维的课程。大学生创造性思维的培养离不开计算思维的培养,互联网公司(如阿里巴巴、Facebook、Apple、腾讯等)的成功应归属于计算思维运用的成功。当前,国家正在大力推动新工科建设,其中一个重要方面就是强调“各学科+计算机”,其根本应是“各学科+计算思维”。
那么,又应如何学习“大学计算机”课程呢?我认为,应更多地强调“思维”,而不应仅着眼于“知识”(即事实的学习)。你可以不知道“计算思维”的定义,那仅是概念,但你应该知道“符号化—计算化—自动化”,你应该知道“计算系统与程序的关系”,你应该知道“程序是如何被机器自动执行的”……这些都是体现计算思维的直观例子。以潜移默化的方式理解和接受计算思维,是把握和学习本门课程最重要的方式。举个例子,中医里讲究“穴位”,不同的穴位连接起来就是“脉络”,不同的脉络在临床诊断时有不同的意义,这是中医的基本认识。但即使你知道了脉络,为什么还不能治病呢?这是因为你没有能力让气息在脉络间流动。要做到这点,就需要长期训练。因此,知识好比是“穴位”,而一年级时学习“大学计算机”课程,好比是在学习“脉络”,你要熟悉这些“脉络”,然后才能进行“诊断”。当你经过若干年的不断努力,深入理解了知识,能将知识融会贯通时,你就能将思维转变成能力——运用计算思维的能力。
本书从最基本的“计算”讲起,从“计算+”讲到“大数据+”“互联网+”,覆盖了计算学科经典的、重要的计算思维,并从学习者的角度组织教学内容:首先,站在学科高度,凝练教学内容,提取重点之重点,以精练的语言进行讲述;然后,通过大量的、丰富的示例题目,引导读者对教学内容进行渐进式的、有一定深度的探索;最后,将教学内容转换成不同深度的示例题目,在场景、练习、模拟中,实现对教学内容不同深度的理解,进而达成“不仅是了解计算思维,而且能够理解和运用计算思维”的目标。同时,作者在中国大学MOOC等平台开设有“大学计算机——计算思维导论”和“计算机专业导论”慕课课程,读者可参考并学习。
本书适合各类专业的大学本科生学习(建议在大学一年级学习)。考虑到教学进度和学生接受程度,总学时安排48学时为宜(不含实验学时)。如果非计算机专业不再开设高级语言程序设计课程,则需增加实验,需分配64学时;如果还有高级语言程序设计课程,则建议本课程不含实验,因为实验会涉及很多细节性内容,在学时有限的情况下会影响对计算思维的理解,学校可依据实际情况,结合表中给出的内容与学时建议进行调整和设置。另外,书中标记“扩展学习”的内容,可作为课程的延伸内容,由教师引导,学生自主学习。
学时安排表
续表
本书得到教育部高等学校大学计算机课程教学指导委员会的大力支持,在此表示感谢。在本书编写过程中,很多学校的一线教师提出了很好的建议,在此对他们表示感谢。另外,感谢哈尔滨工业大学本科生院、计算机学院,湖北工业大学计算机学院对本书编写和出版工作所给予的大力支持。
“大学计算机”是一门发展中的课程,教材中的内容难免有不完善之处,敬请广大读者谅解,并诚挚地欢迎读者提出宝贵建议。
作者
2018年5月1日