崔炯屏,唐 亮,王永友
(1.西南石油大學 藝術學院,四川 成都 610500; 2.西南石油大學 計算機科學學院,四川 成都 610500)
一套完整的專業軟件往往需要專業技術人員和軟件開發人員合作完成。這一過程不僅要求軟件開發人員具備扎實的軟件設計和編程的能力,更需要具備快速學習新的知識和分析問題的能力。然而,目前在校學生普遍感覺學習的課程之間關聯性不強,即使學習了幾門程序設計課程,也仍然不會制作軟件。用人單位也感覺應屆大學生的編程能力不強、項目經驗不足[1-3]。對于實踐教學的改革研究,各院校都在進行著探索。例如軟件工程教學“項目化”[4]、基于“項目驅動”的軟件工程教學[5-6]、校企合作模式[7]等。然而,針對行業軟件開發的教學實踐卻少有報道。因此,我們選用了一個軟件專業學生較為陌生的煤炭行業的一個問題——“瓦斯涌出量預測”作為專業背景,讓學生以團隊的形式自主調研、自主設計、自主開發出一個瓦斯涌出量預測軟件。本課程設計的教學目的,不僅在于提高學生的基本功、分析和解決問題的能力,更是要讓學生在實際的操作過程中體會團隊合作的重要性,積累實際的項目經驗。同時,由于有一個實際、具體的應用背景,本課程設計還可以增強學生在學習中的目的性,提高其學習專業知識和動手實踐的興趣。
一個優秀的專業軟件或軟件系統,往往需要專業技術人員與軟件開發人員經過長期的合作才能完成。作為課程設計,我們不必重現這一完整的過程,但需要完成幾個必要的階段,即調研分析、軟件設計、編程實現這3個過程。一般軟件的開發過程中都有軟件測試的階段,但本課程設計主要在于讓學生獨立研發,基本的測試工作都在編程實現中完成,因此不將軟件測試作為單獨的任務。在完成軟件程序的編制后,應要求學生撰寫相應的研究報告。一個項目的研究報告是對該項目的研發過程的總結,對研發成果的展示,甚至有時還能彌補一些實際問題中的不足。對于研發團隊自身,積累的研究報告也是團隊內部人員總結提高和培養新人的重要材料。因此,我們把研究報告的撰寫也作為一項重要的任務。最后,讓學生各自按實際情況撰寫一份簡要的心得體會,這不僅是學生自我總結和提高的過程,更是教師掌握學生學習和研發情況的信息來源。因此,本課程設計主要分為調研分析、軟件設計和實現、研究報告撰寫和心得體會撰寫4個部分,順序依次完成。
對于計算機專業的學生來說,“瓦斯涌出量預測”這一問題是很陌生的,學生要完全從零開始,逐漸認識和理解這一問題的實質。在這一過程中,學生必須要借助專業文獻數據庫(如CNKI、維普等),才能較好地理解這一問題。查閱專業的文獻,不僅要學會使用工具,還要學會逐步地積累知識,并及時利用已有知識深入查閱,不斷反復,逐步弄清一個問題,這對提高學生自主學習、獨立認識問題的能力有很大的幫助。但在具體的實施過程中,若操作不當,仍然容易造成學生查閱過度深入,甚至導致有些學生“鉆牛角尖”的情況。因此,需要提供一個調研的大致思路,對調研過程進行簡化,并對查閱的內容進行一定的限制。
調研的思路大致分為4步:第一步,弄清瓦斯的定義及其用途和危害;第二步,基于對瓦斯用途和危害的認識,理解預測瓦斯涌出量對煤炭開發現場的實際意義;第三步,調研目前預測瓦斯涌出量的主要算法;第四步,選取一個算法,較為深入地學習并利用程序實現或借助其他工具實現。
在實際的教學過程中,前2步調研都不難完成,在第3步和第4步教學中,應對學生的任務做一些限制。目前預測瓦斯涌出量的算法很少,如GM(1,1)[4]、BP神經網絡[5]、支持向量機[6]、多元線性回歸[7]等,要將這些算法都調研清楚顯然是不現實的。因此,在實際的教學過程當中,應極大簡化第3步的要求,讓學生查閱幾篇相關內容的綜述性文獻,對目前的主要算法大致有一個印象即可。同時,以上提及的一些常用算法,若不借助專業的數學軟件(如Matlab、SPSS),則很難直接用一般的程序語言實現(如C++、C#、Java等)。因此,本次教學將預測算法固定為支持向量機預測模型。在學生理解了支持向量機基本原理后,學習當前流行的機器學習算法包Accord.NET的使用。該算法包對學生來講又是一個全新的內容,并且目前的說明文檔只有英文版,因此這對提高學生學習和掌握新的工具和提高英文的應用能力也有所幫助。同時,該算法包集成了大量流行的機器學習、統計分析、圖像處理等方法[8-11],這對學生今后的學習和工作都會有一定的幫助。
完成了以上調研,學生已大致明確此次課程設計需要完成的軟件編程任務。文獻[12]提出了計算機實驗課程中的項目分解教學法,建議由教師將一個項目拆解為不同的模塊,再將各模塊對應不同的知識點進行教學。我們認同這樣的教學方法,但在實際的操作過程中,將部分項目拆解的任務交給學生,由他們自行討論該軟件的架構設計、各模塊設計和各項工作的分工。這種方式更能提高學生的自主性,發揮學生的特長,鍛煉他們的團隊合作精神。
在具體的教學過程中,由教師給出大致設計思路,將本次課程設計的功能分為3個部分:數據輸入、數據處理、數據輸出。為盡可能減少學生的工作量,我們采用.net 2.0以上的平臺進行開發,鼓勵學生利用.net自帶的各種應用程序接口和數據處理的工具,如處理集合的LINQ??紤]到煤炭開發現場的工作條件的限制,在設計數據輸入功能時,應盡可能采用簡單的數據存儲工具,如CSV文件、Excel等。輸出盡量采用圖形和表格的形式,并且需要制作報表的生成功能。在完成軟件的設計和實現的過程中,學生需要充分調用自己已學的知識,如C#基本語法、面向對象設計等內容,并且還需要自行思考讀取和輸出數據的方法、設計和制作軟件界面、學習Accord.net算法集的使用方法,這對學生鞏固基礎知識、扎實程序設計基本功、學會靈活運用知識有著積極的作用。
一份高質量的研究報告往往能起到畫龍點睛,甚至彌補實際開發中的不足的作用。研究報告是對已完成工作的總結,它詳細記錄了認識問題和解決問題的過程,描述了認識和解決問題的方法,最終得出成果和不足等重要的內容。研發團隊在撰寫研究報告的過程,也是重新認識問題、總結解決方案的過程。團隊中各成員可以借助這一過程重新認識自己在研發工作中的成長和不足,深入了解其他成員的工作,加深對項目的整體認識。即使本次研發仍有諸多問題未能解決,但借助研究報告,可以方便以后進一步解決或與其他團隊交流,然后共同解決。所以,雖然我們不要求學生寫出高質量的研究報告,但仍然要求學生完成一份完整的研究報告。研究報告應分為以下4個部分:
(1) 瓦斯涌出量預測問題的背景;
(2) 預測瓦斯涌出量的方法;
(3) 軟件的設計與實現;
(4) 取得的成果與不足。
前2個部分主要是對調研和分析的總結,這2部分內容要求學生用自己的語言將問題闡述清楚即可。第3部分是此次研究報告的重點,因為這里涉及學生自主完成的內容最多,涉及到的相關專業課程的知識也是最多。在軟件的設計和實現過程中,有很多部分是讓學生自行討論和思考,各自選用不同的方法進行實現,那么這些部分正是體現各小組的特色的地方。對于這些部分的技術層面的闡述應該重點把握,詳細闡述。第4部分同樣會出現各小組的報告各有特色的情況,因為各組學生基礎的差異導致軟件完成的質量各有不同,又由于各組學生采用讀取、輸出數據的方法或者工具不同,最終軟件運行的效果也會各有千秋。但這些情況都屬正常,學生在實踐中凸顯出各自的長處和不足,更有利于學生認識和提高自己。
不同于傳統的教學模式,本次課程設計每個學生都無一例外地要參與其中,與隊友共同完成課程設計中的每項工作。由于自身情況不同,每個學生在團隊中擔任的角色,以至在項目中的成長歷程都有不同。因此,心得體會的撰寫主要讓學生從3個方面簡要敘述:第一,簡要說明自己在研發過程中完成的任務以及完成情況;第二,在完成的過程中遇到了何種困難,最終如何克服的;第三,對本次課程設計開發的軟件,還有沒有其他的想法,比如算法改進、軟件的進一步優化等。學生從這3個方面出發,可以較為完整、系統地回顧、整理、總結這一次的項目經驗,教師也可以從這3個方面較為完整地把握學生的學習和成長情況。
本文從一個具體的專業軟件開發項目入手進行軟件開發的課程設計,讓學生自主調研分析一個“陌生”的問題,并基于對新問題的認識自行設計和開發一個專業軟件。這不僅能夠鍛煉學生的動手實踐能力和團隊合作精神,更能幫助學生認識專業知識的重要性,激發學生的學習興趣。同時,我們還可以根據其他的問題或研究項目,將其簡化、加工,設計出更多有利于計算機專業實踐課程的設計,豐富我們的課堂和實驗室教學,提高學生的學習興趣和專業實力。
[1] 馬玉潔.基于自主學習的計算機基礎教學改革研究[J].商丘師范學院學報,2011(3):l19-122,125.
[2] 馮博琴.計算機基礎教育新階段的教學改革研究[J].中國大學教學,2004(9):7-9.
[3] 張琳.大學計算機基礎課程教學模式研究[J].計算機教育,2009(7):88-90.
[4] 曾明星,周清平,王曉波,等.軟件工程專業“項目化”教學實施體系的構建[J].實驗室研究與探索,2013,32(5):157-163.
[5] 湯淼.軟件工程專業“項目驅動”實驗教學模式研究[J].實驗技術與管理,2013,30(4):267-268,271.
[6] 殷海明,魏遠旺.本科院校軟件工程教學模式探索[J].嘉興學院學報,2013,25(3):133-137.
[7] 王愛民,谷川.軟件工程專業校企合作實踐教學模式研究[J].實驗技術與管理,2012,29(1):143-145.
[8] 肖家平,戴廣龍.基于BP神經網絡分源預測綜采面瓦斯涌出量研究[J].安徽理工大學學報:自然科學版,2011(4):51-55.
[9] 崔邯龍,李海濤,孟文清.綜掘工作面瓦斯涌出量的支持向量機預測模型[J].煤炭工程,2009(2):75-77.
[10] 呂伏,梁冰,孫維吉,等.基于主成分回歸分析法的回采工作面瓦斯涌出量預測[J].煤炭學報,2012(1):113-116.
[11] 許德武.項目分解法在計算機實驗和理論教學中的應用[J].實驗室研究與探索,2013,32(1):98-101.
[12] 李昊,李杰,劉勇.礦井瓦斯涌出量的GM(1,1)模型研究[J].中國煤炭,2012(9):111-113.