刘海燕 范云霞
[摘 要] “新工科”概念于2017年由教育部门明确提出,通过智能产业带动新一轮产业革命与科技革命,凸显出程序设计在工程领域具有的重要作用。通过对多年的教学经验进行总结指出线上线下交叉融合的一种教学方式,即“MOOC+微课+OJ”,通过对“C语言程序设计”课程的教学方法进行创新,根据实践可以得知,线上线下交叉融合的教学方法不仅可以增强学生学习的积极性与主动性,还能提高学生处理问题的能力,从而为计算机学科和其他学科的整合奠定良好的基础。
[关 键 词] C语言程序设计;交叉融合模式;新工科
[中图分类号] G642 [文献标志码] A [文章编号] 2096-0603(2021)03-0076-02
一、C语言程序设计课程教学现状
(一)教學过程中重理论轻应用
学生步入大学之后,学习的第一门程序设计课程就是C语言程序设计,该课程具有的特殊性质要求教师在教学过程中需要耗费大量的时间使学生快速适应计算机语言的逻辑思维,因为课时具有约束性的特征,教师在授课期间重视理论知识重要性的同时忽视了实践教学对学生造成的影响。
在教学过程中通过不断的实践积累经验,才会逐步构成理论,因此构成理论的知识通常都非常落后,学校利用多样化的方式可以把这些课程纳入学生的培养方案中,本质上要求学生跟随时代的脚步,事实上成为高预期低回报操作流程,因此从学校方面来看,当前还不能满足市场提出的要求,学生处于“毕业即失业”的状态。
(二)教学方式不科学
C语言程序设计的教学质量与教学效率会因为教学方式的落后大大降低。程序设计课程的教学内容实际上具有灵活性的特点,但是与其他学科相比而言比较抽象,课程内容之间具有密切联系,这就要求学生维持学习的连贯性,对学生的动手能力与逻辑思维能力带来了较大的考验。因为学生首次需要通过语言解除编程,接连几次就会降低学生的积极性与主动性,因此这就要求编程教师在为学生讲解期间创新教学方法,采用多样化的教学方式增强学生学习的积极性与主动性,最终实现良好的教学效果与学习效果。
二、交叉融合模式教学
(一)MOOC+微课
现如今,现代化信息技术的不断进步与发展,互联网技术在我国各个领域得到广泛应用,再加上在线教育模式的兴起,学生可以在不同的场所进行学习。MOOC具有多样化的优点,如教学资源丰富、学习时间自由、开放获取等,属于一种规模较大的开放型在线课程,能够为学生提供丰富的MOOC资源,以便于学生可以课前自主学习,促使学生熟练掌握C语言的基本语法知识。然而MOOC拥有优势的同时,还包括很多的劣势,如缺少个性化辅导、课程完成率不高以及检验方式单一等。所以这就要求在实际课堂中全面了解学生对C语言基本内容的掌握状况,与此同时还需要针对课程中学习的重点、难点等内容录制十分钟左右的视频,弥补MOOC学习存在的缺陷。教师在开展教学期间,(1)课程组需要进行详细挑选,然后为学生推荐中国大学MOOC国家精品课程在线平台上面的C语言精品课程,如此一来学生可以在上课之前进行预习;(2)C语言程序可根据课程中的教学难点、重点内容制作微视频,在视频中包含流程控制、数据种类、函数、指针等内容,接着放进校园的网站中,然后为学生提供相关知识。
经过对以上内容进行补充,教师可以获取较多的时间分析与抽取有关典型案例,使用计算思维中解决问题的思路,建立数学模型、数据结构以及设计算法策略,接着利用C语言进行计算,同时详细分析计算方法。学生经过持续编程实践,提高了使用程序设计方法处理复杂工程问题的能力。比如,解决下面的问题:假如有N盏灯(N<5000),将这些灯从1到N按照一定的顺序进行编号,开始时这些灯都处于打开的状态;同时有M个人(M是小于N的正整数),同样将这些人从1到M按照一定顺序编号。第一个人为1号,关闭所有的灯,第二个人为2号,打开编号为2倍数的灯,第三个人为3号,把编号为3倍数打开的灯关闭,关闭的灯打开。按照编号不断增加的顺序,之后的人都需要与3号一样,把自己倍数的灯进行反向处理。这个时候问题来了:在第M个人操作以后,哪几盏灯是关闭的,然后按照从小到大的顺序输出这些灯的编号,并且使用逗号进行区分。
这个问题的数学模型可以进行这样的描述:D={d1,d2,d3,…dN},在这个模型中,di是其中的一盏灯,数值可能是1或者0,如果是1表示为打开,0代表关闭,问题的答案是通过M个人根据自己的编号倍数对这些灯进行反向操作以后,哪些灯是关闭的,按照顺序输出灯的编号C={c1,c2,c3…},ci=0;在计算过程中能够采取遍历的方法,每个人都需要根据自己的编号倍数灯进行反向操作;数据结构可以使用数组,在这些数组中的a[1],a[2]…a[N]元素可以代表编号是1,2,…N灯所处的状态,这些元素的初始值是1。最终利用编程实现,主要程序代码是:
for(i=1;i<=M;i++)
for(j=1;j<=M;j++)
if(j%i==0)a[j]=!a[j]
在这个公式中,i代表的是每个人的编号;j表示每盏灯的编号,如果灯的编号是人编号的倍数,就需要对灯进行相反的处理。
最终按照一定的顺序将全部a[j]=0的灯编号j输出。虽然这个问题非常简单,但是对刚学习程序设计语言的学生来说,很容易使用编程处理实际遇到的问题。
(二)在线判题系统
在线判题系统作为国际计算机协会在编程竞赛中测试参赛程序不可缺少的在线系统,涵盖题库管理、在线提交程序、在线排名、用户管理以及在线判题等功能。用户可以在该系统中提交各种各样的语言源代碼,系统自动编译和运行这些源代码以后,使用系统提前设计的测试数据对源程序代码的正确与错误进行测试,这个系统主要是为国际大学生程序设计竞赛的参加人员提供测试、练习以及交流的平台,同时还为编程爱好者提供了练习平台。国内外很多大学都构建了属于自身的OJ平台,比如俄罗斯的Ural州立大学、Valladolid大学等属于国际上比较有名的大学,这些大学中都建立了OJ系统,同时我国北京大学、浙江大学等都建立了优质的OJ平台。学生主要学习C语言中的程序基本概念、数组、结构体、函数、链表等内容。程序基本结构训练在编程学习中属于基本内容,对0基础计算机专业学生而言,非常容易学。所以作者选择使用“信息学奥赛一本通”OJ判题系统,这个OJ系统最明显的特征就是题目从语言开始,下表为试题主要内容。根据下表中统计的内容可以得知,OJ系统能够完成分级教学,针对0基础的学生可以从第一节开始练习,从而为程序设计的学习奠定基础;有编程基础的大学生,可以从基础算法入手开始学习,从而增强自身程序设计的能力;数据结构可以当作可选题目。从数据结构方面来看,使用OJ系统能为教师减少工作量,让教师在教学方面投入更多的精力,从而实现理想的教学效果。
(三)线上线下课程组织
在上课之前,教师可以要求学生利用MOOC提前预习所要学习的内容,学生经过教师挑选的优良MOOC视频,在线上主动学习有关知识点,同时进行测试。教师在这个期间可以严格把控学生的学习情况,利用线上提问、答疑的方法充分了解学生学习的难点,同时准备和内容相关的重要程序案例。
在上课过程中,教师利用课堂面对面授课的方式,对本节课所学内容的重点、难点进行系统整理与归纳,然后对有关典型案例进行详细分析,比如采取哪种计算方法、哪种数据结构等。课程的难点、重点通过微课的方法,以便于学生课后进行复习,在上课过程中,教师激励学生主动融入课堂活动中,针对表现良好的学生,可以将提升平时成绩作为激励,以便于使课堂氛围更加活跃。
在课后,学生可以利用OJ系统做好相应的编程题目,然后依据自身的具体状况挑选题目的难易,利用OJ系统可以自动判题,同时每周提交给教师做好试题数目与题号,教师整理完学生的完成情况之后就能大致了解学生掌握编程的能力与水准,同时可以当作判断平时成绩的标准。在这个过程中,教师还需要大力培养学生的个性。
三、教学实施效果
(一)由以教师为中心变为以学生为中心
通过采用线上线下交叉融合的教学方式,将传统的学生被动模式逐渐改变为主动参与的方式,经过深入分析网上海量的程序案例,逐步将以教师为中心逐渐改变为以学生为中心。同时在开展教学活动期间,学生利用“MOOC+微课”大致掌握了C语言程序设计的语法规则,所以教师可以留出大量的时间在教学过程中深入分析实际案例,经过全面分析和讲解实际案例,不仅能够增强学生学习的积极性与主动性,还可以提高学生利用所学知识处理实际问题的能力。
(二)明显提升了学习效果
通过这种方式明显提升了学习效果,新型的教学方法与教学环境可以让学生在处理问题与编程期间投入大量的时间与精力,不需要特意学习语法,同时还提升了程序设计过程的理解程度,真正实现了边学习边实践的教学模式。
四、结论
近年来,人工智能和新工科建设的不断发展,计算思维作为三大支柱思维之一,程序设计能力是计算思维的核心任务,与此同时程序设计是计算机学科与其他学科交叉融合过程中的主要介质,熟练掌握程序设计的知识能够为今后培养创新型工科人才奠定良好的基础。根据相关实践表明,使用现有的优良在线教育资源,有利于引导学生今后朝着良好的方向发展。除此之外,经过实体课堂的参与、OJ系统的练习,教师能够充分掌握每位学生的编程水平,可以将一些编程水平较高的学生推荐到大学生科创中心,从而为学生今后的发展做好铺垫。
参考文献:
[1]兰聪花,何辉.“C语言程序设计”课程教学改革与实践[J].工业和信息化教育,2020(4):29-32.
[2]蔡蓓蓓,陈峰,苏红卫.《C语言程序设计》实践教学改革初探[J].才智,2020(8):72-73.
[3]王建平.基于《C语言程序设计》的翻转课堂教学策略研究[J].中国多媒体与网络教学学报(中旬刊),2020(3):5-7.
[4]崔容容,唐琳,任艳焱.应用型本科院校计算机程序设计课程的教学改革与实践[J].赤峰学院学报(自然科学版),2020,36(2):102-104.
编辑 冯永霞