APP下载

“信创”背景下“C语言程序设计”线上线下混合教学模式的探究与实践

2022-05-11

无线互联科技 2022年4期
关键词:信创C语言程序设计

江 燕

(南京审计大学金审学院,江苏 南京 210033)

0 引言

响应国家号召科创精神,落实省科协的“科创江苏”三年计划,江苏省计算机学会于2021年4月24日举办了“基于信息技术国有自主可控科教实践创新”产教融合研讨会,会议强调:紧扣科技自立自强,着力解决“卡脖子”问题,加快建立自主可控的产业链体系是当务之急。会上南京知名高校教授先后做了精彩的报告,提出了“基于信创平台构建培养系统能力的课程体系和实践体系”,指出了人才的培养是实现国有自主可控最有效的方法。而当前高等教育存在的问题是培养的学生缺乏解决复杂问题的能力。一方面学生有些眼高手低,另一方面是大部分教学内容缺乏高阶性和创新性,需要进一步改进。因此,为了让学生能更好地掌握和运用专业知识,会迁移知识,会创新,对大学专业课程进行改革有着重大的意义。“C语言程序设计”是计算机相关专业学生入学后学习的第一门编程类课程,是后续各种编程类课程的基础。然而,学生普遍觉得 C语言理论性强,内容抽象,知识点零碎,难以掌握。因此,“C语言程序设计”课程改革,对提高教学质量和培养高素质应用型人才具有十分重要的意义。

1 课程定位

“C语言程序设计”是普通本科计算机科学与技术相关专业的一门专业基础课。通过本课程的教学和学习,要求学生掌握C语言的基本概念、各种数据类型的特点及使用技巧和各种语句的用法,掌握以函数、指针为特征的C语言模块化设计方法,熟悉文件的操作和使用,达到具有运用C语言进行程序设计的能力。

“C语言程序设计”的前导课程是“大学计算机基础”“计算机导论”,后续课程有“数据结构”“编译原理”等,它起到承上启下的桥梁作用。

2 课程存在的问题及解决方法

“C语言程序设计”课程具有“内容抽象,理论性强,实践要求高”的特点,对学生的逻辑思维能力要求高,学生学习难度较大,采用以往单一的线下课堂教学模式,较难达到满意的教学质量,出现的问题有以下几个方面。

2.1 学生课后复习不充分,教师指导不充分、不及时

对于编程类的课程,普遍存在这样的问题:线下课堂受课时限制,无法对课程进行充分的针对性辅导和作业反馈。针对这一问题,可以考虑利用MOOC平台上的在线课程,帮助学生完成知识点复习、习题解析、编程题演示及自主练习环节。考虑到学生学习时间的安排和自觉性,MOOC课程构建建议采用“串讲复习视频+易错题讲解+练习题+答疑讨论”的形式,避免与线下授课内容高度重合,让学生能更高效率地完成相关知识点的复习和强化,而不会产生乏味的、对付的情绪。

线上的串讲视频可帮助学生梳理知识点,把握重难点;更关键的是线上的OJ自动批改功能,可实现学生代码题的批改和调试错误的显示,能有效地延展了线下课堂的教学时间,弥补线下指导存在的不足。

2.2 出现“中途自我放弃”的现象

在以往的教学过程中发现有部分学生会中途自我放弃,究其原因,大致有以下两个方面:

(1)这部分学生大多是学习过程中出现问题而又不主动解决问题,积压问题跟不上讲授进度而中途产生畏难心理,自我放弃。

(2)若这部分学生占比较大,就要考虑课程内容安排是否合理。如果内容安排不太符合一般认知规律,让学生一开始就觉得困难重重,无法掌握,产生消极心理也是可以理解的。

针对这一现象,一方面要想办法提高学生的学习兴趣,另一方面教师也应对授课内容以及课时安排和顺序做适当的调整。

根据多年的任课经验,内容分为基础和进阶两个部分比较合适。基础部分包括: “第一个C程序”,基本数据类型、运算符及表达式、基本流程结构、自定义函数、变量作用域、指针、数组、结构体;通过基础部分的学习,学生能完成一个简单的成绩管理系统设计,学生小有成就感的同时,也已初步了解开发一个小系统的过程;在此基础上,教师再从学生已设计的简单系统提出优化方案,引入进阶部分的内容。进阶部分包括:动态分配存储空间、链表、文件的读入、导出和读写操作。学生通过这部分的学习,逐步优化自己之前设计的系统,达到教学目的和要求。

除了课程内容调整之外,练习题的设置也很关键。如果一开始就让学生觉得每道题都很难,无从下手,那样会很大程度打击他们的积极性。可以考虑设置阶梯式的练习,从易到难,逐步加大难度,让学生有种“升级打怪”的成就感,让学习过程显得轻松一些;另外,也建议选取一些趣味性强或贴近生活的练习题,避免出现一个成绩管理系统一路走到黑的乏味现象。比如,练习银行存款利率的计算、超市商品价格的打折计算、鸡兔同笼问题、富翁与陌生人打赌之类的题目,就比求数学公式的根、寻找素数、输出杨辉三角形这类抽象问题,更有吸引力,学生更愿意去思考和动手。

2.3 学生普遍觉得

C语言理论性强,内容抽象,知识点零碎,难以掌握,这可能与习惯了宏观思维,初次接触编程,一时无法建立编程思维有关。从教师的角度看,可以考虑从以下几方面进行改善。

2.3.1 选择合适的教材,注重知识的系统性、习题的趣味性和实用性

教材是学生学习课程的第一手资料,好的合适的教材能让学习事半功倍。目前觉得高等教育出版社出版的、苏小红等主编的《C语言程序设计(第4版)》,兼具趣味性和实用性,教材以应用为背景,案例内容紧密结合实践,举一反三,融会贯通,尤其侧重错误案例的分析和讲解[1],而且每个章节上都有视频二维码,供学生手机扫码观看和学习。另外,第4版也在第3版的基础上增加了章节知识点梳理和安全编码的内容,使得教材更贴合目前的需求。

2.3.2 注重问题求解思路的分析

在演练中侧重培养学生的逻辑思维和解决问题能力,而不是单纯的码代码。尽可能采用“一体化”的教学手段,教师讲完知识点后,能演示典型例题的求解,先帮助学生理清求解的思路,再演示如何把算法变成代码,然后再设置练习题让学生自己动手练习,这样学生边学边练,及时巩固掌握知识点,效果会比较好。

2.3.3 让课件内容“随时可见”

现在学生普遍使用智能手机,可以借此便利,让学生课后能随时通过手机翻阅课件查看内容。个人感觉雨课堂还不错,不仅可以发布附带讲解语音的手机课件,也能发布客观题试卷,定时收卷自动判分。一来学生随时可以翻阅复习,梳理知识点,理清知识脉络。二来学生也可以随时查看之前的考题答案及解析。

2.3.4 鼓励多实践多思考

要掌握一门语言关键还在于练习。线上资源无论是慕课的还是雨课堂的,设置足够多的练习,鼓励学生多多练习,从练习中巩固、加深知识点,并从实践中不断的修正自己的认知。

3 课程内容的调整

随着我国“互联网+”行动计划的实施,社会对复合型人才的需求越来越大,对高校人才培养也提出了更高的要求。因而,课程授课内容也要考虑增加或加强,接轨社会需求。

3.1 嵌入安全编码思维

“互联网+”时代下,越来越多的系统连接到公网上对外提供服务,这些系统面临着来自各方的攻击,系统中的安全漏洞就会逐渐被暴露并被加以利用。据国家安全漏洞库(CNNVD)发布的漏洞通报显示,目前系统漏洞数量呈逐年上升态势[2]。信息系统的安全受到危害,必然会危害到存在于信息系统之中的信息的安全。而据统计,平均1 500行代码就会有一个漏洞。而且,目前超过30%的软件安全漏洞都由缓冲区溢出导致。缓冲区溢出漏洞的成因是程序员忽略了数组的边界检查、向小块内存区域填入过多的内容,造成相邻区域被意外覆盖而导致的[2,3]。预防缓冲区溢出属于程序设计课程的范畴,在教学中应向学生讲解缓冲区溢出的危害以及黑客利用该漏洞发起攻击的方式和过程,引入安全编码规范的内容,引导学生编写具有高安全质量的程序。

信息不能脱离它的载体而孤立存在,信息系统的安全受到危害,必然会危害到存在于信息系统之中的信息的安全。因而,培养学生整体安全观的安全思维至关重要。

3.2 进一步增加题库试题数量,提高试题多样性

增加计算机程序设计竞赛类试题、游戏设计类试题、解决日常生活问题类试题等[4],提高程序的实用价值,也提高学生对C语言编程技能的认可度和学习兴趣。

进一步地结合密码学和网络空间安全的知识[2],设置练习题,让学生树立具有网络安全意识,在编程过程中,尽量减少或避开可能出现的代码安全漏洞。

3.3 增加微控制器编程初阶

引入单片机C编程[5],将位运算和字节运算应用到流水灯等开关量控制,用仿真软件展现流水灯和LED数码管的动态控制结果(仿真结果见图1、图2),形象生动,一方面加深对位运算、字节运算和程序流程结构的知识,一方面也能激发学生对该课程的学习兴趣。

图1 原理

图2 运行结果显示

动态逼真的仿真现象,能激发学生学习兴趣,一方面,巩固C程序设计课程的基本知识,另一方面,契合物联网时代对综合人才的需求,拓展学习C在微机控制上的应用,进一步提高学生的实践能力和解决实际问题的能力。

3.4 重视课程设计周

有不少学生都在课程设计周才真正搞懂C语言的语法、规范和函数参数的传递问题。甚至有学生夸张地说“我学一学期,还不如这3天学得多”。

为激发他们的自主思考、迁移知识的潜能,课程设计周的设计,可以考虑给予学生适当的自由发挥空间。内容可以考虑“多题选一”的方式,每个题目只设定必须达到的基本功能,学生在完成基本功能后,可以自行添加额外的功能。这样不拘泥于一格,一方面不会出现大批雷同系统,另一方面能有效梳理知识和完成课程知识的初阶迁移。

3.5 以赛促学

鼓励学生参加“蓝桥杯”等竞赛,进一步调动学生的学习积极性和培养其知识迁移的能力。

4 实践意义

“C语言程序设计”是面向计算机相关专业学生的一门专业核心课程,学生普遍觉得 C语言理论性强,内容抽象,知识点零碎,难以掌握。采用线上线下融合,课堂延展性强;注重知识的系统性、习题的趣味性和实用性,选择合适的教材,按照一般的认知规律设置课程讲授内容和讲授顺序,有利于提高学生的学习积极性和持久性;将网络编程安全意识融入授课设计,培养学生整体安全观的安全思维;引入单片机C编程案例,拓展学习,对接“万物互联”的社会需求。

猜你喜欢

信创C语言程序设计
低代码开发平台加速信创落地
EasyStack下注信创云
江苏省信创生态构建发展新格局
江苏省信创生态构建发展新格局
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
基于C语言的计算机软件编程
高职高专院校C语言程序设计教学改革探索
PLC梯形图程序设计技巧及应用
论子函数在C语言数据格式输出中的应用