張艷梅 姜淑娟 袁冠 鞠小林
摘要:分析國內(nèi)高?!?NET編程技術(shù)”課程教育現(xiàn)狀,結(jié)合卓越工程師培養(yǎng)計劃的要求,提出旨在提升學(xué)生實際軟件開發(fā)技能的“.NET編程技術(shù)”課程教學(xué)實施方案。
關(guān)鍵詞:.NET編程;教學(xué)評價體系;教學(xué)改革
0.引言
Microsoft.NET是微軟開發(fā)的一套具有革命性的軟件和服務(wù)平臺,利用互聯(lián)網(wǎng)為基礎(chǔ)的計算和通訊手段,通過先進(jìn)的軟件技術(shù)和眾多的職能設(shè)備提供更簡單、更個性化、更有效的互聯(lián)網(wǎng)服務(wù)。.NET框架編程技術(shù)是面向下一代企業(yè)級的應(yīng)用數(shù)據(jù)計算平臺,正在廣泛地應(yīng)用于企業(yè)級應(yīng)用、電子商務(wù)(政務(wù))、遠(yuǎn)程教育等應(yīng)用領(lǐng)域的開發(fā),是當(dāng)前主流的軟件開發(fā)平臺之一??梢?,作為培養(yǎng)軟件開發(fā)人才實際技能的“.NET編程技術(shù)”課程的重要性日益凸顯。
1.“.NET編程技術(shù)”課程教學(xué)現(xiàn)狀概述
目前,國內(nèi)高等學(xué)校的計算機專業(yè)或相關(guān)專業(yè)均開設(shè)至少一門程序設(shè)計語言課程,并且通常面向軟件開發(fā)人才培養(yǎng),開設(shè)一批編程技術(shù)課程,其中包括“.NET編程技術(shù)”課程。然而,與其他很多工科課程一樣,“.NET編程技術(shù)”課程是一門理論和實踐并重的核心技術(shù)課程,課程的教學(xué)組織存在一定的難度,要取得好的教學(xué)效果,面臨很大的挑戰(zhàn)。眾所周知,多數(shù)高校教師缺乏實際軟件開發(fā)經(jīng)驗,對課程教學(xué)內(nèi)容存在定位不明確、課堂教學(xué)空洞、知識與軟件開發(fā)實踐脫節(jié)、實踐教學(xué)環(huán)節(jié)薄弱等問題。此外,學(xué)生自身也存在若干問題。例如,學(xué)習(xí)目標(biāo)停留在掌握語法和個別編程技巧上,缺乏社會活動體驗和軟件實際開發(fā)經(jīng)驗,導(dǎo)致最終學(xué)習(xí)結(jié)果是學(xué)生只掌握零碎的程序設(shè)計語言的語法知識,很難將這些知識與工業(yè)界實踐結(jié)合起來。因此,“.NET編程技術(shù)”教學(xué)改革重點是探索如何結(jié)合工業(yè)界實踐設(shè)計教學(xué)內(nèi)容,合理組織實踐教學(xué),構(gòu)建科學(xué)的教學(xué)架構(gòu),使得其他實踐類課程也可以從中得到啟發(fā)。
近年來,高校內(nèi)廣大投身實踐類課程教育的工作者、研究人員,以及軟件產(chǎn)業(yè)界工程技術(shù)人員,均從不同角度對該類課程知識點設(shè)計和教學(xué)實施進(jìn)行了積極思考與廣泛探索,取得了一些研究成果。例如,結(jié)合用人單位的實際需求設(shè)計教學(xué)內(nèi)容,在實踐環(huán)節(jié)引入國內(nèi)培訓(xùn)機構(gòu)的成功案例,采用訂單式人才培養(yǎng)模式,提升了學(xué)生的實踐能力和實踐教學(xué)效果。針對軟件企業(yè)對人才實踐能力的需求,采用與產(chǎn)業(yè)界實踐相類似的案例組織教學(xué)內(nèi)容。筆者所在的教學(xué)研究小組,基于日常的教學(xué)實踐,提出了一種融合思維導(dǎo)圖與知識圖的KM教學(xué)方法,用于組織教學(xué),在教學(xué)環(huán)節(jié)安排方法上,提出一體化多層次問題啟發(fā)式教學(xué)方法;在實踐教學(xué)平臺構(gòu)建方面,研究人員提出了利用校園網(wǎng)整合課程教學(xué)資源,實現(xiàn)師生互動、資源共享的目標(biāo)。
2.“.NET編程技術(shù)”課程教學(xué)存在的問題
通過對中國礦業(yè)大學(xué)、南通大學(xué)、南京大學(xué)、東南大學(xué)等國內(nèi)高校的軟件工程實踐類課程教學(xué)調(diào)研,結(jié)合多年的“.NET編程技術(shù)”課程教學(xué)實踐,我們發(fā)現(xiàn)雖然教師對課程教學(xué)進(jìn)行了廣泛的改革,但并未取得公認(rèn)的好的教學(xué)效果。調(diào)查發(fā)現(xiàn),學(xué)生普遍對.NET在實際如何應(yīng)用沒有直觀感受,造成的結(jié)果就是學(xué)生只是了解到.NET編程的基本語法,編寫的程序并不能設(shè)計開發(fā)一個像工業(yè)界提供的應(yīng)用軟件或工具軟件那樣“有用的”軟件。
2.1課程教學(xué)內(nèi)容脫離工業(yè)實踐
目前的教學(xué)現(xiàn)狀之一是教師偏愛講授理論和方法,缺少與產(chǎn)業(yè)界密切聯(lián)系的實例,對于同樣沒有實踐經(jīng)歷的學(xué)生而言,課程聽來空洞無趣也就不足為奇了。目前的教學(xué)現(xiàn)狀之二是教師臆想出一些脫離生產(chǎn)和生活實際的實踐項目,并且在實踐環(huán)節(jié)中,學(xué)生完成實踐項目的目的只是為了應(yīng)付任課老師檢查??梢姡瑢W(xué)生和老師很難得到系統(tǒng)性鍛煉,并且也與產(chǎn)業(yè)界軟件行業(yè)嚴(yán)重脫節(jié)。
此外,現(xiàn)有的“.NET編程技術(shù)”教學(xué)素材大多是任課教師自己設(shè)計實例,或者從一些互聯(lián)網(wǎng)站(如開源網(wǎng)站、軟件公司網(wǎng)站)下載的小項目。作為整個課程來講,不同素材之間大多是孤立的,聯(lián)系松散,缺乏系統(tǒng)設(shè)計,不利于培養(yǎng)學(xué)生的實踐技能。這樣導(dǎo)致學(xué)生掌握的知識是零散的、不系統(tǒng)的,缺乏對課程的整體把握。
2.2缺乏完善的課程教學(xué)平臺
目前很多高校沒有“.NET編程技術(shù)”課程的教學(xué)平臺,即便有些高校搭建了相應(yīng)的教學(xué)平臺,但是存在很多問題,如內(nèi)容枯燥乏味、表現(xiàn)形式單一、功能無法滿足學(xué)生需求、訪問量較低、互動性不強等。因此,我們需要搭建一個更加完善的“.NET編程技術(shù)”課程教學(xué)平臺,用以提高該課程的教學(xué)效果。
2.3缺乏科學(xué)的教學(xué)評價體系
目前,學(xué)校采用的評價系統(tǒng)針對的是全校開設(shè)的所有課程,參與評分的是作為教學(xué)過程中主要參與者的學(xué)生,他們屬于利益相關(guān)方,因此,由于學(xué)生在評分時容易受主觀因素的影響,并不能進(jìn)行客觀的評分。此外,通過調(diào)查發(fā)現(xiàn),年輕教師會由于擔(dān)心學(xué)生打分太低影響其職稱評審和績效考核等,往往導(dǎo)致在平時的教學(xué)過程中迎合學(xué)生的滿意而降低課程的學(xué)習(xí)要求。這種互惠互利的局面并不利于提高課程教學(xué),因此現(xiàn)有的評價系統(tǒng)片面,不合理。
3.教學(xué)改革探索
3.1以培養(yǎng)工業(yè)應(yīng)用人才為目標(biāo),構(gòu)建合理的教學(xué)師資結(jié)構(gòu)
課程目標(biāo):培養(yǎng)學(xué)生具備從事C#編程所必需的基本知識和基本技能;初步形成解決實際問題的能力,為從事程序開發(fā)工作打下基礎(chǔ),并注重滲透思想教育,加強學(xué)生的計算機信息管理職業(yè)道德觀念。
教師是組織和推動課程教學(xué)的主體?,F(xiàn)階段高校實踐類教師多為年輕的博士,他們思維活躍,能適應(yīng)當(dāng)今社會知識快速發(fā)展的趨勢,然而這些年輕教師基本上缺乏實際軟件開發(fā)經(jīng)驗。我們注意到,一些大的IT企業(yè),出于各種目的,往往很樂意派出企業(yè)的工程師教會學(xué)生使用他們的軟件產(chǎn)品。因此,可以將高校教師、企業(yè)里熟悉.NET的人才結(jié)對,充分利用雙方的優(yōu)勢,教會學(xué)生真正的工業(yè)應(yīng)用軟件設(shè)計、開發(fā)和測試等。
以中國礦業(yè)大學(xué)為例,通過實踐,我們提出一條主講教師與助教結(jié)對的教學(xué)模式。首先,借助搜索引擎、博客、微博、微信等媒體,了解一些工業(yè)界目前活躍又熱心教育的IT人士;其次,通過溝通說服對方愿意承擔(dān)助教角色,基于教學(xué)改革研究課題承擔(dān)一定的助教費用。這樣可以便捷地構(gòu)建“主講老師+助教”這樣的結(jié)對教學(xué)組合。具體而言,主講教師負(fù)責(zé)基礎(chǔ)理論講解,與來自工業(yè)界的助教協(xié)商設(shè)計實踐環(huán)節(jié)內(nèi)容;學(xué)生完成實踐環(huán)節(jié)練習(xí),并通過博客形式提交練習(xí)成果報告;助教則負(fù)責(zé)基于自身在工業(yè)界摸爬滾打的工作經(jīng)驗,點評學(xué)生提交的博客報告。這樣做的好處在于,可以讓學(xué)生直接聽到來自工業(yè)界反饋的聲音,并根據(jù)助教的點評意見改進(jìn)實踐內(nèi)容。
3.2緊密聯(lián)系工業(yè)需求,構(gòu)建課程教學(xué)體系
我們將“.NET編程技術(shù)”課程的教學(xué)體系劃分為個人技能訓(xùn)練(PSP)、結(jié)對編程、團隊開發(fā)及項目管理4大模塊。高校學(xué)生的人才培養(yǎng)目標(biāo)可以分為科學(xué)型、工程型、應(yīng)用型3種。教學(xué)時,我們基于教學(xué)大綱的基本要求,同時根據(jù)不同的培養(yǎng)目標(biāo),設(shè)置不同的要求;針對上面4大模塊,劃分出詳細(xì)的知識要點,對不同的人才培養(yǎng)目標(biāo),劃分出必須掌握的關(guān)鍵知識域,在理論教學(xué)部分重點開展教學(xué)。
對于“.NET編程技術(shù)”類課程,實踐教學(xué)內(nèi)容組織尤為重要。學(xué)生們期望得到適應(yīng)工業(yè)界需求的技能訓(xùn)練,為此需要系統(tǒng)搜集和組織實訓(xùn)素材。素材的選擇以助教為主,與主講老師協(xié)商選取工業(yè)界實踐軟件開發(fā)案例,作為學(xué)生實訓(xùn)素材。在教學(xué)過程中,我們通常采用3種途徑構(gòu)建這些軟件素材:
(1)從開源網(wǎng)站下載典型的開源軟件。Github、SourceForge等網(wǎng)站通常能提供各類軟件的歷史版本,學(xué)生可以選擇重構(gòu)軟件,也可基于源代碼上進(jìn)行迭代改進(jìn)。
(2)從軟件應(yīng)用市場獲取可運行版本的軟件。安排學(xué)生安裝試用,進(jìn)而抽取出軟件實現(xiàn)的實際需求,進(jìn)而采用逆向工程方法,讓學(xué)生采用.NET編程技術(shù)模仿已有軟件來設(shè)計開發(fā)新軟件。
(3)利用歷次教學(xué)過程中學(xué)生開發(fā)的軟件。主講老師把歷屆學(xué)生完成得較好的.NET項目收集起來,用于下一屆學(xué)生二次開發(fā)。以中國礦業(yè)大學(xué)為例,我們利用Github將優(yōu)秀的學(xué)生項目Fork到老師的Github的Repository的某一分支,這樣下一屆學(xué)生開發(fā)時,可以從主講教師的Github的Repository分支Fork到自己Github的子分支,然后基于Github開展個人技能訓(xùn)練(PSP)、結(jié)對編程、團隊協(xié)作開發(fā),同時利用Github進(jìn)行項目管理。
上述3種素材構(gòu)建方式各有利弊。第1種方式的好處在于可以直接獲得工業(yè)軟件的源代碼,從而便于學(xué)生模仿,適用于學(xué)生初學(xué).NET編程階段;第2種方式由于需要學(xué)生試用軟件,對學(xué)生的知識結(jié)構(gòu)、編程能力、實際項目需求分析能力、軟件架構(gòu)能力有較高的要求,適合于結(jié)對編程、團隊開發(fā)的項目;第3種方式的好處有二:一是學(xué)生可以借助Github中管理的歷史版本信息,看到該軟件項目開發(fā)過程中的歷次提交信息、Bug修復(fù)信息,有助于避免犯同類型錯誤,二是主講老師可以很熟悉該軟件項目,在教學(xué)和實驗指導(dǎo)過程中可以更有針對性地加以引導(dǎo)。
3.3實訓(xùn)驅(qū)動的組織教學(xué)
在構(gòu)建科學(xué)的教學(xué)知識體系和實訓(xùn)素材庫之后,就可以設(shè)計教學(xué)活動,科學(xué)地組織教學(xué)順序。
“.NET編程技術(shù)”課程著重培養(yǎng)學(xué)生的實際動手能力,同時要求學(xué)生滿足一定的工業(yè)需求素養(yǎng)。我們的方式是通過科學(xué)組織教學(xué),基于實訓(xùn)項目,培養(yǎng)學(xué)生的實踐能力,大力推廣“做中學(xué)”教學(xué)模式。為培養(yǎng)學(xué)生的創(chuàng)新能力,根據(jù)軟件編程人員工作崗位職業(yè)能力的需求,圍繞軟件編程人員應(yīng)掌握的工作任務(wù),同時對應(yīng)于前面劃分的4組課程教學(xué)模塊,我們從實訓(xùn)素材庫中分類選取其中的4個實訓(xùn)項目。在選取實訓(xùn)項目時,保證每個項目之間不是彼此孤立的,它們能夠系統(tǒng)考核所學(xué)的知識點,能夠使得學(xué)生對課程進(jìn)行整體把握。同時,我們對每個項目都給出了目標(biāo)和要求,由學(xué)生自行選題,進(jìn)行程序設(shè)計。
在不同教學(xué)模塊的項目中,我們分別提出了不同的要求和需要學(xué)生回答的問題,學(xué)生必須以博客形式,寫出階段性工作報告。教學(xué)中,我們以工作任務(wù)為中心組織課程內(nèi)容,讓學(xué)生在完成項目過程中來構(gòu)建相關(guān)理論知識,并通過項目的實現(xiàn)來形成相應(yīng)職業(yè)能力,充分發(fā)揮學(xué)生的學(xué)習(xí)主觀能動性。由主講教師、助教點評學(xué)生提交的博客,同時用加分形式,鼓勵同學(xué)們開展博客互評。這樣做的好處在于:在點評的過程中,助教和主講教師可以引導(dǎo)學(xué)生理論聯(lián)系實際,應(yīng)用課本中的語法知識來解決實際編程問題,特別是助教可以將其工業(yè)開發(fā)經(jīng)驗,以點評的形式更直接地傳授給學(xué)生,讓學(xué)生理解和接受這些知識、經(jīng)驗的時候,不再感到抽象和枯燥。
以中國礦業(yè)大學(xué)為例,我們通過“項目的提出”,分解出“能力目標(biāo)”,聯(lián)系“日常典型案例”,引出基本知識點,結(jié)合知識點掌握“分解活動”操作要領(lǐng)。以上工作完成之后,提出項目要求達(dá)到的目標(biāo),使學(xué)生獨立(或者分組)實現(xiàn)“項目目標(biāo)”,結(jié)合項目的操作過程,最后完成實訓(xùn)體會與總結(jié)。采用實際項目導(dǎo)向教學(xué),學(xué)生在課程學(xué)習(xí)中思路清晰,項目目標(biāo)明確,學(xué)習(xí)積極性高,在已經(jīng)實施的教學(xué)質(zhì)量跟蹤調(diào)查中,學(xué)生反饋效果良好。
3.4“.NET編程技術(shù)”課程教學(xué)平臺構(gòu)建設(shè)想
目前我們利用互聯(lián)網(wǎng)即時通信技術(shù)(IM),實現(xiàn)了同學(xué)、主講教師和助教的實時溝通、資源共享;利用互聯(lián)網(wǎng)內(nèi)容發(fā)布技術(shù)(博客平臺),實現(xiàn)了同學(xué)作業(yè)報告和點評互動;利用軟件版本控制(Github)技術(shù),實現(xiàn)了實踐項目的迭代開發(fā);利用Outlook軟件的RSS服務(wù),實現(xiàn)了同學(xué)博客提交與點評的跟蹤;利用辦公軟件(Excel),實現(xiàn)了同學(xué)們平時成績和總評成績的加權(quán)求和及成績自動發(fā)布;利用免費問卷調(diào)查軟件,實現(xiàn)了期中和期末的問卷調(diào)查。通過上述各教學(xué)環(huán)節(jié)的實踐,厘清各項需求。為了進(jìn)一步提高“.NET編程技術(shù)”課程教學(xué)網(wǎng)絡(luò)化和自動化水平,我們需要構(gòu)建一個教學(xué)平臺,以整合上述教學(xué)需求。
教學(xué)平臺建設(shè)總體目標(biāo)是教學(xué)資源共享(教學(xué)大綱、課件、課程學(xué)習(xí)資料、講課視頻等),系統(tǒng)交互(練習(xí)試題發(fā)布、作業(yè)發(fā)布、答疑),項目實踐(工具軟件及其教程、實驗對象程序、實踐操作規(guī)范及實訓(xùn)任務(wù)),課程問卷調(diào)查,提供內(nèi)容服務(wù)(RSS)等功能。此外,該教學(xué)平臺還能與Github實現(xiàn)無縫鏈接。
教師登錄平臺以后,可以直接看到學(xué)生提出的問題,并給予解答。除此之外,學(xué)生和學(xué)生之間、學(xué)生和教師之間還可以在該平臺中進(jìn)行群體交流、討論,充分體現(xiàn)“師生交流、資源共享”的特點?!?NET編程技術(shù)”課程以發(fā)布消息的形式體現(xiàn)在線交流共享業(yè)務(wù),幫助教師上傳資料,以輔助教師與學(xué)生的課堂教學(xué),信息雙向流通,構(gòu)成“師生交流、資源共享”的交流形式。學(xué)生可以將自己的疑問、心得體會等信息發(fā)布到平臺,達(dá)到共同討論交流的目的。師生交流、資源共享貫穿于整個“.NET編程技術(shù)課程的學(xué)習(xí)過程中,方便教師和學(xué)生在使用該平臺的任何時候都可以進(jìn)行交流,進(jìn)而提高該課程的教學(xué)效果。
3.5構(gòu)建科學(xué)的教學(xué)評價反饋機制
如何評價學(xué)生的學(xué)習(xí)過程?我們的做法之一是引入助教參與設(shè)計實踐素材和作業(yè)點評,可以一方面用工業(yè)界真實案例激發(fā)學(xué)生的學(xué)習(xí)興趣,另一方面實現(xiàn)針對性的點評。調(diào)查表明,有“干貨”的點評也是學(xué)生喜聞樂見的。我們的做法之二是建立QQ討論群,由助教和主講教師針對學(xué)生學(xué)習(xí)和作業(yè)中存在的共性問題,在QQ討論群中集中開展討論,集中答疑。我們的做法之三是鼓勵學(xué)生、團隊之間開展學(xué)習(xí)競賽。通過比賽編程速度、程序質(zhì)量(Bug數(shù)量)等,每周在主講教師的博客上,以圖形形式公布每個同學(xué)的得分,讓同學(xué)們直觀感受競爭的壓力。借助教改經(jīng)費購買一些獎品(如淘寶定制的T恤、計算機相關(guān)的編程書籍等),每學(xué)期開展2次優(yōu)勝者頒獎總結(jié)大會,給優(yōu)勝者實物獎勵。
如何評價主講教師和助教的教學(xué)組織活動?我們采用了一種靈活的調(diào)查問卷方式,分別在學(xué)期中和學(xué)期末開展2次問卷調(diào)查。期中問卷設(shè)計3個主要問題:①你覺得主講教師和助教需要堅持做的是哪一件事情?②你覺得主講教師和助教需要立即停止做的是哪一件事情?③你覺得主講教師和助教應(yīng)該開始哪一件新的事情?期中問卷的目的是為了讓講課教師及時對教學(xué)方式做出調(diào)整,使得教學(xué)更貼合學(xué)生的需求,也有助于平息學(xué)生中的不滿,使得學(xué)生感受到自己受到重視,從而保持參與學(xué)習(xí)的主動性。期末問卷關(guān)注于當(dāng)前學(xué)期的教學(xué)效果,用于對教學(xué)方式的整體評價。無論期中問卷還是期末問卷的設(shè)計,我們都強調(diào)與學(xué)生的學(xué)分無關(guān),與教師的績效考核無關(guān),避免調(diào)查結(jié)果的偏向性,以盡可能做到客觀公正。
4.結(jié)語
通過對“.NET編程技術(shù)”課程的傳統(tǒng)教學(xué)模式所存在的問題進(jìn)行剖析,我們對課程的師資結(jié)構(gòu)、教學(xué)體系、教學(xué)內(nèi)容組織、課程教學(xué)平臺、教學(xué)反饋機制5個方面進(jìn)行了詳細(xì)的論證,提出了符合教學(xué)規(guī)律的改革措施。經(jīng)過2屆的教學(xué)實踐,我們培養(yǎng)出近200名熟悉.NET編程技術(shù)的學(xué)生,取得了良好的教學(xué)效果。