王宗侠,韩德强
(北京工业大学 信息学部,北京 100124)
数字逻辑实验是高校计算机相关专业本科生的实践类必修课,是计算机组成原理、微型计算机接口技术、计算机体系结构,甚至是编译原理和操作系统等课程实践环节开展的基础和保障。在国家重视高等教育实践教学工作[1-3]的大背景下,在就业形势的倒逼下,夯实基础、培养系统思维、具备前瞻视野,成为了数字逻辑实验课教学中必须要考虑的问题。
以项目为驱动,就是从系统[4-5]的角度认识和设计基础实验,打破传统的碎片化实验组织方式,使相对独立的多个基础实验从系统角度构成一个有机整体,要求学生站在系统的高度设计各模块电路,最终完成一个完整的小项目。
要以一个项目串联起整门课程内容,项目的选取至关重要,所选取的项目至少要具备以下特点。
1)项目要有综合性。
此处主要是指内容方面,项目涉及的知识要较好地覆盖课程实践教学大纲的内容,包括典型的组合电路:译码器、数据选择器和加法器等的分析和设计;典型的时序电路:锁存器及触发器、计数/定时器、移位寄存器等的分析和设计;也可涉及有限状态机的思想[6]。
项目的知识覆盖情况要靠指导教师来把握,要求指导教师具有丰富的设计经验和分析设计能力,帮助学生把好关。
2)项目要有趣味性。
课程中所选取的项目要接近学生的生活,或是学生比较了解的东西,这样可以降低认知门槛,使学生专注于设计内容本身而无需做过多的需求分析。此外,亲手实现一个习以为常的产品,不仅可以使学生获得极大的成就感,还可以激发学习兴趣,诱发创造热情,为后续课程的学习打好思想基础。
3)项目要有可扩展性。
所选取的项目应能满足不同层次学生的需求。对于知识和能力一般的学生,最终可以得到一个完整的设计作品;而对于能力较强的学生,该项目的功能或性能也应具有可扩展的空间,使学生的潜力能被充分挖掘和发挥。
4)项目难度要适中。
作为计算机系统结构课程群的第一门实践课,数字逻辑实验内容比较基础、简单,否则易使刚刚入门的学生产生畏难情绪,不利于之后专业的学习和教学活动的开展。这就要求所选取的项目结构不宜太复杂,确保学生经过学习和研究完全可以胜任。
满足以上特点的小项目很多,计算器、数字钟和保险箱等都是不错的选择。当然一门课可以提供多个项目供学生自由选择,这样的差异化处理更能满足不同学生的兴趣,扩展了课堂广度和学生的认知维度,达到1+1>2 的效果。
以项目“整型算术计算器”为例,实验的具体实施过程[7-8]如下。
这种具有开放性的题目,但知识覆盖明确的实践课程对指导教师的备课有非常高的要求。教师备课主要需要做以下工作。
1)联系数字逻辑理论课和学生实践基础,按照实践课程大纲之规定,明确实验需要覆盖的知识范围[9-10]。
数字逻辑实验的知识覆盖范围见表1。关于各电路模块,指导教师应准备短小精悍的串讲型小视频,带学生回顾理论课所学,同时提供完成该实践所需的其他文档资料、扩展材料和参考教材等内容,所提供的材料力争与理论教学紧密联系,高度提炼、切忌冗繁,同时又侧重知识的应用,能启发思路。
表1 数字逻辑实验的知识覆盖范围
2)确定学生需要掌握的实验技能,建立与知识的联系,细化落实步骤。
具体而言,数字逻辑实验至少要求学生掌握:一款EDA 软件的操作方法和使用流程;电路的仿真方法;会看波形图;会看电路原理图;简单电路的调试方法;系统的分析和设计方法等。以上实验技能分步骤由简至难逐步落实在各个模块电路的实现中,如仿真方法的学习可以从简单的波形文件输入法逐渐过渡到硬件描述语言的仿真文件输入法。以上技术也可按专题准备讲解小视频或操作指南,材料应具备很强的可操作性。
3)确定备选项目,逐一分析,模块化,画出系统框图,然后设计电路,最后对电路进行调试验证。
在布置给学生之前,指导教师要先行实现,一方面可以进一步验证设计的可行性,亦能提前发现备课前两个阶段工作中存在的问题或可改进的方面。
以整型算术计算器项目为例,可以得到其框图如图1 所示。
图1 整型算术计算器系统框图
系统包括输入电路、运算电路和输出电路,将各部分进一步细化,可以得到详细的模块框图,如图2 所示。
图2 整型算术计算器模块框图
至此,得到了由表1 中的电路模块搭建而成的整型算术计算器的电路框图,定义各模块的输入输出端口,然后逐一实现并验证,即可完成项目设计。指导教师需要像整型算术计算器那样实现所有的备选项目。
4)电路模块加密打包。
为了使学生体验到如何从系统的角度设计和调试电路,实验前指导教师要提供给学生实现的电路,在实验过程中要求学生用自己设计的模块电路替换指导教师提供的电路,最终完全用自己的电路实现项目。
要将已实现的电路提供给学生,以便于其从项目整体功能的角度调试模块电路,但又不能让学生看到各模块的具体实现方法,限制学生的思路,因而需要按模块对电路进行加密。然后将加密好的子模块和调用子模块的顶层设计文件一起打包好提供给学生。
借鉴翻转课堂[11-12]的思想,充分调动学生的主动性,将学生变为实践的主体。课前一周布置预习任务,提供一个模块电路的视频和文档资料,帮助学生复习理论课知识,同时提供该实验应掌握的实验技能小视频或其他资料,然后自己设计或描述模块电路,进行仿真验证。预习过程中要求学生详细记录自己的思考和遇到的问题,为课上讨论做好准备。同时,上网查阅资料,提出该模块电路的一个应用场景。
指导教师是实验课堂的组织者,把控课堂节奏,营造舒适、积极的讨论氛围,激起同学们的参与热情,脑、手共用是指导老师的主要职责。作为课前预习的承接和延续,实验课堂主要包括以下环节。
(1)收集预习过程中提出的问题,每小组1~2 个,汇总出共性或典型问题。先在小组内讨论,然后每组就其中一个问题汇报讨论成果,全班讨论,最后教师进行总结。对于预习中提出的个性化问题,指导教师在下一环节进行过程中一对一交流。以上过程鼓励学生用实验手段去证明自己的论点,充分发挥实践课的优势。
(2)教师提出课程设计任务:将课前所设计的基本电路模块进行改造,用其替换所选项目的系统电路框图(指导教师提供给学生)中对应的模块,进行系统功能测试,验证设计的正确性。通过这个过程,训练学生站在系统的高度理解各部分电路的定义和其在系统中所发挥的作用。
仍以整型算术计算器为例,在“加法器”实验中,学生已在课前实现了一个4 位的BCD 加法器,课上可要求学生进行位扩展,将输入输出端口修改为与图2(b)中“算术运算单元”相兼容的格式。对于能力强的同学,可以建议他们增加减法、乘法和除法运算。
(3)设计验收。当堂逐组检查设计结果,要求学生在硬件平台上展示实验结果,并能正确解释实验现象。鼓励学生尝试“意外”输入,并对现象进行解释,培养全面、发散、好奇、勇于尝试和心细如发的实践品德。
经过课前和课上两个环节,学生已达到知识和技能要求,但要将整个过程内化为学生的思维方式和能力,还需要重视课后的总结,总结的结果以实验报告的方式呈现出来。
总结要注重整体性。从实验任务的提出,得出解决思路、设计电路、验证电路、遇到的困惑、解决的过程、最终的结论和衍生的思考等将整个环节组织串联起来,有逻辑地一一呈现,展现一个完整的过程。
总结要有侧重点。若只注重整体性而没有侧重点,实验报告很可能沦为流水账,事无巨细,既增加了学生负担,也弱化了其总结和自省作用。因而,可建议学生侧重于一两个问题去总结自己的实践过程。
总结格式要规范。总结是训练学生文档整理能力的主要环节。作为低年级的实践课,需要教会学生如何有逻辑且格式规范地整理文档,一般会向学生提供统一的参考模板。模板会按照一般行文逻辑进行章节划分,规定字体、字号,段落格式,图表规范等。
总结要及时。要求学生养成实验后立即总结的习惯,在所有操作记忆和理解未模糊或消失前及时总结,会使该环节的效果达到最好。
对学生实验情况的评价[13-14]按实验分环节进行。由于数字逻辑实验侧重基本电路模块的设计,因此过程性评价占主导,实验成绩较大比重放在其上;由于应用翻转课堂思想的实验课更强调学生的课前预习,因此预习环节占总成绩的比重较传统实验课较高。总结起来,建议按表2 所示的比例划分。
表2 实验成绩评定
在以上形成性评价的基础上,再结合最终系统的功能和运行情况给出本门课程的总结性评价结果。
基于典型项目的数字逻辑实验课程实施方法将传统的碎片化的模块实验通过一个项目串联为一个有机整体,使学生不仅学会各电路模块的设计方法,而且对它们的应用有较深入的理解。实验实施过程借鉴了翻转课堂的思想,充分发挥了学生的主观能动性,最大限度地让学生成为设计的主人。与传统的“由分到总”(即先学习模块电路的设计方法,然后进行系统综合)的实验方式相比较,这种以项目驱动的实验组织方式将系统(全局)的思想贯穿在每一次实验中。与传统的实验课[15]先设计“积木块”,然后再看用这些零件搭个什么出来不同,项目驱动的实验一开始便非常明确系统的设计目标,每一个子模块的设计都在为总目标的达成服务,这种整体与部分、宏观与微观的深度结合,使得系统思维和实现能力双提高的课程目标更易于达成。翻转的实验实施过程从时间和空间上扩展了课堂维度,为后续课程的学习和实践打下了较好的基础。