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