APP下载

程序设计基础课程混合式教学模式改革的研究与实践

2021-08-23王娟孔宇彦黄培泉谭明超

现代计算机 2021年20期
关键词:C语言程序设计程序

王娟,孔宇彦,黄培泉,谭明超

(1.广东工贸职业技术学院,计算机与信息工程学院,广州510510;2.中国人民解放军75839部队,广州)

0 引言

《程序设计基础》是面向高职院校计算机软件专业的大一新生开设的专业基础课程,主要用以培养学生程序设计能力,为后续的专业课程和以后的软件开发奠定基础。在引入数字化教学平台之前,课程教学模式是传统的以老师为中心进行教学内容讲授和实验教学指导相结合的方式,这种模式以教师为主体,学生处于被动地位,忽视了学生学习的主动性、积极性和创造性,与高职院校对人才培养要求中学生应具备独立自学能力和较强的创新能力的要求是不相符合的,因此,改变传统教学模式,在教学过程中突出学生主体地位,激发学生的学习积极性,以有效提高课程教学效果,达到人才培养目标就变得十分必要。

1 程序设计基础课教学中存在的问题

《程序设计基础》课程采用C语言作为教学语言,教学过程中主要存在以下问题:

(1)教学内容多与课时不够的矛盾。程序设计是理论和实践相结合的课程,C语言本身涵盖知识内容多,基本语法知识包含了丰富的数据类型、运算符和表达式,程序结构中的选择结构和循环结构又分别对应了多种实现语句,而数组、函数、指针等内容的难度对于高职的大一新生难度较大,但是总课时数只有60学时,这样便导致授课内容的深度和难度受到很大限制,课堂教学中仅能讲授重点知识,学生不能深入全面地完成课程理论知识的学习。

(2)学生计算机基础知识薄弱。课程面向刚入学的大一新生,高中阶段的信息技术课往往被主课挤占,多数学生信息技术基础薄弱,计算机基础理论知识(如:计算机中数据的表示、存储等方面的知识)普遍缺乏,学生的知识储备不能满足程序设计课程先导知识需要,如果在有限的学时中再补充这些知识,将严重影响教学的进度。

(3)学生学习水平差异大。高职学生生源种类多,既有普通高中毕业生又有中职学生,学生的入学基础和学习能力差异很大,有的吃不饱,有的消化不了,统一的授课模式很难兼顾到每一个学生的需要,必然影响教学效果。

(4)学生的主动思考和创新能力差。传统教学模式中,学生往往被动接受知识,缺乏自主学习和主动思考的机会,对知识往往死记硬背,不能将知识转换为自己的能力,没有达到教学的最终目标。

2 混合式教学改革模式概述

混合式教学是要把传统学习方式的优势和数字化或网络化学习的优势结合起来;也就是说,既要发挥教师引导、启发、监控教学过程的主导作用,又要充分体现学生作为学习过程主体的主动性、积极性与创造性[1]。

本着以“教师为主导、学生为主体”的教学理念,利用数字化在线课程平台,程序设计基础课程采取线下课堂教学和线上教学相结合的新型教学模式,重新规划教学单元、确定教学目标、教学内容、教学资源,细化每一个教学单元的课前、课中和课后教师的教学活动和学生的学习活动,并对教学效果进行评价反馈,及时调整教学方式方法,以获取最佳的教学效果。

3 程序设计基础课程混合教学实施

课程采用“课前(线上)—课中(线下)—课后(线上)”混合教学模式,如图1所示。学生课前通过在线导学设计文档、思维学习导图、微视频、教学PPT等方式自主学习先导知识、预习本单元内容,课中通过提问、案例教学、随堂练习、学生试讲、实验指导等方式学习掌握本单元知识,课后通过提交作业、在线测试、论坛讨论、单元小结、拓展提高环节对知识掌握情况进行检测、分析、总结和提高。

图1 程序设计基础混合教学模式

3.1 课前导学设计文档示例

教学单元1程序设计和C语言导学设计

课内外学时分配:

课内(线下:课堂+实验):3学时

课外(线上):0.5学时

课前教学视频:

【视频】C程序的输入、编辑和运行

自主学习任务单设计:

(1)子单元1:什么是计算机程序

达成目标1:通过教师提出问题、学生思考回答问题、教师点评分析的方式,学生理解计算机的概念、计算机程序的作用,能够用自己的语言解释什么是计算机程序。

学习形式:

【讨论1】什么是计算机?

【讨论2】什么是计算机程序?

(2)子单元2:什么是计算机语言

学习任务:

【PPT课件】计算机语言的发展

【PPT课件】编译程序

达成目标1:通过学习在线教学课件,学生了解计算机语言的发展阶段,能够区分机器语言、符号语言和高级语言。

达成目标2:通过学习在线教学课件,学生理解源程序、编译程序和目标程序的关系,能够用自己的语言解释编译程序的作用。

学习形式:

【讨论3】高级语言与低级语言的区别?

【测试1】选择题和判断题若干

(3)子单元3:C语言的发展

学习任务:

【资料1】C语言的发展过程

达成目标1:通过在线学习平台中的相关文档资料,学生了解C语言的发展过程,能够大致介绍C语言的来源和发展变化过程。

(4)子单元4:最简单的C语言程序

达成目标1:通过教师课堂的案例教学,学生熟悉简单C语言程序的基本结构,能够阅读并大致解释简单C语言程序的功能。

达成目标2:通过教师课堂的案例教学,学生熟悉C语言程序结构的特点,能够描述一个C语言程序的执行过程及各个组成部分的含义。

学习形式:

【案例1】用C程序输出:This is a C program

【案例2】用C程序求两个整数之和。

【案例3】用函数实现求两个整数中的较大者。

【任务1】分析给定C程序的功能

(5)子单元5:运行C程序的步骤与方法

学习任务:

【视频】C程序的输入、编辑和运行

达成目标1:通过观看教师课堂上的演示操作,学生掌握C程序的编译和运行过程,能够实际操作完成简单C程序的编译和执行。

学习形式:

【案例4】输入并运行一个简单的、正确的C程序。

【任务2】输入并运行一个自己编写的C程序。

【作业1】输入并运行教材中给定程序,并分析程序运行结果。

【作业2】运行一个自己编写的程序,输入3个数,输出其中的最大值。

3.2 课中线下教学示例

3.2.1 提问式教学

当理论课堂上讲授的内容比较繁杂和枯燥的时候,学生很容易走神或犯困,这时候可以适当地通过课堂提问的方式,将走神的学生拉回课堂,集中精力认真听课,同时能让学生由被动学习变主动思考,积极参与到课堂教学活动中。而且通过学生的回答了解学生的知识掌握情况,特别是在答错的时候,要引导学生找到错误的原因,这样能对这一知识点和与之相关的知识点理解地更透彻,掌握地更牢固。

比如,在介绍到scanf函数的使用时,对于数值型数据的输入和字符型数据的输入很容易混淆,通过操作演示scanf(”%c%c%c”,&c1,&c2,&c3);和scanf(”%d%d%d”,&c1,&c2,&c3);对比,学生知道字符输入不可以有空格回车等字符,数值输入则需要通过空格回车等字符来分隔。了解到这个知识后,学生并不一定能真正理解并正确使用,此时再引入综合性的例子scanf("%d%c%f%c",&a,&b,&c,&d);。讲解前,先向学生提问:“如果输入1234a123o.26,会如何赋值?”a学生回答:“1234赋值给d,后面不知道”,老师提示:“接下来是字符a,对应的格式声明符是c,该如何赋值?”接着b同学回答:“1234赋值给变量a,字符a赋值给变量b,123赋值给变量c,o赋值给变量d”。这样便解决了赋值的问题,接着还可以在此基础上复习printf函数的输出格式。继续提问:“那如果执行printf("%d%c%f%c",a,b,c,d);会输出什么结果?和输入一致吗?”,c学生回答:“应该一致吧”,继续提示“注意格式声 明 符,d、c、f的 区 别”,老 师 演 示 输 出1234a123.000000o,再提问:“哪里不一致?为什么?”,此时大部分学生都能意识到浮点型数字输出时要规定小数部分应该是6位。这样既解决了scanf字符和数值输入的问题,又巩固了printf中的格式声明符的区别。最后,还可以在此基础上留课后作业,进一步加强理解和巩固。

3.2.2 案例教学

程序设计基础课程涉及到的程序语法知识非常多且不易理解,采用案例教学即可将很多的理论知识融入的案例中,又有趣味能激发学生的学习兴趣。本课程大部分的理论知识都是通过案例来讲授的,特别是一些经典的、有趣的或者实用的案例比如猴子吃桃、百钱白鸡、素数的判断、密码的翻译、各种排序算法等等。

3.2.3 任务驱动

在教学的过程中针对学生的实际水平和教学内容,给学生布置一些熟悉的相对容易一点的题目,把知识点融入到任务中,比如完成圆的周长和面积计算的任务既展示了程序的顺序结构又包含了符号常量和变量的定义使用、表达式的计算。通过完成相关任务,学生就很容易入门,不但掌握了相关的知识,还可以继续扩展到求平方的函数的使用、输入函数和输出函数的使用,由浅入深,层层推进学生也获得了满足感和成就感。

3.2.4 学生试讲

在教学过程中选取部分非难点的重点内容,对学生来说比较容易理解又能够表达出来的知识点或者案例布置给学生,让学生提前预习,自己制作PPT,到讲台上当一回老师,也就是“教中学”,接受其他同学的提问和评分,最后老师进行点评。这个方法比较适用于一些基础较好,善于表达的学生,他们通常比较踊跃;而对于基础差一些,不太愿意表达的学生,则以引导鼓励为主,不必强迫。这种教学形式锻炼学生的语言组织表达能力和应变能力的同时也加深了学生对知识的理解和掌握。

3.3 课后线上自主学习活动

3.3.1 在线作业

结合每个学习单元的教学内容,布置在线作业以加强对知识的理解、巩固和运用,每次的作业都会评出优秀作业供大家参考学习,起到激励学生的作用。

3.3.2 在线测试题

通过在线测试测试本单元学生掌握知识的情况,测试完针对学生存在问题及时进行讲解,使学生发现问题所在,及时更正并掌握一些重点难点的问题。

3.3.3 论坛讨论

每个学习单元围绕某个知识点发布讨论话题,大家通过发表不同的观点看法,互相交流的过程中更好的理解和掌握相关知识点。

3.3.4 单元小结

每一单元结束,都给出本单元的知识总结,归纳总结所学知识,便于学生理顺思路,抓住重点,使知识系统化。

3.3.5 拓展知识

课后拓展一方面是补充一些与课程相关的作为了解的知识,例如C语言的发展历史;另一方面是有限的课堂时间不可能讲解地很详细很完备的知识,例如算法的表示、printf()函数输出格式详解等。这些拓展知识主要是有利于学有余力的同学进一步拓宽知识面,进行更深入的学习。

4 混合式教学实践效果评价

程序设计基础课程混合教学改革在2019级新生进行了试行,结合“课前(线上)—课中(线下)—课后(线上)”各个教学环节要求和课程总体教学目标,确定学生的课程考核成绩组成情况为:自主学习情况10%+在线测试20%+在线作业20%+期末闭卷机考50%。其中,自主学习情况根据学生在平台上参与论坛讨论、文档阅读、PPT预览、观看微课视频、在线学习时长的综合情况给分。与传统教学模式课程考核成绩组成(平时成绩30%+期末闭卷机考70%)相比较,混合式教学考核方式多样,改变了主要依据最后期末考试成绩进行评定的方式,要求学生从课程伊始就要积极参与线上线下的教学活动,认真完成每一次测试和作业,体现了学习过程和学习结果同等重要的理念[2]。

从19级学生的课堂教学表现来看,灵活多变的教学方式吸引了更多的学生积极主动地参与到课堂教学活动中,而在线教学平台中丰富的教学资源能满足不同层次学生的学习需要,对提高学生的自主学习能力有一定的促进作用。混合式教学方式方法的满意度调查结果显示:满意占35.54%、基本满意占35.19%、中立占29.27%、不满意占3.83%。在混合式教学的初次探索和实践过程中,得到了大多数同学的肯定和认可,当然还有部分同学未能很好地适应新的教学模式,这需要在接下来的教学中,进一步完善教学方式方法,细化教学内容,划分不同层次以更好地适应不同学生的需求,取得更好的教学效果。

猜你喜欢

C语言程序设计程序
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
医学专业“Python程序设计”课程教学改革总结与思考
“C语言程序设计”课程混合教学探索
给Windows添加程序快速切换栏
试论我国未决羁押程序的立法完善
基于C语言的计算机软件编程技术探究
中职C语言单片机课堂教学中的趣味性探讨
“程序猿”的生活什么样