1课程设计的总体安排
一个优秀的专业软件或软件系统,往往需要专业技术人员与软件开发人员经过长期的合作才能完成。作为课程设计,我们不必重现这一完整的过程,但需要完成几个必要的阶段,即调研分析、软件设计、编程实现这3个过程。一般软件的开发过程中都有软件测试的阶段,但本课程设计主要在于让学生独立研发,基本的测试工作都在编程实现中完成,因此不将软件测试作为单独的任务。在完成软件程序的编制后,应要求学生撰写相应的研究报告。一个项目的研究报告是对该项目的研发过程的总结,对研发成果的展示,甚至有时还能弥补一些实际问题中的不足。对于研发团队自身,积累的研究报告也是团队内部人员总结提高和培养新人的重要材料。因此,我们把研究报告的撰写也作为一项重要的任务。最后,让学生各自按实际情况撰写一份简要的心得体会,这不仅是学生自我总结和提高的过程,更是教师掌握学生学习和研发情况的信息来源。因此,本课程设计主要分为调研分析、软件设计和实现、研究报告撰写和心得体会撰写4个部分,顺序依次完成。
2调研分析
对于计算机专业的学生来说,“瓦斯涌出量预测”这一问题是很陌生的,学生要完全从零开始,逐渐认识和理解这一问题的实质。在这一过程中,学生必须要借助专业文献数据库(如CNKI、维普等),才能较好地理解这一问题。查阅专业的文献,不仅要学会使用工具,还要学会逐步地积累知识,并及时利用已有知识深入查阅,不断反复,逐步弄清一个问题,这对提高学生自主学习、独立认识问题的能力有很大的帮助。但在具体的实施过程中,若操作不当,仍然容易造成学生查阅过度深入,甚至导致有些学生“钻牛角尖”的情况。因此,需要提供一个调研的大致思路,对调研过程进行简化,并对查阅的内容进行一定的限制。调研的思路大致分为4步:第一步,弄清瓦斯的定义及其用途和危害;第二步,基于对瓦斯用途和危害的认识,理解预测瓦斯涌出量对煤炭开发现场的实际意义;第三步,调研目前预测瓦斯涌出量的主要算法;第四步,选取一个算法,较为深入地学习并利用程序实现或借助其他工具实现。在实际的教学过程中,前2步调研都不难完成,在第3步和第4步教学中,应对学生的任务做一些限制。目前预测瓦斯涌出量的算法很少,如GM(1,1)[4]、BP神经网络[5]、支持向量机[6]、多元线性回归[7]等,要将这些算法都调研清楚显然是不现实的。因此,在实际的教学过程当中,应极大简化第3步的要求,让学生查阅几篇相关内容的综述性文献,对目前的主要算法大致有一个印象即可。同时,以上提及的一些常用算法,若不借助专业的数学软件(如Matlab、SPSS),则很难直接用一般的程序语言实现(如C++、C#、Java等)。因此,本次教学将预测算法固定为支持向量机预测模型。在学生理解了支持向量机基本原理后,学习当前流行的机器学习算法包Accord.NET的使用。该算法包对学生来讲又是一个全新的内容,并且目前的说明文档只有英文版,因此这对提高学生学习和掌握新的工具和提高英文的应用能力也有所帮助。同时,该算法包集成了大量流行的机器学习、统计分析、图像处理等方法[8-11],这对学生今后的学习和工作都会有一定的帮助。
3软件设计和实现
完成了以上调研,学生已大致明确此次课程设计需要完成的软件编程任务。文献[12]提出了计算机实验课程中的项目分解教学法,建议由教师将一个项目拆解为不同的模块,再将各模块对应不同的知识点进行教学。我们认同这样的教学方法,但在实际的操作过程中,将部分项目拆解的任务交给学生,由他们自行讨论该软件的架构设计、各模块设计和各项工作的分工。这种方式更能提高学生的自主性,发挥学生的特长,锻炼他们的团队合作精神。在具体的教学过程中,由教师给出大致设计思路,将本次课程设计的功能分为3个部分:数据输入、数据处理、数据输出。为尽可能减少学生的工作量,我们采用.net2.0以上的平台进行开发,鼓励学生利用.net自带的各种应用程序接口和数据处理的工具,如处理集合的LINQ。考虑到煤炭开发现场的工作条件的限制,在设计数据输入功能时,应尽可能采用简单的数据存储工具,如CSV文件、Excel等。输出尽量采用图形和表格的形式,并且需要制作报表的生成功能。在完成软件的设计和实现的过程中,学生需要充分调用自己已学的知识,如C#基本语法、面向对象设计等内容,并且还需要自行思考读取和输出数据的方法、设计和制作软件界面、学习Accord.net算法集的使用方法,这对学生巩固基础知识、扎实程序设计基本功、学会灵活运用知识有着积极的作用。
4研究报告的撰写
一份高质量的研究报告往往能起到画龙点睛,甚至弥补实际开发中的不足的作用。研究报告是对已完成工作的总结,它详细记录了认识问题和解决问题的过程,描述了认识和解决问题的方法,最终得出成果和不足等重要的内容。研发团队在撰写研究报告的过程,也是重新认识问题、总结解决方案的过程。团队中各成员可以借助这一过程重新认识自己在研发工作中的成长和不足,深入了解其他成员的工作,加深对项目的整体认识。即使本次研发仍有诸多问题未能解决,但借助研究报告,可以方便以后进一步解决或与其他团队交流,然后共同解决。所以,虽然我们不要求学生写出高质量的研究报告,但仍然要求学生完成一份完整的研究报告。研究报告应分为以下4个部分:(1)瓦斯涌出量预测问题的背景;(2)预测瓦斯涌出量的方法;(3)软件的设计与实现;(4)取得的成果与不足。前2个部分主要是对调研和分析的总结,这2部分内容要求学生用自己的语言将问题阐述清楚即可。第3部分是此次研究报告的重点,因为这里涉及学生自主完成的内容最多,涉及到的相关专业课程的知识也是最多。在软件的设计和实现过程中,有很多部分是让学生自行讨论和思考,各自选用不同的方法进行实现,那么这些部分正是体现各小组的特色的地方。对于这些部分的技术层面的阐述应该重点把握,详细阐述。第4部分同样会出现各小组的报告各有特色的情况,因为各组学生基础的差异导致软件完成的质量各有不同,又由于各组学生采用读取、输出数据的方法或者工具不同,最终软件运行的效果也会各有千秋。但这些情况都属正常,学生在实践中凸显出各自的长处和不足,更有利于学生认识和提高自己。
5心得体会的撰写
不同于传统的教学模式,本次课程设计每个学生都无一例外地要参与其中,与队友共同完成课程设计中的每项工作。由于自身情况不同,每个学生在团队中担任的角色,以至在项目中的成长历程都有不同。因此,心得体会的撰写主要让学生从3个方面简要叙述:第一,简要说明自己在研发过程中完成的任务以及完成情况;第二,在完成的过程中遇到了何种困难,最终如何克服的;第三,对本次课程设计开发的软件,还有没有其他的想法,比如算法改进、软件的进一步优化等。学生从这3个方面出发,可以较为完整、系统地回顾、整理、总结这一次的项目经验,教师也可以从这3个方面较为完整地把握学生的学习和成长情况。
6结束语
本文从一个具体的专业软件开发项目入手进行软件开发的课程设计,让学生自主调研分析一个“陌生”的问题,并基于对新问题的认识自行设计和开发一个专业软件。这不仅能够锻炼学生的动手实践能力和团队合作精神,更能帮助学生认识专业知识的重要性,激发学生的学习兴趣。同时,我们还可以根据其他的问题或研究项目,将其简化、加工,设计出更多有利于计算机专业实践课程的设计,丰富我们的课堂和实验室教学,提高学生的学习兴趣和专业实力。
作者:崔炯屏 唐亮 王永友 单位:西南石油大学 艺术学院 西南石油大学 计算机科学学院