APP下载

以计算思维能力为导向的硬件课程体系建设

2017-09-01贺莲龚奕利蔡朝晖刘树波

计算机教育 2017年8期
关键词:计算思维

贺莲+龚奕利+蔡朝晖+刘树波

摘 要:培养动手实践能力是硬件教学的重点之一,但在实际的硬件课程学习过程中,学生普遍存在兴趣低、知识点应用性不足等问题。文章提出对原有硬件课程体系进行改进,增加计算机系统基础课程,调整体系中各门课程的知识点结构与内容,将计算思维融入整个教学过程,从知识点在问题求解中的作用入手,引导学生建立系统观念,明确所学知识的实际用途,提高学生的学习兴趣。

关键词:计算机硬件课程体系;计算思维;系统概念

0 引 言

长期以来,培养和训练学生的动手实践能力一直是硬件教学的一个重点。在实际教学过程中,除了实验和课程设计之外,理论教学也非常重视对学生解决问题能力的引导。2006年3月,美国卡内基·梅隆大学计算机科学系主任周以真(Jeannette M. Wing)教授在美国计算机权威期刊《Communications of the ACM》上撰文描述了计算思维(computational thinking):计算思维是运用计算机科学的基本概念进行问题求解、系统设计和人类行为的理解。这篇文章从多个方面详细地解释了计算思维的含义,如对于间接寻址和过程调用,就既要了解其能力,又要明白使用它们的代价;而在评价一个程序时,不仅要考虑其准确性和效率,还要有美学方面的考量,对于系统的设计,则还要考虑简洁和优雅。文章认为计算思维是将一个看上去很困难的问题转换成能用已知方法求解的问题,这其中可能会用到简化、嵌入、变换或模拟等方法[1]。

以往的教学中比较强调知识点,而以计算思维为导向就意味着要教给学生知识点的根源所在,引导学生用已知的知识点解决新的问题。将计算思维贯彻到教学中是为提高学生的动手实践能力提供了一个具体、明确、操作性强的指导原则和方法[2-6]。

1 硬件课程体系架构

原有硬件课程体系的核心课程包括数字逻辑、计算机组成原理、接口技术、体系结构和嵌入式系统。在这样的教学培养方案下,学生对于为什么要学习硬件知识缺乏初步的感性认知,常常是为了学习而学习;同时,由于对硬件课程与软件课程之间的关系了解不充分,学习时通常会将两者割裂开,而无法建立统一的系统概念,对硬件课程缺乏学习兴趣。

在以计算思维为导向的新硬件课程体系中,首先可以增设计算机系统基础课程,主要讲授计算机系统底层的基本概念、系统的内在运作及其对程序运行性能的影响。这将使学生在深入学习计算机各组件之前能对计算机系统有一个总体的概念,并在后续专业课程的学习中保持住这种局部与整体的统一;同时,在这门前导课程中,教师还可提出很多与系统软件功能和应用程序性能直接相关的问题,并提示学生在后续课程中会讲授新的知识,以解决这些问题。

其次,可以按照认知规律与知识演进过程重新安排课程时间:数字逻辑课程的授课时间为一年级下学期,组成原理课程安排在二年级上学期,接口技术安排在二年级下学期,体系结构安排在三年级上学期,嵌入式系统安排在三年级下学期。计算机系统基础、数字逻辑和计算机组成原理为专业基础课,接口技术、体系结构和嵌入式系统为专业课。

最后,为了突出课程之间的关联性和连接性,可以重新安排教学内容和教学重点。系统基础概述计算机系统的整体概念,提出系统设计的核心问题;数字逻辑包含数字系统分析与设计的基本知识和基本理论;组成原理主要是使学生理解单处理器计算机系统中各部件的内部工作原理、组成结构以及相互连接方式;接口技术是对组成原理的扩展,讲授计算机系统各部件之间以及系统与外设之间的连接;嵌入式系统主要围绕ARM9架构,从51单片机入门逐渐过渡到ARM的体系结构及基本的ARM编程,讲授嵌入式系统的基本设计原理及开发方法;体系结构则从组织和结构的角度学习、领会计算机系统,研究如何更好地对计算机系统的软、硬件功能进行功能分配与实现,提高系统的性价比。

新课程体系在内容安排上融合了计算思维,在理论教学的同时注重对学生动手实践能力的培养。由于计算机系统是一个整体,各课程之间不可避免地存在内容重叠,因此在划分具体内容时,我们坚持3个原则:①根据课程大纲进行选择,尽量减少与其他课程内容重复的部分;②对于重叠知识点,根据不同课程的特点与教学要求区分层次和重点;③强调课程知识点间的衔接,连接各知识点形成网状知识结构。

以存储系统的学习过程为例,表1展示了6门课程中与存储系统相关的知识点。从表1可以发现,不同课程之间存在相同的知识点,但是这些知识点在不同课程中的难易度、深度和侧重点是有差异的,这种差异体现了计算机硬件体系概念形成过程的自身特点以及人类的认知规律。

2 计算思维在教学内容中的体现

在原来的教学过程中,教师往往将重点放在知识点本身,着重讲授知识点的内涵以及该知识点对某个部件的意义,对于掌握该知识点在解决实际问题时起到的作用则关注较少。对此,我们在构建硬件课程体系时进行了一些调整:首先说明知识点能解决什么问题,然后通过不同课程的学习逐步加深对知识点的理解,以达到最终解答问题的目的。在实际授课过程中,配合每门课程的主要内容,将实际问题细化分解到各门课程,让学生带着问题学习,知道课程知识能解决哪些问题,这些问题对实际的计算机应用又会产生怎样的影响。教师可以存储子系统的教学过程为例阐明这个思路,如图1所示。

2.1 提出問题——计算机系统基础课程

计算机系统基础课程介绍存储系统的层次结构,从寄存器到海量存储器,以及每一层在计算机系统中所处的位置,如寄存器在CPU中,位于整个层次结构的顶端;内存位于高速缓存和硬盘之间。一方面,这使学生对各种存储部件和整体的存储系统能有初步的认识;另一方面,该课程从程序员的角度介绍存储系统对程序性能的影响,还能让学生了解到学习这部分内容后对程序编写和优化的作用。这时可以提出一个问题:如何实现一个成本低、效率高、性能优的存储系统。带着这个问题,对相关知识点的教学就从大框架转为组件,从应用层跳转到底层细节,逐步明确存储系统的功能、对程序性能的影响以及这些功能和影响是如何实现的;从数字逻辑课程的存储元逻辑结构逐渐延伸到体系结构课程的存储系统优化,实现一个完整且连贯的知识学习与知识运用过程。

2.2 系统基础元器件——数字逻辑课程

数字逻辑课程从逻辑设计的角度介绍硬件设计的基本单元,如定时器、选择器、触发器等的结构、特征和应用,电路分析、设计及测试原理和工具,这些是设计和构成存储器的必要基础。这里提出并解决的问题是怎样用元件组成一个存储阵列。

2.3 系统部件——计算机组成课程

组成原理课程详细解释了寄存器、Cache、内存、硬盘和磁盘的工作原理,以及由不同存储器构成的存储器层次结构。学生重点掌握存储器的基本结构、地址格式、地址变换以及相互之间地址的映射、数据在不同层次存储器之间如何调度。在这门课程中,学生对知识的理解从元件上升到部件,从存储元上升到存储器。这里提出并解决的问题是不同层次的存储器如何工作,它们之间如何形成一个完整且工作正常的存储系统。

2.4 系统连接——微机系统与接口技术课程

接口技术课程中存储器子系统的重点放在微处理器中存储器地址空间的硬件组织、内存与主机系统的连接,并介绍典型机型的存储子系统,使学生对知识点的理解开始从组件向整体过渡。这里提出并解决的问题是存储系统如何与主机系统连接。

2.5 系统整体与优化——计算机体系结构课程与嵌入式课程

体系结构课程从系统整体的角度详细说明了Cache的各种优化方式及其对系统性能的影响、数据在系统中的一致性问题及其解决方法等。这门课程着重强调部件与系统的关系,要让学生意识到对部件的改进不仅仅影响该部件本身,还会影响整个系统;此外,改进不一定会带来预期效果,因此还需要考虑一种改进方式的可行性。这里提出并解决的问题是怎样才能基于系统整体性能的提升来优化存储系统。

嵌入式系统课程则主要说明嵌入式系统中的存储系统,它与组成原理和体系结构课程一起涵盖了目前最普遍的3种架构MIPS、Intel和ARM,拓宽了学生的知识面,使得学生能在这些主流架构中灵活运用学到的知识。

当学生完成这些课程的学习后,就能对存储系统形成一个完整且连续的认识,不仅知道存储器、存储系统是什么,还知道每层存储器是如何工作,又是怎样形成一个系统的,以及如何在这样一个系统中定位一个问题并找到解决该问题的方法。也就是说,经过硬件课程体系的学习后,学生能够自行构建一个存储层次结构,以回答最初在计算机系统基础课程中提出的问题:如何实现一个成本低、效率高、性能优的存储系统。

3 结 语

按照对学生能力培养的要求,依据多年的教学实践,结合计算机硬件技术的发展现状,我们对计算机硬件课程系列进行了调整和改进,不仅添加了新课程,而且重新梳理了课程内容以及课程间知识的关联,形成了新的硬件课程体系。通过该体系的教学,学生的学习和掌握过程更加连续、平滑:从元件到组件、从局部到系统、从单一课程中的知识点理论到实际应用问题求解,将计算思维渗透到教学过程中,也渗透到学生对知识的掌握中。

从关注知识点本身,到关注如何运用知识点解决问题,这是我们进行新硬件课程体系构建的初衷。长期以来,学生在学习硬件课程之后常常会产生一个疑问:学习这门课究竟有什么用?当他们实际工作后,又会发现在解决很多编程和程序优化问题时,都需要用到之前学习过的硬件知识。这种认知上的矛盾,恰好反映出硬件教学中存在的一个难点:在大部分毕业生都从事与软件相关工作的现实情况下,硬件课程教学应怎样加强与实际问题求解之间的联系。计算思维为此提供了一个很好的思路,以问题为导向,让学生带着明确的求解任务学习硬件知识。下一步工作中,我们将着眼于完善课程体系的实验系统,以期达到既加深学生对课程内容的理解,又训练其解决实际问题能力的目的。

参考文献:

[1] Wing J M. Computational thinking[J]. Communications of the ACM, 2006, 49(3): 33-35.

[2] 冯博琴. 对于计算思维能力培养“落地”问题的探讨[J]. 中国大学教学, 2012(9): 6-9.

[3] 李志圣, 邢振祥, 唐国峰. 計算机基础教学中计算思维能力培养的标准化研究[J]. 计算机教育, 2016(6): 34-37.

[4] 龚沛曾, 杨志强, 朱君波, 等. 以计算思维为切入点的计算机基础课程联动改革与实践[J]. 中国大学教学, 2015(11): 53-56.

[5] 王大鹏, 王续琨, 刘德山, 等. 以计算思维为主线整合大学计算机通识课程[J]. 计算机教育, 2016(9): 95-98.

[6] 沈华, 张明武. 以计算思维为中心的数据结构教学方法探讨[J]. 计算机教育, 2016(10): 145-148.

(编辑:宋文婷)

猜你喜欢

计算思维
高中信息技术课堂中计算思维能力培养问题的探讨
公安专业学生计算思维能力培养对策初探
基于计算思维的多媒体技术及应用课程教学模式研究
信管专业计算机科学概论课程的教学改革实践
基于计算思维的软件类研究生高级算法课程教学研究
基于计算思维程序设计的军事案例研究
程序设计课程中计算思维和应用能力培养问题研究
民族高校C语言程序设计课程教学改革的研究
算法的案例教学探析
浅谈艺术专业学生计算思维能力的培养