劉 晨
(喀什大學(xué)計算機科學(xué)與技術(shù)學(xué)院,新疆 喀什 844000)
C#程序設(shè)計語言是微軟公司開發(fā)的一個面向?qū)ο蟮木幊陶Z言.很多本科院校都開設(shè)了C#程序設(shè)計這門課程.根據(jù)教育部《關(guān)于深化本科教育教學(xué)改革全面提高人才培養(yǎng)質(zhì)量的意見》(教高[2019]6 號)[1]等文件精神,需要堅持“以學(xué)生為中心”“產(chǎn)出導(dǎo)向”的教學(xué)理念[2-3].但是在實際教學(xué)過程中,“C#程序設(shè)計”課程傳統(tǒng)的教學(xué)模式是:語句語法格式,語句的功能介紹,具體實例解釋最后是上機實踐.在“C#程序設(shè)計”課程傳統(tǒng)的教學(xué)方法中,是以教師為主體不是以學(xué)生為中心.學(xué)生學(xué)習(xí)這門課程結(jié)束后,只知道一些語法概念,并不清楚這門程序設(shè)計課程具體能做什么,實際編程能力也很弱,不足以勝任企事業(yè)單位工作要求.面對上述問題,本文以實際指導(dǎo)學(xué)生參加中國大學(xué)生設(shè)計大賽新疆區(qū)賽區(qū)獲獎作品《濾鏡算法研究與實現(xiàn)》作為被選擇項目,提出一種基于項目分解的任務(wù)驅(qū)動式“C#程序設(shè)計”課程教學(xué)方法,從而提升學(xué)生發(fā)現(xiàn)問題、分析問題并最終解決問題的能力,增強學(xué)生實際的編程水平.
基于建構(gòu)主義學(xué)習(xí)理論的任務(wù)驅(qū)動教學(xué)方法是指任課教師將教學(xué)內(nèi)容分解設(shè)計成多個任務(wù),在滿足正常教學(xué)需要的前提下引導(dǎo)學(xué)生積極思考探索,掌握課程的知識點,培養(yǎng)發(fā)現(xiàn)問題、解決問題的能力,從而完成本門課程的學(xué)習(xí)[4-7].
任務(wù)驅(qū)動教學(xué)方式需要教師根據(jù)學(xué)科特點和教學(xué)內(nèi)容設(shè)計教學(xué)項目,以項目為基礎(chǔ),將項目分解,將教學(xué)內(nèi)容貫穿到整個項目中去.這樣既能滿足以學(xué)生為中心、教師為主導(dǎo)的教學(xué)方式,又能體現(xiàn)“產(chǎn)出導(dǎo)向”的OBE 理念.任課教師需要設(shè)計合理的教學(xué)方案,需要選擇合適的項目,以任務(wù)的形式讓學(xué)生掌握相關(guān)知識點,并最終能獨立或者協(xié)作完成整個項目.基于項目分解的任務(wù)驅(qū)動式教學(xué),使得學(xué)生不再以簡單的方式學(xué)習(xí)C#程序語法,而著重于使學(xué)生提高對問題的分析判斷和解決問題能力,提高學(xué)生的實際項目開發(fā)能力.
基于項目分解的任務(wù)驅(qū)動式課程教學(xué)中項目的選擇至關(guān)重要.教師要仔細(xì)選擇教學(xué)項目,對項目進(jìn)行解讀,將項目分解成若干個子系統(tǒng)[8-9],并對每一個子系統(tǒng)涉及到的課程知識點歸納分析,幫助學(xué)生建立課程學(xué)習(xí)的知識點圖譜.如以本人指導(dǎo)學(xué)生參加中國大學(xué)生設(shè)計大賽新疆區(qū)賽區(qū)獲獎作品《濾鏡算法研究與實現(xiàn)》作為選擇項目,此項目基本涵蓋了“C#程序設(shè)計”課程的主要知識點,有集成開發(fā)環(huán)境介紹、語句、表達(dá)式、運算符、選擇語句、循環(huán)語句、數(shù)組、類、WinForm、文件操作等,在滿足基本教學(xué)基礎(chǔ)上,結(jié)合學(xué)生在大一或大二所學(xué)習(xí)的C 語言知識,引入外部程序,將前面學(xué)習(xí)課程聯(lián)系起來,從而滿足各個層級水平學(xué)生的學(xué)習(xí)需要.
基于項目分解的任務(wù)驅(qū)動式課程教學(xué)中,難點在于項目中的濾鏡算法[10].學(xué)生以前沒有接觸過濾鏡算法,課堂教學(xué)中在不能占用正常授課任務(wù)完成的時間情況下,可以簡單介紹一些濾鏡算法原理,以任務(wù)的形式讓學(xué)生在課下深入學(xué)習(xí)基本的算法原理.圖像濾鏡簡單來說就是使用程序?qū)D像處理成特定效果的過程.本項目濾鏡算法有灰度濾鏡、黑白濾鏡、反向濾鏡、去色濾鏡、單分量濾鏡(紅色分量、綠色分量、藍(lán)色分量濾鏡)、高斯模糊濾鏡、熔鑄濾鏡、懷舊濾鏡、徑向模糊濾鏡、連環(huán)畫濾鏡、冰凍濾鏡、浮雕濾鏡、徑向旋轉(zhuǎn)濾鏡.上述算法并沒有全部羅列所有用到的濾鏡算法,只說明了高斯模糊濾鏡算法原理步驟,高斯模糊濾鏡算法的步驟如下:
(1)獲得高斯核.高斯核函數(shù)可以表示為
程序如圖1 所示,程序中dRadius 是高斯核半徑,sigmaS是參數(shù)σ.
圖1 高斯核獲取
(2)窗口和高斯核進(jìn)行加權(quán)計算.程序如圖2所示,width 是圖像寬度,height 是圖像高度,sw、zx和sum是變量,D是窗口半徑.
圖2 高斯模糊
傳統(tǒng)的“C#程序設(shè)計”課程的教學(xué)步驟:首先介紹開發(fā)環(huán)境;然后進(jìn)行C#基本語法包括變量表達(dá)式運算符、C#選擇循環(huán)結(jié)構(gòu)、數(shù)組、面向?qū)ο?、常用類、WinForm 窗體和C#文件操作等講解.而新的教學(xué)方法是任課教師在滿足基本課堂教學(xué)要求的前提條件下將項目分解,將知識點貫穿到各個子任務(wù)中去,讓學(xué)生通過任務(wù)學(xué)習(xí)的方式最終掌握所學(xué)習(xí)的知識點.
基于項目分解的任務(wù)驅(qū)動式“C#程序設(shè)計”課程教學(xué)方法中,以本人實際指導(dǎo)學(xué)生參加中國大學(xué)生設(shè)計大賽新疆區(qū)賽區(qū)獲獎作品《濾鏡算法研究與實現(xiàn)》作為選擇項目.首先在課堂教學(xué)開始中引出此項目,將項目實現(xiàn)出來,這里圖形界面就需要用到C#程序設(shè)計中WinForm 界面設(shè)計教程.在后續(xù)課堂教學(xué)中會詳細(xì)講解該部分內(nèi)容.那么在第一節(jié)課中以任務(wù)布置的形式,讓學(xué)生在課程的結(jié)束后能編程完成濾鏡算法的實現(xiàn).圖3是濾鏡整體窗口,圖4是所涉及到的各種濾鏡算法.
圖3 濾鏡整體窗口
圖4 各種濾鏡算法窗口
圖3、4 涉及到C#WinForm 窗體多種知識點.ToolStripMenuItem 菜單欄控件命名為濾鏡Tool?StripMenuItem,有二級菜單欄控件灰度濾鏡Tool?StripMenuItem、徑向模糊旋轉(zhuǎn)ToolStripMenuItem等.每一個二級菜單欄控件有對應(yīng)設(shè)置的事件,并有對應(yīng)的事件處理.如灰度濾鏡二級菜單欄有灰度濾鏡ToolStripMenuItem_Click 事件,并有對應(yīng)事件的處理方法private void 灰度濾鏡ToolStripMenu?Item_Click(object sender,EventArgs e).每一個二級菜單欄會對應(yīng)相應(yīng)的濾鏡算法處理界面.以高斯模糊濾鏡為例,其實現(xiàn)處理程序為圖5 所示,運行結(jié)果如圖6所示.
圖5 高斯模糊濾鏡處理程序
圖6 高斯模糊濾鏡界面
在高斯模糊濾鏡中涉及到WinForm 中Label控件、TextBox 控件、Button 控件和PictureBox 控件以及Button 控件中的Click 事件及其相應(yīng)的實踐處理程序.高斯模糊濾鏡運行實例如圖7 所示(圖片來源于百度圖片).
圖7 高斯模糊濾鏡
在圖6、7 中,涉及到文件打開和保存操作.文件打開代碼如圖8所示.
圖8 文件打開操作
定義類并使用濾鏡算法方法所使用的代碼如圖9所示.
圖9 調(diào)用濾鏡算法
上述過程描述中基本上將“C#程序設(shè)計”課程大部分概念分解到項目中去,使得學(xué)生在學(xué)習(xí)基本語法的同時,將各個子項目在學(xué)習(xí)過程中自主編程實現(xiàn),或者部分學(xué)習(xí)能力強的學(xué)生可以自行學(xué)習(xí)課程,并完成各個子項目的編程實現(xiàn).“C#程序設(shè)計”課程教學(xué)將學(xué)生所需要掌握的知識點融入到了項目中.如C#開發(fā)的集成環(huán)境,只要編寫程序必然要用到,如圖1—9 所示.C#變量、語句、表達(dá)式、運算符等基本語法如圖1、2、5、8、9 所示,循壞語句和選擇語句如圖2所示,數(shù)組如圖1 所示.類的相關(guān)概念如圖5、9所示,面向?qū)ο蟾呒壵Z法如圖6、7 所示,C#Win?Form 窗體應(yīng)用程序如圖3,4 所示,C#文件操作如圖8 所示.最后在演示一個徑向模糊旋轉(zhuǎn)濾鏡算法效果,如圖10 所示(上述圖片均來自百度圖片).其他濾鏡算法效果不再演示.
圖10 徑向模糊旋轉(zhuǎn)濾鏡
本文提出一種基于項目分解的任務(wù)驅(qū)動式“C#程序設(shè)計”課程教學(xué)方法,以本人實際指導(dǎo)學(xué)生參加中國大學(xué)生設(shè)計大賽新疆區(qū)賽區(qū)獲獎作品《濾鏡算法研究與實現(xiàn)》作為選擇項目.將“C#程序設(shè)計”課程知識點分解到各個子項目中去,以任務(wù)的形式讓學(xué)生編程實現(xiàn),提高了學(xué)生自主學(xué)習(xí)興趣,進(jìn)一步增加了學(xué)生的就業(yè)競爭力.這種教學(xué)方式不僅滿足傳統(tǒng)的教學(xué)形式,更需要任課教師更多的專業(yè)知識、豐富的科研經(jīng)驗和較高的軟件開發(fā)水平.