C语言教学中融合学习研究与实践*

2020-05-18 08:40黄复贤刘春英
菏泽学院学报 2020年2期
关键词:C语言浏览器程序设计

黄复贤,刘春英

(菏泽学院计算机学院,山东 菏泽 274015)

引言

程序设计能力和程序设计思维的培养是程序设计课程教学的最终目的.程序设计基础是计算机类专业的一门核心基础课,绝大多数高校把C语言作为第一门程序设计语言,作为进入程序世界的入门语言.然而,随着新技术、新工具的不断推陈出新,是否还开设C语言程序设计的争论不时被提起[1].

C语言是面向过程的程序设计语言,在出现面向对象的程序语言后,其实效性受到过质疑,但实践证明,C语言的地位没有动摇,因为它是程序设计能力基础的最好选择,基础不牢,地动山摇.也有提出第一门程序设计课程开设Python的呼声,以Python作为非计算机专业普及程序应用,上手快,功能强,具有一定的可行性,但作为计算机专业学生,注重的是程序设计系统能力的培养,还是开设以过程性训练为主的C语言课程较好.

我们的教学的确也存在一些问题,一方面教材跟不上发展,陈旧过时,学生没有学习兴趣;另一方面,在过程化编程中确实存在一些问题,当前使用的全是图形化界面,而C语言的教学环境中以文本为主,如果增加图形化编程内容,一是学时增加,二是学习内容决定了只能在最后阶段使用图形模式,另外C语言的图形模式应用也不广泛,因此只能取基础内容进行教学.

随着计算机从单机时代发展到网络时代,再到智能时代,计算机的概念内涵不断丰富,学生对新知识的渴求与急切也需要早让学生学习新知识,所以教学中,应该科学设置人才培养方案,积极开展课程建设,掌握新技术,真正实现以学生学习能力培养为中心,利用好当前丰富的教学资源,让学生高效学习,快乐成长.

根据《教育部关于一流本科课程建设的实施意见》中“让课程优起来、教师强起来、学生忙起来、管理严起来、效果实起来;课程内容强调广度和深度,突破习惯性认知模式;教学内容体现前沿性与时代性,及时将学术研究、科技发展前沿成果引入课程”等相关要求,在教学中初步探索出一种融合学习方法,在C语言教学中融合当前网络脚本语言HTML(Hyper Text Markup Language)及JavaScript(JS),对解决以上问题具有较好效果,既不需要单独开设这门课程,又完善了人才培养方案[2].

1 融合学习的可行性研究

在C语言教学过程中与脚本语言进行融合学习、迁移学习和自主学习,调动学生学习积极性、培养学习新知识的能力,其融合学习可行性研究的模型如图1所示.

图1 融合学习可行性研究模型

1.1 C语言与网络脚本语言的融合

语言是人类在交流中产生的符号的集合,作为交流的工具,具有多种功能,既是记录、传播思想的工具,也是思考的工具和教育的工具.计算机语言则是对计算机下达的计算机指令序列,学习计算机语言是深入学习计算机科学的必经途径.计算机语言分为机器语言、汇编语言、高级语言三类,学习计算机入门语言一般选择高级语言,而用高级语言所编的程序并不能被计算机直接识别,需要处理转化为机器语言程序才能被执行,因此语言的处理在学习中便成为难点[3].

融合思想在程序设计多个领域都有重要应用,编程理念中重用是比较重要的思维方式,语言内部的函数机制,语言之间的融合,C语言与汇编语言编程中可以互相引用,各尽所长;在Java与Python中都有import功能引入第三方代码,实现了代码的隐蔽性、重用性,极大促进了各类语言功能的融合,丰富各自的功能.

网络时代,学生接触最多、使用最多的就是网络,上网离不开浏览器,所以自然就容易用到网络脚本语言.根据类比学习的原理,把C语言与网络脚本语言一起来学习,实现了从单机到网络、从基础到应用等方面的结合.HTML 是用来描述网页的一种语言,是超文本标记语言,不是一种编程语言,而是一种标记语言 (markup language),标记语言是一套标记标签 (markup tag),HTML 使用标记标签来描述网页.浏览器的发展和网络的发展联系在一起,推动互联网的发展应用,浏览器成为网络资源共享、获取的重要工具,对HTML的处理是基本功能.从静态网页到交互式的重要机制是引入了脚本语言,HTML 定义网页的内容,JS 对网页行为进行编程.JS是一种解释性编程语言,其源代码在发往客户端执行之前不需经过编译,而是将文本格式的字符代码发送给客户端由浏览器解释执行.

从类比学习角度看,浏览器对HTML的解释处理过程与高级语言的解释功能是类似的.通过融合学习,一是加深语言处理含义,更深入理解计算机语言的符号化设计、形式化等问题.二是在学习中学习了新知识,加深了对浏览器、HTML、JS的学习与思考,激发求知欲望.

1.2 从C语言到JS的迁移学习

教育心理学研究的学习迁移是特指前一种学习对后一种学习的影响或者后一种学习对前一种学习的影响.迁移广泛存在于各种知识、技能与社会规范的学习中.先前的学习对后来学习的影响称为顺向迁移;后来的学习对先前学习的影响为逆向迁移.

JS从C-minus发展到ECMAscript,最终到JS,借鉴了C语言的基本语法和Java语言的数据类型和内存管理,属于简化的函数式编程及简化的面向对象编程,不需要编译即可运行,并运行在客户端,需要浏览器来解析执行代码.

可见学习了C语言的数据、计算、函数等基本知识后,再学习JS就非常简单,可用JS代码来解决C语言的经典程序题.反过来通过对JS语言学习,又起到语法练习作用,同时在对比C语言和JS语言实现的异同点过程中,进一步巩固了程序设计语言基本语法,加深了对所学知识的理解,提高了学习效果.如关于数据类型,C语言中有int,char,float等等,而JS可处理多种数据类型,我们只关注数值和字符串值,通过 var 关键词来声明变量,所以转换过程中遇到C语言中的数据类型要注意小的细节.C语言中常用一种除法整除取整,比如int a=5/2;结果就是2,而在JS中这样计算默认会变成2.5,要完成C语言中整除功能,写法要改成a=parseInt(5/2).

1.3 架起通向互联网的梯子

建构主义学习理论中强调教师的主导作用,主要体现学习支架观点,帮助学生用已知探索未知,有一定的高度,而通过这个梯子则可以达到更高、获得更多的资源.在学习JS更多功能时,技能细节不必在课堂上详细讲授,基于问题驱动、项目驱动,借助互联网这个大宝库自主学习[4].

学习的根本在于自主学习、解决问题能力的培养.通过课堂上对HTML的基本知识的引领讲解,并对C语言与JS特点对比,基于问题驱动与兴趣驱动,学生的主动学习积极性被调动,真正实现学生自主学习.

2 融合学习的实践

为了培养具有核心竞争力的应用型软件人才,在融合学习过程中,我们利用网络资源,采用混合式教学全融合模式,通过创新教学方法,激发学生的自主学习能力,培养具有自主学习能力、工程实践能力、创新创业意识和团队协作能力的应用型人才.C语言教学中融合学习的实践模型如图2所示.

图2 C语言教学中融合学习的实践模型

2.1 科学制定人才培养方案

计算机语言是学习计算机原理、培养计算思维的重要课程,程序设计语言课程与其他相关课程相互融合,贯穿于计算机人才培养全过程,从计算机的概念发展变迁的角度看,人才培养方案也应包含不同类型的程序设计语言课.程序设计基础课开设C语言,主要侧重面向过程的程序设计;后续开设Java语言,主要侧重面向对象的程序设计;针对网络编程开设相关WEB设计语言及脚本,主要侧重服务器端程序设计;开设Python语言,则侧重于数据处理及机器学习,面向人工智能;这些语言重点各异,又是系统融合思想的体现.

2.2 创新程序设计教学方法

教学内容的融合促进了教学方法的创新,在C语言教学中引入了JS,用浏览器作为调试工具,通过对浏览器的工作原理与计算机语言处理程序的对比,让学生更深入系统地掌握相关知识.

在学习过程语言的同时,也学习了面向对象的事件驱动的交互机制,使得调试工作交互方便、直观可视化.有了直观的交互操作,在课堂上进行方格类小游戏的设计更加方便,在算法的优化方面,可以通过直观的交互来验证,进一步增强了学生编程驱动力.

2.3 利用互联网平台教学资源

当前,我们进入了一个互联网发达时代,每一位用户既是建设者,也是共享者,互联网的发展也催生了“互联网+”思维,丰富了科学研究中理论范式、实验范式、计算范式、数据范式的内容与模式,在学习模式上开启了广阔的探索空间.在开展C语言与JS融合学习时,JS的相关知识在网络上有着丰富的资源,并有先天的在线试验的自然优势,如w3school网站,非常适合学生自主探索学习.为激发学生学习兴趣,让学生制作网页版学习笔记,在实现静态网页、动态交互网页的制作中,学习HTML与JS的相关技术[5].

程序设计类课程的特点是在于练,不仅要知道程序设计的规则,更重要的是动手去做,把实际问题转化为程序,提高抽象思维和计算思维能力,在枯燥的学习中发现程序设计之美.浙江大学的的“拼题A”在线评测平台给我们提供了一个科学有趣的教学实战平台,比如,针对整数的运算,不同阶段采用不同的方法对同类题目进行求解,不使用判断时,只通过取余与整除运算便能实现,以此呈现计算思维与简单之美;讲到循环时则侧重抽象能力的训练[6]等等.

2.4 问题驱动激发自主学习的内生动力

在教学内容上引入小游戏,分解为三个阶段,实现问题驱动逐步深入.学期初从静态网页制作入手,让学生探索HTML的使用与浏览器的工作原理,探索中发现,做中学,使学生体验成就感,激发进取心;学期中,引入鼠标事件处理,使学生对交互、输入输出有一个系统的理解;集中实践作业中,以井字棋类小游戏为题目,引入JS相关内容的学习.

在学习扫雷游戏中,设计翻开空白方格函数,根据问题性质设计为递归函数,既让学生较好理解了递归函数的应用,又体现了软件代码的简单之美,对方格类游戏实现技巧进行总结.用数组作为数据的主要组织形式,如游戏中棋子规律性的动作,是用数组来设计不同方向的试探、移动,既体现数据驱动思维,又体现了大道至简[7].在学生实现从井字棋到五子棋的小游戏制作中,从人机交互,到机器与机器相互竞赛的过程中,让同学提升了编程技能,也领会了中华优秀传统文化的魅力,让学生思考人工智能的发展方向,激发学生自主学习、奋发进取的内生动力.

2.5 混合式教学全融合

教学过程中,积极开展混合式教学.我国高等教育慕课建设走在了世界前列,慕课建设是推进教育公平的重要行动,也是打造“金课”,实施一流课程“双万计划”的重要内容.我们紧跟时代变化,积极利用新一代信息技术,做好与教育教学深度融合,开展课程内容、教学模式与教学方法改革,打造线上线下混合式“金课”[8].

线上学习,一方面使用超星尔雅教学平台建立自己的教学资源,另一方面推介国内优秀的课程MOOC,如浙江大学翁恺老师、哈尔滨工业大学苏小红老师开设的《C语言程序设计》.线下让课堂活起来,课堂教学内容与时俱进,在软件概述中引入鸿蒙系统作为案例,简单介绍具备分部架构、天生流畅、内核安全、生态共享四大特点;结合区块链技术,把哈希技术的实现雏形在教学中体现;通过引入前沿新技术话题与热点,引发学生讨论,增加教学内容的深度与广度,实现了从教材到现实世界的扩展.教学过程中以学生为中心,教师起导师的作用——指导、组织、引导学生学习,调动学生的积极性、主动性,从而激发他们的潜能.专业教学中与课程思政相融合,课堂教学五育并举,把立德树人贯穿教学全过程.网络语言中称程序员为“码农”,可引导学生这样理解:我们就要像农民一样辛勤劳动,通过大量的代码阅读与编写量的积累,才能实现编程能力的提升和编程素养的养成,倡导劳动创造价值观和奋斗精神,做到知行合一.在教材建设中引入中华优秀文化素材,在教材的动手记录栏目中,用“不积跬步,无以致千里”来激励学生记录程序调试的错误,培养良好的学习习惯;以中华文明五千年传承来讲解语言的功能,讲解民族软件的进展,既树立了民族自豪感、自信心,也增强了紧迫感、危机感,激发学生的斗志[9].

3 结语

课程建设中,在探索教学内容的高阶性方面,引入融合学习,教学内容进一步充实,将新技术与传统内容融合,调动了学生主动学习积极性,提高了学生编程能力.经过实践,取得了初步成效,学生参加省级以上程序设计类比赛取得较好成绩,教师教学水平得到了提高.在教学内容上,程序设计主要基于数据驱动,与人工智能相关的前沿技术还有不少融合的难度等问题,小游戏主要基于规则驱动,能够启发学生要实现基于机器学习,游戏过程及状态转换,要深入学习隐马尔可夫模型、向量运算、模式匹配及博弈理论等,进一步激发学生后续学习兴趣,明确自主探索的方向.

猜你喜欢
C语言浏览器程序设计
医学专业“Python程序设计”课程教学改革总结与思考
基于Visual Studio Code的C语言程序设计实践教学探索
51单片机C语言入门方法
微软发布新Edge浏览器预览版下载换装Chrome内核
反浏览器指纹追踪
从细节入手,谈PLC程序设计技巧
基于C语言的计算机软件编程
高职高专院校C语言程序设计教学改革探索
浏览器