OBE 理念下程序设计基础教学实践研究

2024-06-26 11:57熊启军程格平
电脑知识与技术 2024年13期
关键词:教学实践研究

熊启军 程格平

摘要:针对程序设计基础这一计算机专业核心基础课程,大力推行课前基于MOOC或SPOC的自主学习,课中的实例演示、类比、启发、翻转式教学,课后积分和拓展式的练习、测试、竞赛、项目、论文等,这种“三课”联动的教学模式真正实现了以学生为主体、以成果为导向的OBE教学理念,实现了基础、应用、拓展、创新的教学常态,从而提高课程目标达成度。

关键词:OBE;程序设计基础;教学实践;研究

中图分类号:G642 文献标识码:A

文章编号:1009-3044(2024)13-0162-04 开放科学(资源服务)标识码(OSID) :

0 引言

OBE(Outcomes-based Education) 教学理念最早出现于美国和澳大利亚的基础教育改革,流行于20世纪80年代到90年代早期的美国教育界[1];国内最早的OBE文献出现在2003年,文中提出了OBE理念包含两个目标、三个假设和四个原则的观点[2]。

近年,随着MOOC和SPOC教学的普及、线上线下混合式教学的开展,特别是工程教育认证的兴起,OBE理念越来越受到各级各类学校的重视,这些教学模式再融合“三全育人五育并举”、思想政治教育等,则能更好地诠释新工科、服务于“两性一度”,有益于修订和完善课程的教学方案、专业的人才培养目标和学校的办学定位和特色,有利于创建一流课程、一流专业、一流大学。

1 课程教学方案变迁

程序设计基础课程是计算机专业的核心基础课程。其学习习惯和方法、学习效率和效果对后续课程、专业学习、专业发展、就业和择业存有直接关联甚至决定性作用。其课程内容既有程序设计的基本理论,又有计算机操作的实践技能,其理论与实践两者刚柔并济、相辅相成、缺一不可。

因此,程序设计基础课程的教学设计和实施尤为重要。其教学方案在设计时可能存在多种选择:如课程所选用的教学编程语言是C、C++、Java或Python,课程性质设定为学位课还是非学位课,开课学期是大一的上学期还是下学期,课程学时及内容安排是分一个学期还是两个学期(分段教学),授课是一师一班、还是一师多班或多师一班,授课方式是线上线下混合式教学还是仅线下教学,作业或实验报告是电子稿还是纸质稿,考核方式是纸质试卷还是无纸化机考,课程考核总评成绩中各部分所占比例等。

目前,湖北文理学院的程序设计基础是以C语言为教学语言,讲述程序设计所涉及的基本概念、基本算法、程序设计方法以及程序调试技能等;实现从数学思维向程序思维、函数思维、计算思维的转变;为后续的数据结构、面向对象程序设计等课程做铺垫。 程序设计基础设定为学位课、开课时间是在大一的第二学期、实行一师一班线上线下混合式教学、在PTA平台进行无纸化实验(刷题)和机考,且在课程结束后开设时长为2周的程序设计课程设计,以加深和巩固程序设计知识和技能的综合应用。

程序设计基础的教学,整体上以OBE教学理念为核心,以理论够用、重在实践为准则,融于双育人为特色。

2 基于OBE 的教学设计

2.1 设计课程目标

程序设计基础以教授为课程组组长、以副教授和高级实验员为成员构成强力课程团队,以OBE理念为核心开展课程的教学、建设和研究。

制定基于OBE的课程教学方案,从OBE理念角度看待教学目标,课程目标-毕业要求关系矩阵如表1 所示。

从双育人角度看待课程的目标分类、具体内容和实现途径,如表2所示。

2.2 实现课程目标

OBE教学理念强调人人都能成功,强调个性化评定,强调精熟,强调绩效责任,强调能力本位[3]。基于此,通过以下6方面实现课程目标。

1) 课前自主学习。依托学校与超星公司合作的网络教学平台,程序设计基础课程组建立了线上SPOC课程,内容包括文本的知识点及目标、SPOC视频、章节测试题、思考讨论题等。学生可通过电脑端(网页)或手机端(学习通)实现碎片式预习、问答、自测等,通过在线自主学习可预习相关知识的基本概念和原理,为课堂有的放矢、更深入地学习提供基础;教师可以随时查看班级整体和个体的学习进度、学习效果,也可以与学生进行交流互动;平台具体的统计分析功能包括:章节学习次数、章节测验、成绩管理、教学预警、课堂活动、课程积分、作业统计、考试统计等,通过这些数据便于针对整体和个体开展监督性、个性化教学。

平台内容上还提供参考教材和他校的SPOC或MOOC网址,以适合个体的个性化自主性学习。

课前自主学习成绩将作为课程总评成绩的重要组成部分。

2) 课中混合式教学。课堂教学是当前我国大学教学的主要手段。在课堂教学中针对学情、知识点的不同实施不同的教学方法,整体呈现多种教学方法混杂融合的特点。

在介绍C语言程序框架时,主要使用讲授法、演示法以及对比法,强调主函数main原型的标准格式,也指出不同编译器允许main原型可变的差异性;在讲授IDE 的使用方法时,主要使用演示法、SPOC 视频(便于学生课外更详细地对照练习);在讲述程序编译语法错误时主要使用实例法,通过故意设置错误,引导学生根据错误信息来定位错误位置;针对学生阅读英文的困难,提示其根据英文单词的构词规则、特殊词语来确定错误性质,从而快捷地进行错误修正。

在讲述选择结构、循环结构程序设计时,强调程序代码严格按照缩进格式进行书写;一题多解时,强调不同算法的共同点和具体代码的差异性;在理解代码段功能时,强调“三动”学习法[4];在讲述基本算法时,强调一般规律,如求和、乘积、计数、模运算、假设等。

在讲述查找、排序时,注重用一句话概括不同算法的本质及其精髓;在讲述函数、结构体时,强调抽象和概括能力、模块化思维和全局观念,还可以适时融入课程思政。

在程序设计基础的课堂教学过程中,实例演示法贯穿始末,不仅能使学生跟随教师现场思考、编程,还能检查和监督错误、交流互动,从而提升学生的参与度、活跃课堂气氛。

常用的教学方法还有启发式、递进式、翻转式教学,如在讲述了使用switch-case语句、模运算实现“某年某月某日星期几”之后,提出“依照三天打鱼两天晒网的规则,判断某年某月某日渔夫在干啥”问题;讲述了整数分离和重组后,引申出“数学黑洞”问题;讲述了“约瑟夫环”问题后,变化出“猴子选大王”“红黑球的放置”问题;讲述了“斐波那契(Fibonacci) 数列”后,将其应用到“爬楼梯”问题等。从而引导学生去寻找问题的雏形、达到举一反三的效果。这些方法的应用、这些实例的演绎既有知识性又有趣味性更有应用性和拓展性。

3) 课后创新性教学。在大学扩招、普及高等教育、重视思政教育以及综合素质等多方面因素的影响下,很多课程的课内学时都被压减,学生必须自主增加课外学时。像前面的衍生题、拓展题都需要学生在课外完成,通过大量的课外练习来巩固相关知识点,熟能生巧、举一反三、推陈出新,可以诞生一些创新性的解题算法。如“将百分制成绩转换成五级制成绩”

通常的算法是使用嵌套的if-else或者switch-case来实现,更加短小精悍的算法则是使用字符串常量、模运算、哈希存储来实现,具体算法如下:

char* Level="ABCDE";

scanf("%d",&score);

if(score>=90) printf("%c\n",Level[0]);

else if(score<60)printf("%c\n",Level[4]);

else printf("%c\n",Level[9-score/10]);

上面的算法还可以精简,主要是改变字符串常量描述的等级代号,即将100分所属等级添加进字符串常量中。具体算法如下:

char* Level="AABCDE";

scanf("%d",&score);

if(score<60)printf("%c\n",Level[5]);

else printf("%c\n",Level[10-score/10]);

还可以对字符串常量进行补充、扩展,从而消除if-else语句,通过“以空间换时间”的思维来进一步精简算法。详细算法如下:

char* Level="AABCDEEEEEE";

scanf("%d",&score);

printf("%c\n",Level[10-score/10];

上面使用三种方式解答同一问题,既体现了知识的灵活应用、也展现了不同算法的效率、更展示了前后知识的融会贯通、灵活应用。

这三个算法虽然都使用了字符串常量、模运算、简单的哈希存储、但层层深入、逐步递进、算法精简,既体现了知识的综合应用、一题多解,又将哈希存储与后续的“数据结构”课程联系起来了。这既是知识的前瞻性铺垫也是知识的拓展性应用。

4) 增加专题讲座。对于大一学生来说,存在多方面的因素影响程序设计能力的提升:一是以前基本没有接触过编程,对他们来说是一门崭新的学科,可谓“万事开头难”;二是程序设计算法虽源于数学、但又能照搬数学,存在着从数学思维向编程思维的转变,而思维模式可能需要较长时间来适应、模仿和转变;三是大学的学习方式与中学不同,大学阶段强调学习的自主性和自律性,而不是监督式或压迫式学习;四是专业课课内学时普遍缩减,需要学生管理和利用好课外时间。这些问题都需时间、练习来解决,增加课外学时、开展专题知识讲座是非常必要的。依据学情和教学进度设计了5个专题讲座,如表3所示。

专题讲座选用典型例题以讲授法和演示法为主进行教学,且录制成视频、上传到学校网络教学平台以供学生学习。

专题讲座既弥补了课内学时的不足,又对课堂知识进行了必要的补充和拓展,还加强了课程之间的关联(如近似计算与高等数学中泰勒公式、导数与切线斜率的关系),可谓一举多得。

5) 增设课程设计。程序设计基础课程所涉及的知识点多、繁、杂,学生普遍存在“三难”,即难学、难用、难创[5]。一般来说,教学重点放在基本控制结构、数组和函数,而结构体和结构体指针则是教学的中的难点和非重点,但是,程序设计基础课程的难点在后续的“数据结构”中成为基础技能甚至是每日必用知识。因此,“课程设计”应运而生,其目的是巩固基础、解决难点,也是为了解决课程间的衔接问题、知识应用的问题,以及顺势来“创”。

“课程设计”的题目常选用耳熟能详的游戏设计、信息管理系统设计,其囊括的知识包括数据抽象组织和存储(数据类型定义)、文本菜单设计(循环)、功能实现(函数)、数据存储(文件),可谓是对知识掌握程度和综合应用能力的检验。课程设计常采用项目式教学,学生分角色、团队合作完成,从而体现出既合作又独立、既展现团队协作精神又充分发挥学生个性化特色。

对于优秀的课程设计,经教师指导、反复打磨,申报大学生创新项目或者撰写成论文发表到相关的专业期刊上。

6) 竞赛和创新成果。教师多次参与CPEC(中国计算机实践教育学术会议)实验案例设计竞赛并获奖,加强了校际的交流。教师鼓励和指导学生参加大众化竞赛——蓝桥杯全国软件和信息技术专业人才大赛,近几年获得省级奖和国家级决赛奖的人次不断增多,也说明了OBE教学理念对教学效果的提高作用;也鼓励和资助不同年级学生组队参加“CCF CAT-全国算法精英大赛”,取得铜奖和银奖、晋级决赛圈的成绩。

上述6 个方面的措施较好地解决了“3W1H”问题。

教学方案的设计和实施立足于基本知识点,强调知识的融会贯通、思维拓展和引导应用。在课程设计中指导学生将有价值的创新算法设计投稿到专业性杂志发表。

2.3 检验课程目标

1) 课程考核方式。课程的考核主要有三种方式:①传统考核方式。是指课外练习、实验及报告、课堂过程性评价、期末纸质试卷考试等,这些传统的考核方式仍发挥着重要的、主要的作用;②PTA平台。即程序设计类实验辅助教学平台,它是一个自动化考试系统,它将人工检验代码的正确性交给计算机来完成,使得教师从阅读学生的代码这一繁重体力劳动中解放出来,而专注于编制高质量的题目。教师既可以从PTA平台的试题库中选择具有代表性的题目,也可以自编试题,再分门别类、分层次梯度组织题库,最后组织学生在该平台上练习、参加比赛等。OJ平台是学生程序设计能力提升的重要练兵场;③报告。在学期中、学期末组织学生开展自查、自纠、自省、自强的总结性报告撰写。它既是阶段性学习的回顾、反思,也是唤醒“躺平”、激励奋斗的檄文,同时也是锻炼和提高学生写作能力的一种方式,因为部分大学生的写作能力、编辑排版能力实在不堪入目。微信公众号“书圈”上有一篇文章——两教授吐槽:研究生的中文论文写作水平为何如此堪忧[6],研究生的写作水平尚且如此糟糕,在校本科生的写作水平可想而知。所以,大学生在校期间必须经常练练笔,不能只会百度、复制、粘贴。

2) 课程目标达成度。经过几年的摸索、改革和实践,OBE教学理念的应用日渐成熟,特别是近3年,课程目标达成度正稳步提升,图1是2019、2020、2021级学生该课程的目标达成度对比图。

3 结束语

教无定法、学无止境,适合的就是最好的。不断借鉴和吸收国内外先进教学理念,推陈出新、与时俱进才能不断进步。OBE教学理念解决了教学目标的确立、实施和检验,但学习的主体是学生,如何提高学生的自觉、自律、自主能力是当前教学工作的最大障碍也是持续的研究热点。

参考文献:

[1] Spady W G,Marshall K G. Beyond Traditional Outcome-based Education[J]. Educational Leadership,1991(2):65-74.

[2] 姜波. OBE:以结果为基础的教育[J]. 外国教育研究,2003,30(3):35-37.

[3] 高教国培. 什么是OBE教育理念?如何利用成果导向教学[EB/OL]. https://www. sohu. com/a/399642574_120492088.

[4] 熊启军,程格平,屈俊峰,等. 基于五导法的程序设计课程群教学研究与实践[J]. 计算机教育,2017(5):89-91.

[5] 熊启军. C语言程序设计:微课版[M]. 北京:中国铁道出版社,2019.

[6] 书圈. 两教授吐槽:研究生的中文论文写作水平为何如此堪忧[EB/OL]. https://mp.weixin.qq.com/s/2EC8V89bO-TR8B 8llxxx7w.

【通联编辑:王力】

基金项目:湖北省教育科学规划2021 年度重点课题(2021GA050) ;“新能源汽车与智慧交通”湖北省优势特色学科群资助

猜你喜欢
教学实践研究
FMS与YBT相关性的实证研究
2020年国内翻译研究述评
辽代千人邑研究述论
视错觉在平面设计中的应用与研究
EMA伺服控制系统研究
新版C-NCAP侧面碰撞假人损伤研究
基于三维软件和云班课APP的机械设计课程教学实践
中职职业生涯规划课程的教学反思
中职计算机应用课程教学改革与反思
浅论高中化学生活化教学的实践与思考