地方高校面向新工科的计算机系统能力培养实践与思考
2021-04-29贾晓强刘军
贾晓强, 刘军
(渭南师范学院 计算机学院, 陕西 渭南 714099)
0 引言
ACM/IEEE最新公布的计算机专业教学调整方案[1]的重点是进一步强调系统知识和系统能力的培养,目的是让学生具备计算机系统认知、分析、设计和实现能力,CMU、MIT等学校系统能力培养基础课程比重较大,系统能力培养贯穿本科几乎所有学期。
根据OBE(Outcomes-based Education)的理念和工程教育认证[2]的标准,新工科形势下,要求计算机专业的学生具有计算科学的创新思维能力、复杂计算系统的设计能力、跨多学科知识的交叉能力和领域快速变化的适应能力。在四种能力中,系统能力占到75%。包括系统认知、系统设计、系统开发和系统应用能力。而计算机专业是新工科中改革的重头戏。计算科学的创新思维能力、复杂计算系统的设计能力、跨多学科知识的交叉能力和领域快速变化的适应能力都是以系统能力为基础的,所以在新工科形势下,系统能力的培养对计算机类专业起着决定性的作用。
1 地方高校计算机专业系统能力培养中存在的问题
(1) 课程体系[3-7]层面存在的问题
课程体系中,虽然开设有计算导论课程,但是课程缺乏软硬件之间贯通的衔接,从系统角度来看,各个章节内容相互独立,缺乏系统性。
重知识,轻能力。课程知识之间关联性关注不够,导致软、硬分家;课程与课程分家;课程与实验分家,有很多知识断层,缺少对计算机系统的整体认识。
对系统设计和应用能力培养的整体考虑比较欠缺,实践内容相互独立、难度小,解决问题规模小,缺乏挑战性。
学生几乎没有时间自我学习。(以软件工程为例,4年修171个学分,2 200小时左右的课堂时间;网络工程专业,4年修175个学分,2 652小时左右的课堂时间;计算机科学与技术专业,4年修181个学分,2 512小时左右的课堂时间)
有些系统类的课程由于受课时的制约或者其他因素的影响,如有些学校的计算机系统结构,在实际培养计划中用别的课代替或置换。
注重单机系统训练,对于新兴的并行与分布式系统关注较少。
缺少可计算理论等专业数学或理论计算机科学类课程,专业数学仅有离散数学。
缺乏软硬件贯通的实践方案和实验平台,学生缺乏这方面的训练。
(2) 现有教学方式和评价体系存在的问题
教师教学理念与教学方式相比国内一流大学存在一些差距,学生评价体系中对系统能力培养关注度不够,统一的教学目标和考核标准,无法个性化培养和因材施教。
虽然有些课程采用线上线下混合式教学,但学完课程后,没有要求学生对课程内容提炼总结,没有明确地将考核的学分与课程的某些内容或章节挂钩,导致学生对线上学习的主动性不是很强甚至不学,各门课程独立规划,独立教学,造成知识体系中知识点冗余和衔接关系脱节。
设计性、综合性的教学实践较少,系统性实验手段缺乏,只在课程设计和毕业设计中有综合性的要求,学生实践动手能力较差,几乎没有实现过一个OS、一个CPU、一个编译器。
2 面向新工科贯穿式系统能力培养实践
新工科形势下,进行系统能力培养[8-9]是因为我国计算机产业的发展,对计算机专业人才的需求发生了变化,高等学校的计算机专业对人才的定位有了提升,学生个人的成长空间也有了大幅扩展。渭南师范学院的培养方案从以下几个方面展开。
2.1 以学生为中心的系统能力解读
以学生为中心从教学观念、课程体系和改革教学方法等几个方面落实系统能力培养要求,如图1所示。
图1 以学生为中心的系统能力培养模式解读(出自哈尔滨工业大学刘宏伟老师)
有些实验条件达不到系统能力要求的,建议实行校企合作或购买租赁实验平台的方式。
2.2 以系统发展观为主线的计算机专业课程群知识体系优化
(1) 课程体系中增加一门计算机系统基础课,学校可以根据实际需要选购教材,比如采用南京大学袁春风教授编写的“计算机系统基础”,让学生从单元到整体有一个完整的概念。
(2) 对于程序设计课程、数据结构在原有的基础上可以采用线上线下混合式教学,对于计算机系统基础、计算机组成和数字逻辑需要对实验内容和实验手段进行修改、完善,以便于让学生更容易地理解像操作系统、编译原理等后续的课程,对于操作系统、编译原理的课程实验要以计算机硬件系统为基础(渭南师范学院采用北京航空航天大学开发的可裁剪的、可扩展的实验平台)。
(3) 讲授数字逻辑、组成原理、操作系统和编译原理的老师要明确哪些知识点在哪门课程中讲比较好,要讲深、讲透。如“中断”的概念建议放在组成原理中讲解;存储器部分放在操作系统讲解;CPU线路图放在数字逻辑中讲解,避免重复讲授,注重课程之间的关联。
(4) 建立软硬件贯通的实验平台,实验中通过横向、纵向贯穿,强化学生的系统能力培养。
2.3 完善系统培养主线
(1) 在以前的基础上增加暑期小学期和大学分工程强化训练。一是围绕应用型人才培养目标,加大设计性实验课程比重,引入创业创新教育课程,构建“基础实验基地、专业实验训练、创新训练培养、学科竞赛加强、实习实践体验、毕业设计提升”的实践教学体系,提升学生的创新创业和社会适应能力。二是充分考虑实践教学[10-11]与理论教学的比例关系,加大实验实践环节的比重(比如物联网工程从原来的“3+1”课时变为“2+2”课时),从时间上保证实践教学在人才培养过程中的重要作用。三是以社会需求为导向,设计综合性实验的比重,强化实习实践教学环节和项目实训,培养主线,如图2所示。
图2 渭南师范学院系统能力培养主线
(2) 将系统能力培养的课程分成3 个层次讲授。计算机系统基础课程培养计算机基础系统能力,通过重组内容的核心课程培养设计和开发计算机领域的专门系统培养计算机领域系统能力;通过不同平台的应用课程培养计算机应用系统能力,不具备开课条件的共享兄弟院校的MOOC课程资源或租赁实验平台[12],结合工程认证,构建系统能力培养课程群,做好课程之间的衔接。
第一层次,通过学习 C语言程序设计、数字逻辑电路和计算机系统基础,明确符号化思维、程序思维、算法思维和机器思维,在不涉及具体机器的情况下,程序是如何被执行的,让学生学会“理解机器工作过程”。
第二层次,从理解程序执行的角度学习计算机组成原理、计算机操作系统(Windows+Linux)、编译技术/原理、计算机系统结构、汇编语言和完整的软硬件系统的协同训练,明白高级语言的要素如何被映射成汇编语言在机器上执行,理解机器结构。
第三层次,通过学习嵌入式计算系统、网络系统和数据库技术,理解典型计算系统的分析与设计,从编程视角和系统视角打通软硬件之间的壁垒,如图3所示。
图3 系统能力培养课程双向分层
2.4 实施循序渐进、贯通迭代培养模式
在3个层次的每一层次,都有能力迭代要求。一年级经过计算机系统导论和高级语言的学习,明确符号化思维、程序思维、算法思维和机器思维,理解程序如何被机器执行;二年级通过完整的软硬件系统的协同训练,从理解程序执行的角度,学习计算机组成、操作系统和汇编语言,达到阅读机器,理解机器结构;三年级在各门专业课中融入典型的计算系统的分析与设计,尝试实现可执行程序的机器;四年级通过专业实习和项目训练强化系统实现。
从建立系统观—形成系统开发能力—系统设计能力,培养学生从形成计算思维—程序理解—系统理解—达到灵活应用的能力要求[13-14]。
2.5 健全教学质量评价与考核机制
从软件开发和系统两个层面的能力考核图,如图4、图5所示。
图4 软件开发层面的能力考核图
图5 系统层面的能力考核图
重构和优化专业核心课程体系,在培养学生系统认知能力基础上,提高学生软硬件协同分析、设计、实现和应用能力。通过考核确定是否达标。在实践教学考核中,注重对学生系统分析问题、系统设计能力的考核,侧重对学生综合实践能力和项目设计能力的评价,关注学生设计、分析和研究能力的提高。完善教学质量评价与考核机制,从软件开发层面到系统层面,建立与工程教育专业认证统一的系统能力考核标准。
3 构建软硬件协同、互相贯穿、逐层强化的实践教学体系
将系统能力分解为基础能力、专业能力、拓展能力和综合能力,形成软硬贯通[15]的实践教学体系,如图6所示。
图6 软硬件之间贯通的实践教学体系
基础能力主要通过计算机系统基础(南京大学袁春风教授主编)来培养高级语言程序设计(C语言)、数字逻辑与课程设计和面向对象程序设计(C++)等课程培养学生的计算机基本思维模式、符号化思维、程序思维、机器思维和算法思维,让学生理解程序如何在机器上执行。
专业能力与自主创新能力分软件和硬件两部分。
硬件部分通过计算机组成实验与课程设计,掌握计算机基本组成,形成简单CPU设计与实现的技能;通过微机接口与汇编实验,理解计算机接口和X86应用小系统的设计与实现;通过嵌入式系统实验,掌握嵌入式系统模块的设计与实现能力。
软件部分通过数据结构实验与课程设计,掌握基于数据结构分析、小型应用程序的设计能力;通过编译原理实验与课程设计,掌握系统软件的词法分析器、语法分析器的设计与实现;通过操作系统实验与课程设计,掌握系统模块中操作系统部分模块的设计与实现能力;通过数据库课程实验与课程设计,掌握软件查询、数据存储模块的设计与实现。
在所有软硬件课程的基础上,通过典型的计算系统的设计与实现、企业项目植入、暑期小学期、学科竞赛和参与教师项目等形式提升专业能力和自主创新能力。在专业能力、自主创新能力的基础上,通过计算机系统综合课程设计、毕业设计、生产见习和实习,强化系统综合能力。
4 加强师资队伍建设
鼓励教师定期参加教育部主办的系统能力培养的培训和导教班,提高自身的修养,涉及到系统能力课程的老师要相互协商,找准系统类课程之间的衔接点;鼓励教师到企业挂职锻炼,提高教师队伍中双师型教师的比例,将系统能力培养落到实处;参加全国高校系统能力竞赛,进一步调动教师和学生的积极性,以赛促学,以赛促教。
5 开放专业实验室
开放专业实验室,如网络攻防实验室、虚拟现实实验室、物联网实验室或网络工程实验室等可以考虑向本院学生开放,引导学生自主实验,进一步激发他们的探究精神,为系统能力培养奠定良好的基础。
6 校企合作联合培养
渭南师范学院计算机学院已经与北京千峰、北京新大陆、达内集团、蓝桥软件学院、中软国际、云间科技和传智博客等企业开展产学联合培养模式[16],具体作法如下。
(1) 构建全学段多层次实践教学体系
按照工科认证的标准,形成 “验证实验+综合实验+课程设计+专业见习+专业实训+专业实习+毕业设计”的多层次实践教学体系。构建一年级体验、二年级见习、三年级实训、四年级实习的实践教学全学段不间断模式,从三年级开始引入企业实训课程,强化和细化实践教学环节,将学到的知识、技能转换为能力。
(2) 实施校企合作、一线工程师进课堂
在新的教学计划中实施企业课程嵌入、教师学生进企业的“校企合作”实践教学过程,探索“微课程”“微实训”“微实习”和企业推荐就业模式。
(3) 以工科认证为导向、以项目为基础,产教融合培养学生的系统能力
用工科认证的标准来指导系统能力培养,通过暑期小学期和企业深度实习,企业工程师和教师共同指导毕业设计来提高学生的项目研发能力,在大三的第二学期实施产教融合项目:1+X 高级职业技能教育试点(智能传感、工业机器人、云计算平台运维与开发),增强学生的就业竞争力。
7 总结
在新工科背景下,做计算机系统能力培养,要喜新不厌旧,教学实践证明了好的做法要坚持,不好的要完善,注重思考能力和软件系统思维的培养,加强实践,加强个性化培养。积极推进高校、企业、学术/教育团体协作,共同建设系统能力培养的教育生态。对地方高校而言,仍然存在一定的困难和问题,期望在工程教育的引导下,结合自己的实际情况,继续向国内外知名高校和教指委学习改革的新思路和新方法,研究课程体系和教学内容,形成适合自己的软硬件贯通的实践教学体系,探索服务地方的新模式。