“程序设计实践环节”课程的教学改革

2012-06-21 09:57章品正
电气电子教学学报 2012年3期
关键词:程序设计学期编程

章品正

(东南大学计算机学院,江苏 南京 210096)

0 引言

“程序设计实践环节”是“C++程序设计”的后续课程[1]。通常“C+程序设计”的教学环节中以逐个知识点的教学为主,因而学生缺乏系统的实践锻炼。“程序设计实践环节”强调系统的实践,使得学生有机会系统地掌握知识,增强发现并纠正编程错误的能力,培养查阅文献资料及维护编程文档的习惯[2]。通过该环节的培养,对于学生后续专业课程学习和毕业设计工作实施都大有裨益[3-4]。但目前由于教学条件的限制,该课程教学面临教与学两方面问题[5]。

一方面是当前本科教学过程中,一年级基础课程量大,分配给程序设计课程的时间有限,而大部分学生在入学之前都没有编程经验。另一方面,是教师授课时偏重语法要点,而忽视程序设计的根本在于解决工程实际中的问题。

为了解决以上问题,本文提出以培养学生学习兴趣为核心,结合启发与互动式教学的“程序设计实践环节”教学模式:①针对具备较好编程基础知识的计算机专业学生,可将教学重点放在培养学生解决实际问题的能力上。在教学方法上突出学习兴趣的培养,突出编程实践能力与习惯的培养,提高课堂外自学能力;②将“C++程序设计”课程的春季学期后半程学习与“程序设计实践环节”的教学相结合,做到实践教学提前介入,使得该课程横跨春季学期与短学期。春季学期设置12学时的授课与20学时的上机辅导用于布置任务及程序设计模式的教学。我们将任务分为基础锻炼部分(计算器与模板编程)和扩展训练部分(设计一个教师指定的管理系统)。完成该任务可视为达到扩展训练部分的要求;③学生必须利用暑假时间完成基础锻炼部分的任务及扩展训练部分的编程准备,同时告知用于暑假学习答疑的网络答疑联系方法。

“程序设计实践环节”教学方案设计时,可以根据学生是否愿意结合自己需求与遇到问题进行任务设计将学生分为两类(甲类和乙类),分别给出具体的实施方案。通过这种方式可以让所有的学生均得以提高自身的编程能力。

1 甲类教学方案设计

对于甲类学生,我们采用了以下实施方案。

1)在布置任务阶段就明确告知学生,对于自选题目的考核不是仅看最后结果,还注重问题的发现及平时资料的获取收集。我们注重过程锻炼且允许失败。考核要求为在完成自选题目过程中作好记录与阶段总结。阶段总结包括:①在题目方案设计阶段的资料总结、方案设计报告和面向对象程序设计说明;②在方案实施阶段对于遇到的问题以及解决方法的记录,平时小组讨论的记录;③题目完成后的成功经验汇总或题目完成失败后的经验总结。

2)在程序设计教学实践环节的开始阶段明确鼓励学生按照特长与兴趣进行组队,通过团队协作培养学生分工合作、互相讨论与帮助。

3)在题目完成过程中,支持模仿更鼓励集成创新。学生要通过各种途径查找与自己需求相关的算法与范例,通过适当改进算法与范例并应用到自己的程序当中,使得程序更加稳健合理。

4)要求所有选择组队完成自己设计任务的学生,必须在春季学期完成两道基础题目(计算器和使用模板设计矩阵计算)。对于能够完成的学生,要求他们在暑假期间充分做好调研,同时完成软件系统设计工作。要求组长完成程序框架的设计以及功能模块的划分。如果该学生不能按时完成,则要求他转入普通组。

5)教师要在短学期了解各个项目小组的工作进展并给予指导。采用小组答辩形式进行最终评分,评分时邀请其余项目小组中完成较好的学生加入评委组,对各个项目小组的成果进行答辩式评审。

2 乙类教学方案设计

在目前经历过的五轮教学过程中,能够完成以上实施方案的甲类学生不足三成。对于其余学生即乙类学生,则编为普通组,对他们的能力培养采用以下实施方案。

1)根据学生已掌握的基本知识和基本技能,选择合适的题目。确定计算器和使用模板类设计实现矩阵计算这两道题目作为基本题目。学生通过这两道题目的练习能够融会贯通已经掌握的知识,调动学习积极性,积累展开进一步学习的信心。

2)对于在春季学期没有按时完成这两道基础题目的学生,要求在暑假期间通过网络手段与教师及时交流来解决问题。对于完成这两道基础题目的学生,则利用暑假期间做好在短学期完成扩展训练题目的准备。包括系统的软件结构体系的设计与必要知识的储备。

3)短学期期间,教师通过一对一的提问,并根据学生的回答给出其平时成绩的得分。教师在短学期结束时候,结合学生平时表现及编别程序代码的有效性以及实验报告的规范性,给出每个学生的最终评分。

3 实施案例

上述方案已在我院三届学生中实施,取得了很好的效果。对于乙类普通组学生,我们将重点放在基础能力锻炼上,加强实验环节的编程实践,使得学生在每一次上机之前做好准备,明确实验中需要完成的任务并在规定的时间内完成任务。对于甲类学生,在实验讲解中提示要点,让学生带着问题更主动地投入课后学习和课间答疑讨论中。我们还鼓励2~4名学生组成项目小组完成较大规模的自拟题目,并由学生自己确定解决方案。课程结束后,由学生上讲台答辩。

在具体实施中,我们对横跨两个学期的程序设计实践课程成绩的评定方式进行了改革。将评分工作分解为对学生平时学习态度的记录,对学生课后自学情况的评价;通过实验过程交流对学生在实验中的回答情况进行考评,结合学生最终提交项目报告与学生答辩情况进行综合评分。

在近三年的教学实践过程中,涌现出许多优秀的学生项目,现在仅举两例进行说明。

一组学生以自学的方式掌握Visual Studio 2008开发环境后,研发了一款比VC 6.0更加界面友好的科学计算器。他们在算法方面自学逆波兰式知识,使设计的计算器功能更加完备。相关的文档和软件源代码可在东南大学计算机学院影像实验室网站上下载(http://www.imagetech.com.cn/zh-hans/node/176)。程序界面如图1所示。

图1 计算器运行界面

另一组学生解决了学习英语过程中遇到检索单词的困难。例如,看到brunt(中文意思是冲击),有时会错想到“直率的”,但查阅普通字典,甚至金山词霸都很难直接从中文意思检索到英文该词或其相似词。针对这个问题他们提出基于动态规划的有限分隔最长公共子串算法与改进的最小编辑距离算法进行相似单词查找与比对。在操作时通过输入待查询字符串,即可实现词库内相似单词搜索。搜索结果按相似度降序列出。如单词本身存在于词库中,通常第一个输出单词是原单词。如果输入单词错误,此程序可给出拼写正确的相似单词,因而也可以用作带有拼写纠错功能的软件。除了相似单词搜索,目前还能够结合输入单词子串和单词意思进行查询。例如“+escent”搜索含有子串“escent”的单词,“=花”搜索词义中含有“花”的单词。程序最终结果聚类输出,使得相似度接近的被分到同一类。他们开发的智能字典图形运行界面及以“blunt”为输入的相似匹配结果如图2所示。程序源代码可在如下网址 http://www.imagetech.com.cn/upload/luckzpz/DictionarySource.rar下载。

图2 智能字典图形用户界面

4 结语

本文针对程序设计的实践环节现在存在的问题,探讨了培养学生的学习兴趣的途径与锻炼学生分析问题、解决问题能力的方法。同时介绍了近年来在该课程教学改革中取得的经验与成果。实践表明,本文提出的方法有利于学生掌握和巩固已学到的语法知识,有利于培养规范的编程习惯,为后续课程、课外研学和毕业设计打下良好的基础。同时对于部分优秀学生培养了他们自学能力、团队合作能力与自我表达能力。

[1]教育部高等学校计算科学与技术教学指导委员会.高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)[M].北京:高等教育出版社,2006

[2]Matthias Felleisen.How to design programs[M].北京:人民邮电出版社,2003

[3]耿国华.程序设计能力培养模式的探索与实践[J].北京:中国大学教学,2009,3:30-32

[4]赖晓晨.程序设计课程创新教学模式探索[J].北京:中国大学教学,2008,7:42-44

[5]张敏霞.程序设计语言课程教学方法改革的探索与实践[J].北京:中国高教研究,2004,2:90-90

猜你喜欢
程序设计学期编程
新的学期 新的尝试
编程,是一种态度
期末冲刺高二上学期期末模拟卷
元征X-431实测:奔驰发动机编程
编程小能手
基于Visual Studio Code的C语言程序设计实践教学探索
纺织机上诞生的编程
从细节入手,谈PLC程序设计技巧
八年级(上学期)期末测试题(D)
高职高专院校C语言程序设计教学改革探索