Linux下C语言编程课程的教学模式改革
2020-11-23王雪丽曹树伟
王雪丽 曹树伟
摘 要:对于Linux下C语言编程这门实践性比较强的课程来说,传统的教学模式已经不能充分发挥学生的能动性,而在线下课堂教学基础上增加线上教学,突破了这门课程的教学瓶颈。文章以最优化教与学效果为前提,构建了“线上+线下”教学模式。提出了线下课堂授课地点的改变,凸显了线上建课的优点,设计了自选任务驱动实践环节。增加了过程化考核模式,以及改变了考核方式等一系列的改革措施。从最终的教学效果来看,合理安排线上成绩权重,充分发挥线上教学软件的功能,“线上+线下”教学模式非常适合Linux下C语言编程教学。
关键词:Linux C;线上+线下教学;自选任务驱动;过程化考核
中图分类号:TP3 文献标识码:A 文章编号:1673-260X(2020)10-0023-05
0 引言
随着智能时代的到来,许多智能产品应运而生,比如智能手机、智能机器人、智能玩具等。这些智能产品的产生是硬件和软件相互促进共同向前发展的结果,两者缺一不可。说到软件,就不得不提操作系统,目前人们广泛使用的操作系统是Windows操作系统。桌面化的Windows操作系统的确给计算机的使用者带来了莫大的便利和视觉享受,但许多智能产品属于小型处理器,无法安装Windows操作系统,因而新的操作系统应运而生,其中最受各个行业及高校喜爱的就是开源的Linux操作系统[1]。为了培养出适应时代发展,能够为祖国复兴贡献力量的人才,全国各大高校开设了很多新兴专业,比如大数据、机器人、物联网工程等,其中与这些新兴专业配套的必修课程就包括Linux系统下C语言编程。此课程是一个操作性比较强的课程,想要提高学生学习本课程的积极性并取得良好的学习效果,对教师来说,做好理论知识传授的同时并安排好实践环节的及时操作是至关重要的。为了使得理论与实践最大化结合,本文主要研究基于Linux操作系统的C语言编程教学模式的设计。
1 Linux操作系统的安装
Linux操作系统的创始人是林纳斯·托瓦兹[2],他于1991年,在芬兰赫尔辛基大学,利用GNU的bash当作开发环境,使用gcc编译器,成功编写了针对386机器的Linux内核。Linux操作系统是开源的,只要遵守GNU协议的Linux操作系统爱好者均可在网上下载源码加以改进,并将修改后的源码发布到网上供其他人使用。
目前Linux操作系统的应用领域非常广泛。常用的企业级IT服务器都安装有Linux、Unix或Windows操作系统,其中Linux因其稳定、开源、安全、高效、可移植性强、支持多用户多任务、网络功能强大等特点,发展十分迅猛,在服务器市场占有率已超过80%的份额。随着云计算的发展,在未来服务器领域,Linux操作系统是大势所趋[2,3]。由于Linux系统广泛支持大量的微处理体系结构、硬件设备、图形支持和通信协议,从因特网设备(如,路由器、交换机、防火墙、负载均衡器)到专用的控制系统(如,自动售货机,手机,PDA,各种家用电器),它都有非常广阔的应用市场,所以Linux系统已经成功地跻身于主流嵌入式开发平台[4]。除以上之外,在计算机个人桌面上,Linux操作系统也占有一席之地。鉴于Linux系统及其嵌入式硬件系统的迅猛发展,基于Linux环境的教学活动的改革势在必行。
计算机上可以直接安装Linux操作系统,也可以在Windows环境下安装虚拟机VMware[5],然后在VMware下安装Linux操作系统。对于高校来说,使用计算机开设的实验除了与Linux系统相关的实验外,全部都是在Windows环境下进行。所以鉴于考虑到计算机的利用率和成本等問题,高校一般都采用在Windows环境下安装虚拟机,在虚拟机上安装Linux操作系统的方法。这样安装的好处是不同实验互不干扰,提高了计算机的利用率。
2 Linux C编程特点——系统调用
Linux操作系统为开发者提供了非常丰富的开发工具和友好易用的开发环境,它支持多种高级语言,其中C语言是使用最广泛的高级语言。为了更好地保护内核空间,Linux系统将程序的运行空间分为内核空间和用户空间,它们在逻辑上是相互隔离的,如图1所示。所以在Linux中,用户程序不能直接访问内核提供的服务,必须通过调用系统调用函数才能实现。
所谓系统调用是Linux内核提供的功能十分强大的一系列的函数,它位于操作系统接口层,是实现用户与内核交互的接口,系统调用的功能逻辑图如图2所示。
由图2中可知Linux下C编程的特点是系统调用函数的应用。想要学生能够在Linux环境下熟练使用C语言实现对文件的访问,建立服务器和客户端的配置及连接构建网络环境等操作,就必须熟练掌握系统调用函数的功能、参数、返回值、及调用格式等。从而提高Linux下C语言编程技能,以提升学生在实践中分析问题、解决问题的能力,为以后从事相关的工作打下坚实的基础。
综上所述可知,对于实践性如此强的课程,是离不开教师的现场指导的,所以采用纯线上教学的方式是存在屏障的[6]。经过对Linux操作系统、实训课程等课程的线上教学[7]和混合教学[8-10]等新兴教学模式的研究,本文会提出一些含有创新性的Linux下C语言编程课程的教学改革,这一改革既能充分利用云课堂上的丰富资源,为Linux C编程注入新鲜的血液,又能使得教与学不脱离、理论与实践无缝衔接。
3 Linux下C编程教学模式的改革
3.1 传统教学的弊端
Linux C高级语程序设计这门课程与普通课程的区别是前者更倾向于学生动手能力,既编程能力的训练,只学习理论知识无法理解其精髓,必须加强实践教学环节的设计。常规的教学方式是理论课在普通教室授课,实践课在机房授课,这样的教学方式总是使得理论与实践存在断层,学生不能立即依靠实践来验证理论,不能更好地掌握系统调用函数的使用技巧,从而使得教学效果欠佳。
由于新型冠状肺炎疫情,高校不得不采取纯线上教学的方式进行授课,这样方式的确解决了隔离期间无法面授的困难,但是随着纯线上课程的展开,教与学的屏障也不断凸显出来[11]。特别是对于像Linux下C语言编程这种实践性比较强的课程尤为突出,由此可见,线下教学仍是不可或缺的。为了使学生最大化的提高Linux下C语言编程能力,本文将打破传统的教学方式,改变了线下教学场所,增添了线上教学,构建了线上加线下的教学模式。
3.2 线下教学场所的改变
本文提出的线下教学方式的改革是:理论课和实践课不分开教学,即理论课和实践课都在机房展开,不去刻意划清理论课和实践课的授课界限。这样可实现理论与实践无缝衔接,不但提高了学生学习本门课程的兴趣和积极性,而且对提高教师的教学质量和教学效果有极大帮助。
好的教学效果需要良好的教学环境和教学设施的支撑,授课所使用的机房需要具备以下教学条件:
硬件方面:
(1)多媒体教学设施:投影仪、大屏幕、教师授课计算机等。
(2)学生使用的计算机:保证人手一台。
(3)黑板或白板:供教师详细讲解知识点或即兴举例时使用。
软件方面:
(1)Linux操作系统:机房中的每台计算机都需要安装此操作系统。
(2)电子教室软件:此软件需要安装到机房中每台计算机上,教师使用的计算机安装教师端,学生使用的计算机安装学生端。
使用此软件可方便教师在讲授过程中将自己的电脑屏幕共享到学生端的界面上,便于讲解程序,演示编译、运行过程。除此之外还可以完成文件传输、控制学生界面、线上考试等功能。本校(赤峰学院)使用的是伽卡他卡电子教室软件。
3.3 线上教学
本文提出的一个具有创新性的改革方案是增加线上教学方式,线上和线下教学方式的有机结合可以随时随地掌握学生的学习动态、学习效果、心得体会等,教师可以根据线上教学的统计数据的反馈来不断修改自己的教学方案,提高自身的教学能力,从而能更好地服务教学。
线上教学是近几年新兴的教学方式,随着互联网技术的不断发展,传统的课堂正向智能化、智慧化转变,为深化教学改革提供了有力的手段和方法,使得多样化、个性化的教学模式如雨后春笋般呈现在各大高校的课堂上。
线上教学需要互联网平台的支撑,本校(赤峰学院)采用了功能强大、且深受高校喜爱的学习通平台[11]作为线上平台。教师和学生需要在手机或电脑上提前安装学习通App。在此平台上教师可以个性化的建课、与学生互动、设置小组讨论、直播答疑、发放并批改作业、上传资料等。学生可以用手机参与抢答、讨论等活动,可以在手机上查看所学课程的电子教案、视频资料、电子文档,还可以在手机上做作业等,如图3所示。除此之外使用线上教学还有一个好处是,它可以将整个上课过程中学生与教师的互动情况、教师的讲解内容、学生成绩分析等全部都记录下来,这样方便教师得到教学反馈信息,反思自己的教学方式,从而不断修改自己的教学方案,以此提高教学能力,更好地服务学生。
3.4 “线上+线下”教学课堂的构建
Linux下C语言编程的实践性非常强,但也不能忽视理论知识的学习。本文在研究了Linux C高级语言程序设计课程性质及学习通功能的前提下,构建了“线上+线下”教学课堂的构建。线下课堂(机房)完成理论知识的学习及实验环节的教与学,线上的学习通平台负责课前预习或线上学习理论知识、课前签到、课中师生互动、发放和提交作业、课后答疑等。
3.4.1 课前准备
课前准备包括线上和线下課堂的准备。教师根据培养方案和课程大纲的要求提前制作好课件,实验任务环节的设计,录制速课视频,然后将课件及视频上传到学习通上开始建立个性化课程,为线上课堂做准备。线上准备包括:
线上教学的智能之处在于,教师可以在线上进行成绩管理,如设置权重,统计分数,导出成绩等。这样不但节省统计分数的时间,而且统计信息详细,操作方便,这是线上建课的原因之一。
3.4.2 课中互动及实践环节设计
线上、线下课程均可以进行师生互动,为了在互动的过程中随时随地方便教师记录学生课堂表现成绩,本文提出了在线下课堂上采用线上进行选人、抢答、小组讨论等互动的教学模式。因为课前教师已经在线上建立课程,线下上课过程中,教师可以将自己手机投屏到机房的大屏幕上,这样,从教师用手机进行选人、抢答等方式与学生互动,到问题回答完毕后给出分数等一系列的操作,学生一目了然。这样不但方便教师记录分数,而且还调动了学生学习的积极性,一举两得。
实践环节对于Linux下C语言编程来说至关重要,我们进行教学改革的目的就是为了更好地为实践环节服务,因为学生只有在实践环节中才能达到学以致用、用以致学的目的。通过对文献[12]的研读,本文对实践环节提出的教学方法是:自选任务 +综合应用,即突出学生的主体地位,以学生实践为主,教师引导为辅。用有趣的、实用性的任务来吸引学生的注意力,帮助他们克服对新知识的胆怯心理,最终达到驱动学生自愿学习的目的。
以网络编程为例来讲解实践环节的设计思路,我们通常选用基于TCP的socket编程来模拟两台计算机之间的通信。为了激发学生学习兴趣,教师在备课时可结合当下热门,多设计几个任务案例及难易程度不同的任务要求,让学生在实践过程中根据自身能力选择自己感兴趣的任务及要求。但记住,这些不同任务的核心知识点必须是相同的,即为socket通信。此处设计两个任务,任务清单如表1所示。
由表1可知,这两个任务的核心知识点均为基于TCP协议的套接字socket编程,教师设计任务要求时,切记不要太复杂、太难,对于初学者来说,一定要从最基础的入手,否则学生会因为挫败感打消学习的积极性。表1中每个任务都设计了3个难度不同的要求,要求不同,综合运用程度不同,不同要求对应的综合运用如表2所示。
从表1和表2中可以看出,不同难度的任务及任务要求可以满足能力层次不同的学生的需求,让每一个学生在课堂上都有收获。学生在教师的指导下通过完整的完成任务,可以大幅度的提高学生的综合运用知识的能力及编程能力。为了提高学生团队合作能力,可以以学生小组为单位进行任务驱动。
3.4.3 课后答疑
教与学都需要不断的归纳总结与反思,这样才能让教与学的效果更佳。传统教学中,线下课堂教学结束后,学生课下遇到问题时很难及时得到解决,从而出现学习断层,而教师也不能及时通过学生的反馈答疑解难及总结教学效果。线上教学克服了这一困难,教师可以在线上发布活动,让大家针对某一重点、难点进行讨论,让大家集思广益,这样即可高效率地解决问题。
除此之外,教师可以在线上发布作业,学生通过手机做完作业并提交后,教师可以随时修改作业,并根据线上统计分析学生答题情况,如图4所示。从图4中可以看出第7题的正确率是非常低的,教师可以针对其难点进行直播答疑。
综上,与传统教学模式相比,线下机房教学结合线上互动、答疑等活动,不但使教师上课、课下归纳总结更加高效,而且教师有更多的时间和精力及时地解答学生遇到的各种问题。学生也会因为理论与实践的紧密结合,提升了学习成就感,继而进一步提高了其学习本课程的兴趣,形成了良性循环。
4 考核方式的改革
针对上文提出的线上+线下教学模式,考核方式也做了相应的改革。传统的考核方式是:平时成绩(30%)+期末成绩(70%),这样方式无法完全反映学生学习过程中的所有表现情况。为此,本文做出的改革是采取过程化考核方式,对此,学生的成绩权重及总成绩构成为:
期末考试可以采用机试或笔试的形式,因为Linux C高级语言程序设计这门课程重点在于实践操作,学以致用,而不在于对系统调用函数的死记硬背,所以期末考试可以采取半开卷的考试形式。半开卷的意思是每位同学可以将自己认为重要的知识点写在一张A4纸上,考试时可以拿来参考,但除了此A4纸外,考试时不可以携带其他的学习资料。
引入过程化考核,可以将学生在学习过程中的综合表现映射到成绩中,这样不但使得总成绩客观、公正、有效,而且避免了学生学习时不注重过程,考试前突击的行为。
5 结语
在互联网不断发展的大环境下,增加线上教学模式是形势所趋。在传统线下课堂教学的基础上增加线上教学,丰富了教学资源,使得学生不再局限于本校的教学资源,获得知识的途径更为广泛。对教师来说,线上教学为教学模式改革提供了方法和手段。通过目前的教学模式应用表明,线上+线下教学课堂模式结合自选任务驱动+综合运用的实践环节的设计非常适合Linux下C语言编程的教学,并对其他实践性较强的实训课程的教学具有一定的参考价值。它能充分调动学生学习的积极性,使其获得成就感,使学生更注重学习过程,形成良性循环,最终收获“更美更甜的果实”。
参考文献:
〔1〕郭玉华,郑啸.面向计算机系统能力培养的启发式教学研究与实践——以“Linux操作系统与程序设计”课程为例[J].工业和信息化教育,2020,8(05):79-83.
〔2〕杨铸.Linux下C语言应用编程[M].北京:北京航空航天大学出版社,2012.
〔3〕王耀华,刘咏霖,张磊.Linux下高效可靠的应用同步升级技术[J].网络安全技术与应用,2020,20(05):12-14.
〔4〕韩璞,王耀宽,胡四平.基于嵌入式Linux的农用无人机视觉导航算法及应用[J].农机化研究,2020,42(11):224-228.
〔5〕张松林,高建,李树波.虚拟机VMware在Linux操作系统管理教学中的运用[J].现代信息科技,2019,3(24):123-125.
〔6〕关少化,范爱玲.线上教学的教与学屏障及其突破[J].北京教育(高教),2020,72(05):55-57.
〔7〕刘潇潇..基于“互联网+”的Linux课程智慧课堂教学模式研究[J].办公自动化,2019,24(24):21-22.
〔8〕项响琴.线上线下深度融合,打造程序设计“金课”[J].电脑知识与技术,2020,16(11):180-181+191.
〔9〕李建新.混合教学在Linux课程教学中的应用研究[J].信息与电脑(理论版),2019,31(03):243-244.
〔10〕雷永锋,李兴红,王笑宇,孙莉莉.实训课程线上线下混合式教学模式研究[J].大众科技,2020,22(03):106-108.
〔11〕邱桂佳,杜轶君,周瑾.基于超星学习通教学平台的混合式教学模式在药学概论中的应用[J].西部素质教育,2020,6(06):108-110.
〔12〕李哲,房胜,黄玲.任務+项目驱动的Linux应用开发课程模式探索[J].软件,2020,41(04):271-274.