当前位置:首页 期刊杂志

基于应用能力培养的“程序设计基础”课程教学改革与实践

时间:2024-05-04

谭明佳+向军

摘要:针对民族高校应用转型中人才培养应用型不强的问题,首先分析程序设计基础课程的重要性及当前的教学现状,然后阐述从人才培养方案修订、优化课程内容体系、强化编程实践能力、培养良好的编程习惯、考试方式改革等方面实施程序设计基础课程教学改革与实践。

关键词:程序设计基础;教学改革;应用能力培养;案例驱动;在线评测

中图分类号:G642.0 文献标识码:A 文章编号:1009-3044(2017)28-0176-02

Abstract:According to personnel training application in the transformation of national colleges is not strong, first, the paper will introduce the importance of program design curriculum and the current teaching situation, and discuss several aspects of teaching reform and practice of basic programming courses, the personnel training program revision, optimizing the course system, strengthening the practice ability of programming, to develop good programming habits, examination reform.

Key words:programming fundamentals; teaching reform; application capability cultivation; case driven; online judge

1 概述

2015年10月,教育部、国家发展改革委、财政部联合发布了《关于引导部分地方普通本科高校向應用型转变的指导意见》。指明地方本科高校必须坚持以地方需求和学生就业为导向,立足“地方性”、“应用型”、“重特色”的办学定位[1]。作者所在学校湖北民族学院既属于地方院校,又属于民族类高校,正处于向应用型转型发展阶段,学校正大刀阔斧进行相应的教学改革。

“程序设计基础”课程是计算机类专业一门非常重要的专业基础课和核心课程,承担着帮助学生建立程序设计的基本思想和概念、培养学生编程兴趣、掌握程序设计基本方法的任务。通过该课程的学习,不仅使学生掌握程序设计语言的语法规则、程序设计结构、设计技巧,更重要的是使学生通过具体的高级语言的学习,培养学生的算法设计与分析和程序设计的能力,为后续的专业核心课程如数据结构、操作系统、算法分析与设计、编译原理、数据库原理等的学习和应用打下良好基础[2]。

“程序设计基础”课程通常采用C语言作为教学语言,是计算机类专业学生入学后学习的第一门计算机程序设计语言课程。该课程的教学质量,对后续专业课程的学习和学生未来的发展有着极大的影响。实践证明,该课程教学内容、教学方法和评价方式的选择都会直接影响到教学质量和教学目标的达成。本文以湖北民族学院计算机类专业为例,介绍在民族高校应用转型背景下,突出应用型人才培养,实施基于应用能力培养的“程序设计基础”课程教学改革与实践。

2 “程序设计基础”课程教学现状

以作者所在的学校湖北民族学院为例,结合作者20多年计算机类专业教学体会,认为当前的“程序设计基础”课程教学存在以下几个方面的问题:

(1) 由于学生多来自民族地区,基础相对薄弱,部分学生学习自觉性较差,缺乏刻苦钻研的精神。“程序设计基础”课程通常在第一个学期开设,新生一般从第5周开始上课,只有14周的教学时间,内容多,时间紧,教学进度快,学生没有充余地时间理解消化和编程训练。而且,学生还处于应试教育的思维模式,没有自主学习的意识,部分学生一旦遇到学习困难,就放弃学习,甚至害怕编程。

(2) 采用传统的“先讲理论后上机实验”的教学模式,学生处于被动学习,很多学生感到枯燥难学,学过之后,也不能用来解决实际应用问题。课后作业也多是纸质方式,题型多为选择题、填空题、读程序等,即使有编程题,也是纸上谈兵,写完之后不知对错。

(3) 教学中过于注重C语言的语句、语法和一些细节,把程序设计课变成了“语法课”。没有把逻辑与编程解题思路放在主题地位上,对于如何分析问题和解决问题讲授得不够,对学生使用计算机分析问题和解决问题的实践能力训练不够[3]。

(4) 采用“平时成绩10%+实验成绩30%+期末成绩60%”的评价方式。这种评价策略可以激励学生进课堂,但不能保证学生听课;可以督促学生写实验报告,但无法保证学生切实独立完成了实验内容,而且难以对实验效果作出客观公正的评价[4]。实际上,平时成绩和实验成绩变成了教师调节期评成绩的手段,过程管理不严,对学生的学业管理存在偏宽、偏松、偏软现象。期末考试一般采用笔试,纸上谈兵,造就了高分低能,学生考试分数很高,却不会编程解决实际问题,更没有起到借助考试环节调动和激发学生学习积极性的作用。

3 “程序设计基础”课程教学改革

“程序设计基础”课程教学改革参考文献[3]思想和文献[1]中“地方本科高校转型发展的关键要素和核心内容”进行。深化体现素质教育要求、促进学生创新精神和实践能力提升的教学模式改革。培养学生勇于探索的创新精神、善于解决问题的实践能力。实施以解决实际问题为导向的教学模式。实施以学生为中心的启发式、合作式、参与式教学模式。深化实践教学改革。改革考试方式方法,建立促进学生实践能力和综合素质提高的评价方式[1]。为进一步提高学生学习程序设计基础课程的学习兴趣和实践动手能力,作为计算机科学与技术专业的负责人,初步拟定了修订人才培养方案、改革课程教学内容、强调工程实践应用、改革课程考核方式、注重培养良好编程习惯等方面教学改革思路,下面将分别阐述。endprint

3.1 修订人才培养方案,加强实践环节

根据《关于引导部分地方普通本科高校向应用型转变的指导意见》(教发〔2015〕7号)和《湖北民族学院关于修(制)订本科人才培养方案的意见》(鄂民院办发〔2016〕38号)文件要求,按照“重基础、精方向、强工程”的指导思想修订人才培养方案,创新应用型人才培养模式。加强实验、实训、实习环节。

在新的人才培养方案中,把“程序设计基础”分为“程序设计基础Ⅰ”和“程序设计基础Ⅱ”,总学时96学时,其中理论64学时,实验32学时,分别在第一学期和第二学期开设,每学期48(32+16)学时,每周4学时。这种课程安排既能避免学生产生厌倦,又能防止“信息超载”,给学生留出时间适应大学教育模式,逐步了解计算机程序原理,通过自主深入学习、编程实践训练、学习和研究算法,为后续专业课程的学习奠定扎实基础。大一暑期安排2周时间进行C语言项目工程实践,引入企业项目,由企业导师和校内老师共同指导,通过企业实际应用项目的实践来培养学生工程实践能力。

3.2 优化教学内容,培养应用能力

构建以应用能力培养为主线的课程教学内容体系。“程序设计基础”课程讲授重点应放在问题分析、模型建立、算法设计、程序实现和调试排错上,以此来培养学生的创新思维、分析问题和解决问题的能力。

以案例驱动方式,构建“程序设计基础”理论教学内容体系,培养学生的计算思维能力,鼓励学生探索、研究和创新。具体来说构建了基于枚举法、递推法、递归与回缩法、分治法、贪心法和动态规划思想的经典案例教学内容,嵌入到“程序设计基础”课程体系中。通过案例来讲授程序设计的基本概念和基本方法,即以程序设计为主线组织教学,语言细节留给学生课后自主学习。经典案例教学内容如表1所示。

3.3 强化编程实践,培养工程实践能力

强化学生编程实践能力的培养。程序设计不是听会的,也不是看会的,而是自己练会的。要在理论知识的指导下,让学生多动手、动脑,更多地编程实践,才能培养学生编程能力。

HUSTOJ[5](HUST Online Judge)是一个开源的、采用黑盒测试原理进行计算机程序正确性判断的自动化程序。该系统具有公平性好、评测自动化程度高、节约人力成本等优点,广泛应用于各类大学生程序设计竞赛。

对HUSTOJ系统进行二次开发,建立了在线作业系统、实验系统和考试系统,实现课程作业、实验和考试的自动评测并统计计算相应成绩,通过代码相似度检测防止学生抄袭。课程作业和实验系统主界面如图1所示。

在线作业系统包含了选择题和编程题两种题型。目前从ACM/ICPC竞赛题目、CCPC竞赛题目、PAT题目、校赛题目中精选了100多道题目作为编程题作业。在“程序设计基础”课程学习期间需要完成至少100道编程题。从教材、参考资料中选择实验题目,每次实验2学时,完成3-4道题目。

系统采用自动评测,实时排名,可以多次修改提交直至正确为止,激发了学生学习的积极性和主动性。通过大量的编程实践训练,能够培养学生的计算思维能力、分析问题和解决问题能力、算法设计能力、编程能力以及程序调试排错能力。平时成绩和实验成绩的评定更加公平、合理。减少了教师的工作量,使得教师有更多的时间指导学生。

3.4 培养良好的编程习惯,增强就业竞争力

培养学生良好的编程习惯,强调程序的可读性、规范性,编写的代码符合行业标准或规范,增强学生的就业竞争力。

程序的编写要具有很强的可读性,不仅要能自己看懂,同时也要便于让其他人读懂。把“华为C语言编程规范”融入到“程序设计基础”课程的教学活动中,有利于培养学生良好的编写代码风格,提高程序的可读性和优化程序。

3.5 改革考核评价方式,调动学习的积极性和主动性

考试是检验学生学习效果、评价学生学习成绩的重要环节。借助考试环节来调动和激发学生学习的积极性和主动性。

改革课程教学的评价方式,从一次性期末考试成绩评价到过程监控和知识应用能力的评价。考试采用在线自动评测,不搞笔试,不考死记硬背的东西,重点考核学生编程能力,分析问题、解决问题的能力,避免了高分低能现象,体现了对学生的学业管理“严、紧、实”的要求。

“程序设计基础”课程采用HUSTOJ系统在线考试,每学期考试4次,每次5道题目,并按照10%,20%,30%,40%的权重计分,作为学生本门课程的期末成绩。通过权重不断增加的方式,激发学生的斗志,调动学生学习的积极性和主动性。在线考试系统如图2所示。

4 结束语

通过实施“程序设计基础”课程教学改革与实践,调动和激发了学生学习专业知识的积极性、主动性和创造性,通过OJ系统做题的人多了,参与ACM国际大学生程序设计竞赛(ACM/ICPC)、中国大学生程序设计竞赛(CCPC)培训、训练、竞赛的人多了。

改革永远在路上,后续需要自主开发具有实际应用背景,能够培养学生计算思维能力、分析问题和解决问题能力、算法设计能力和编程能力的题目集,供学生在OJ系统上实验、作业和考试。把计算机专业核心课程中的一些解决问题的经典思想和算法开发为能够在OJ系统上使用的题目,作为相应课程的在线作业,以此来加强专业知识的学习,实现理论与实践相结合,将编程实践活动贯穿于大学前三年的学习中。

参考文献:

[1] 张大良.把握“学校主体、地方主责”工作定位,积极引导部分地方本科高校转型发展[J]. 中国高等教育, 2015(10):23-29.

[2] 教育部高等学校计算机科学与技术教学指导委员会.高等学校计算机科学与技术专业人才专业能力构成与培养[M].北京:机械工业出版社, 2010.3.

[3] 吴文虎.精心铸精品 理念须先行_谈“程序设计基础”课程改革.计算机教育[J],2008(7):46-49.

[4] 徐英慧,周淑一.《C语言程序设计》课程“三位一体式”教学模式研究[J].软件导刊,2017(4):221-223.

[5] 张浩斌.基于开放式云平台的开源在线评测系统設计与实现[J].计算机科学,2012(11):339-343.endprint

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!