基于PBL的“计算机系统基础”课程教学改革探索
2023-05-30陈勇徐超
陈勇 徐超
摘 要:针对“计算机系统基础”课程的教学现状,文章分析了目前课程教学中存在的知识点零散、过度依赖程序设计语言、学生学习兴趣不高等问题,提出基于PBL的“计算机系统基础”课程教学改革,从问题选择、方案制定、技术点凝练、系统映射、方案优化5个方面阐述教学设计。同时,利用一个常规计算问题的求解,阐明该方法如何融入“计算机系统基础”课程的各知识点,使学生在典型问题求解过程中逐步提升学习兴趣,实现零基础构建计算机系统思维能力。
关键词:计算机系统;PBL;系统思维
中图分类号:G642 文献标识码:A 文章编号:1002-4107(2023)03-0090-03
为培养适应现代社会信息化需求的计算机专业人才,提升计算机专业学生的系统思维能力,“计算机系统基础”课程成为我国计算机专业系统能力培养的核心基础课程[1]。该课程是由卡内基梅隆大学的R. E.布赖恩特(R. E. Bryant)等人首先提出的,主要包括数据表示、机器级程序、存储系统、并行计算、网络等计算机系统的主要知识点及其相互之间的联系,以求从程序员的视角对计算机系统的整体架构进行阐述,让学生结合已有的编程语言知识构建计算机系统的整体观[2]。国内高校引入该课程后,主要面向本科低年级的学生开设,并对内容进行了本土化设计,在一定程度上提升了学生对计算机系统的整体认识[3-5]。但在课程讲授中,教师通常以单个知识点为重点,每个知识点采用独立的案例进行讲解,缺乏系统的整体性,对于计算机基础较薄弱的低年级学生构建完备的系统思维存在一定困难。
一、“计算机系统基础”课程教学问题分析
“计算机系统基础”课程的主要目标是培养学生的系统思维能力,建立扎实的计算机系统概念,并能够从系统层面分析程序调试、性能提升、程序移植和健壮性等方面的问题。然而,受课程内容、课时及学生接受能力的影响,该课程在实际教学过程中遇到了不少挑战。
首先,该课程是基于程序员视角组织教学内容,大部分高校以C语言为导入点,因此,学生对C语言的掌握程度直接影响该课程的学习效果。不少学生在大学以前并没有接触过程序设计,在C语言的学习过程中只是初步掌握,且课后相关练习并不充分。如果教师直接通过C语言程序设计中可能出现的问题引入相关知识点,学生的接受效果不一定理想。其次,大部分授课教师在组织该课程内容时,除第一章对整个计算机系统进行初步阐述外,后续内容基本是以数据表示、程序转换、存储系统等具体知识点为教学内容进行独立讲解,对于知识点之间的联系缺乏合理的衔接。例如,存储系统安排在程序优化之后,导致学生在学习优化时,不能理解与存储相關的优化,而基于存储系统的优化是程序优化的一个重要方面。最后,案例缺乏整体性。由于该课程涉及的内容比较基础,且面向本科低年级学生开设,因此为提升学生学习兴趣,不少教师在授课过程中采用了案例教学法。但这些案例通常是针对某个具体知识点进行单独设计,案例整体上并不连贯。例如,在介绍程序转换过程中,可能使用的是x86架构指令集的案例,但在解释指令流水线时,则使用MIPS或ARM架构指令集的案例。这容易使学生陷入计算机系统的某个具体知识点中,难以从整体上把握整个计算机系统,不利于学生系统思维的培养。
二、PBL教学法
PBL教学法是一种以问题为导向,以学生为中心,重点培养学生自主性和创造性的教学方法[6],已经成功应用于多学科的教学设计中[7-9]。它的基本过程如图1所示。首先,通过对实际场景进行分析,构建具体的项目或问题;然后,将学生分组,以小组为单位搜集资料,寻找解决问题的途径,制定相应的方案和计划;接着,各小组围绕制定的方案和计划,进一步分析实现过程中存在的问题,并搜寻相应的实践途径;最后,各小组进行思维碰撞,交流分享各自的方案及实践途径,并结合要解决的问题,进行反馈评价,有利于各小组之间优劣互补,在实践中成长。
PBL教学法围绕一个项目或问题,让学生有目的地逐步求解,其本身具有很强的系统性。因此,如果在“计算机系统基础”课程的教学中融入PBL教学法,利用单个实际问题的求解将计算机系统各部分的知识点串联起来,对于学生系统思维能力的提升具有较好的促进作用。
三、基于PBL的“计算机系统基础”课程教学设计
由于“计算机系统基础”课程的授课对象并不一定具有扎实的计算机系统知识,因此,要让学生在有限的课时内构建出完整的计算机系统解决方案并不现实。而且该课程的主要目标是培养学生形成整体的计算机系统思维能力,具体的实践细节并不是重点,因此,作者在应用PBL教学法时,进行了一些改进(图2)。其教学过程主要分为问题提出、方案制定、技术点凝练、系统映射、方案调优5个部分。
(一)问题提出
PBL教学法是根据学生已有的知识结构及课程目标,选择一个合适的问题供学生解决。“计算机系统基础”课程的授课对象是计算机相关专业本科低年级学生,学生对计算机系统的理解并不深入,而教学目标是让学生能够对计算机系统有整体的认知,并不是对某一方面有深入的理解。因此,教师在提出问题时,要遵循以下两个原则。
1.问题应足够简单,易于学生理解,尽量不要选择计算机领域中的专业问题。
2.问题的求解过程应能够覆盖计算机系统的主要知识点。
(二)方案制定
摒弃计算机概念,根据问题及限定条件,要求学生分组讨论,对问题逐层分解,制定可行的解决方案。
(三)技术点凝练
根据所制定的解决方案,凝练出实施过程中需要的技术点,为后续与计算机系统相关知识点的融合做准备。
(四)系统映射
根据讨论的基础解决方案,教师引导学生将其映射到计算机系统相应的组成部分,让学生自然地过渡到“计算机系统基础”的基本知识点。
(五)方案调优
通过新增条件等方式,对基础解决方案进行讨论,找出可能的优化措施,进而引入程序优化、操作系统、网络等更深层的计算机系统相关内容,逐步加深学生对现代计算机系统整体架构的理解。
四、方法实践
文章以一个基础的计算问题为例(图3),阐述如何基于本方法逐步融入计算机系统各层面的知识,引导学生自然地构建计算机系统思维。
1.问题提出:教师可以以一个较复杂的计算问题为出发点,如求解“12×8192+123.87/26”,让学生思考如何完成计算过程。
2.方案制定:针对该问题,最直观的解决方法可以分为3个步骤。
a.计算12×8192;
b.计算123.87/26;
c.将步骤a与步骤b的计算结果相加。
3.技术点凝练:根据具体步骤,凝练出基本的技术点。
(1)所有的数据和结果都通过笔记录到纸上,这里的纸是用来存放数据的,笔是用来将数据输入到系统的,因此需要考虑数据的存储和输入。
(2)在解决方案中,要计算的数据是通过“12”“123.87”等阿拉伯数字加上小数点等相关符号给出的,所以要考虑数据的表达。
(3)使用的乘法、除法和加法等运算都需要根据具体的运算规则来确定,因此还需要考虑运算过程的实现。
(4)这里的3个步骤是有顺序关系的,也就是步骤(1)和步骤(2)必须要在步骤(3)之前进行,因此还需要考虑如何组织计算的顺序。
(5)最终的结果教师必须能够获得,因此还需要考虑数据的输出问题。
4.系统映射:根据凝练的技术点,引申出对应的计算机系统相关知识点,进而结合案例讲解相关知识点。
(1)在技术点(1)中涉及利用纸来存储信息。教师可以借助纸的类比,如纸有记录内容的作用,进而展开阐述计算机系统的多层存储系统设计;对于使用的笔,教师将其类比为输入设备,进而展开介绍计算机系统中输入设备的相关内容。
(2)在技术点(2)中涉及的数据不仅有整数(12)、小数(123.87),也有“+”“×”“/”等非数值数据,因此在计算机中,对于数据的表达也需要支持这些相关内容,进而可以阐述在计算机中有关各类数据的表示及编码等。
(3)在技术点(3)中,由加、乘、除等基本运算的运算规则,可以引出计算机内部的运算器和控制器,进而讲解运算器和控制器如何相互配合,完成对应的运算。
(4)在技术点(4)中,由运算步骤的顺序安排,可以映射到程序的设计,阐述编程方式如何由二进制程序到汇编程序,再到高级编程语言的转变,进而扩展到编译器、汇编器、链接器等相关转换工具的设计与实现等。
(5)在技术点(5)中,根据结果输出的要求,可以直接映射到计算机系统的输出设备。
通过以上映射过程,冯诺依曼计算机系统的主要部门将自然地衔接在一起,让学生对计算机系统为什么这么设计,以及各部分基本的实现方式有整体的认识。
5.方案调优:增加一些额外的资源或者限制条件,对系统进行改进。
(1)增加一个人,将步骤a和步骤b同时计算,此时需要考虑两个步骤同时计算时的调度与协同,从而引出并行计算、操作系统等相关知识。
(2)增加移位运算的考虑,可以对步骤a的乘法进行优化,从而引出程序优化的相关知识。
(3)假设两个同时计算的人不在同一个地方,引出网络的相关内容。
通过这个计算问题的求解,可以将计算机系统的相关内容有机地联系在一起,实现教学内容和教学目标更好地融合。即使对程序设计不熟练的学生,也能够获得较好的学习效果,提升其系统思维能力。
文章针对目前“计算机系统基础”课程内容组织衔接性不强、对程序设计知识过渡依赖等问题,提出了基于PBL的问题导入式教学方法。首先,从学生易懂的基本问题出发,通过方案设计、技术点凝练、系统映射等步骤,让学生将自己熟知的解决方法与计算机系统的解决方案建立自然的连接,从而了解计算机系统各部分设计的由来,激发其求知欲,了解基础计算机系统的主要知识点及其关系。其次,通过增加额外资源等方式,对现代计算机系统中各种演变和优化措施进行解析,让学生能够由浅入深,实现零基础掌握计算机系统,提高学生对计算机系统的综合理解和运用能力。在未来的教学实践中,教师将进一步探索适用于零基础学生系统思维培养的“计算机系统基础”课程教学设计,以最大限度提升教学效果。
参考文献:
[1] 张为华,李弋,赵文耘.面向系统能力培养的“计算机系统基础”课程优化[J].计算机教育,2018(9):108.
[2] BRYANT R E, OHALLARON D R. Introducing Computer Systems from a Programmers Perspective[J].ACM SIGCSE Bulletin,2001,33(1):90.
[3] 王志英,周兴社,袁春风,等.计算机专业学生系统能力培养和系统课程体系设置研究[J].计算机教育,2013(9):6.
[4] 孙清,魏晋雁,李薇,等.财经类院校“计算机系统基础”课程教学探索及实践[J].软件导刊,2020,19(12):146.
[5] 边玲燕,史海涛.基于案例教学的“计算机系统基础”课程教学研究[J].科技与创新,2021(19):100.
[6] WOOD D F. Problem Based Learning[J]. Journal ofBritish Medicine,2003,326(7384):330.
[7] 余志远,冯宏杰,闫铭.PBL教学法在旅游管理专业研究生教学中的应用探索[J].高教学刊,2022,8(3):117.
[8] 张霞,韩义德,王锦霞,等.结合PBL课例的无机化学线下对分课堂教学设计与实践[J].化学教育(中英文),2022,43(2):44.
[9] 周琴,张九红,陈沈.PBL教学法在建筑物理实验教學中的应用[J].物理实验,2022,42(1):34.
编辑∕李梦迪
收稿日期:2022-03-15 修回日期:2022-04-05
作者简介:陈勇(1986—),男,湖南冷水江人,南京审计大学信息工程学院高级工程师,博士,研究方向:计算机系统结构、软件可靠性、大数据审计。
基金项目:2020年国家自然科学基金面上项目“区块链技术支撑下高可靠易追溯审计电子数据构建方法及应用研究”(71972102);2019年教育部人文社会科学规划基金项目“基于区块链技术的大数据审计探索性研究:原型设计、方法变革与实证分析”(19YJAZH100);2020年江苏省高等学校自然科学研究项目“基于归一化表示的自适应软件缺陷预测方法研究”(20KJB520026)