□周國軍,程裕強,吳慶軍
(玉林師范學(xué)院 數(shù)學(xué)與信息科學(xué)學(xué)院,廣西 玉林 537000)
以能力培養(yǎng)為導(dǎo)向的C#程序設(shè)計課程教學(xué)改革
□周國軍,程裕強,吳慶軍
(玉林師范學(xué)院 數(shù)學(xué)與信息科學(xué)學(xué)院,廣西 玉林 537000)
圍繞能力培養(yǎng)的目標(biāo),針對C#程序設(shè)計課程教學(xué)中普遍存在的問題,探討了基于能力培養(yǎng)目標(biāo)選取和提煉教學(xué)內(nèi)容、靈活運用多種教學(xué)方法開展理論教學(xué)、以能力培養(yǎng)為導(dǎo)向設(shè)計實驗項目等幾個方面的教學(xué)改革方法. 給出了改革的思路,在實踐中取得了較好的教學(xué)效果.
能力培養(yǎng);C#語言;程序設(shè)計;教學(xué)改革
C#語言是一種基于.NET平臺的面向?qū)ο缶幊陶Z言,以其簡潔的語法、良好的擴展性、完善的錯誤處理機制等優(yōu)點得到了廣泛應(yīng)用.近年來,IT行業(yè)對C#開發(fā)人員的需求量很大,為滿足就業(yè)市場的需求,很多高校都開設(shè)了C#程序設(shè)計課程.對大多數(shù)應(yīng)用型高校而言,該課程的教學(xué)目標(biāo)是培養(yǎng)學(xué)生使用C#語言分析和解決實際問題的軟件開發(fā)能力.由于該課程具有知識點多、實踐性強的特點,理論和實驗教學(xué)的難度較大.
已經(jīng)有很多高校教師以能力培養(yǎng)為目標(biāo)對C#程序設(shè)計課程的教學(xué)改革進行了研究,取得了很多有價值的研究成果.但是,在該課程的教學(xué)中仍然普遍存在以下幾個問題:教學(xué)內(nèi)容的選取不合理,沒有或者很少對教材講述的內(nèi)容進行提煉,教學(xué)重點、難點不明確,學(xué)生難以掌握所學(xué)知識;沒有根據(jù)教學(xué)內(nèi)容選擇合適的教學(xué)方法,學(xué)生對所學(xué)知識感到枯燥無味,不利于培養(yǎng)分析和解決問題的思維能力;實驗項目過于簡單,只是根據(jù)理論教學(xué)內(nèi)容設(shè)計了一些驗證型實驗項目,缺少了設(shè)計型項目和綜合實踐型項目,不利于培養(yǎng)學(xué)生綜合運用所學(xué)知識解決實際問題的編程能力;考核方式單一,不能對學(xué)生的學(xué)習(xí)成績和綜合能力作出客觀評價.
本文圍繞能力培養(yǎng)的目標(biāo),針對C#程序設(shè)計課程教學(xué)中普遍存在的問題,結(jié)合筆者在該課程教學(xué)中的探索和實踐,對教學(xué)內(nèi)容選取和提煉、理論教學(xué)方法、實驗項目設(shè)計、考核方式等幾個方面的教學(xué)改革思路進行了探討.
2.1 教學(xué)內(nèi)容選取
C#程序設(shè)計課程的知識點很多,大多數(shù)教材在內(nèi)容安排上都全面地覆蓋了這些知識點.如果把教材內(nèi)容完整地搬到課堂上,學(xué)生就難以掌握繁雜的知識點.與傳統(tǒng)的重語法教學(xué)模式不同,應(yīng)用能力的培養(yǎng)目標(biāo)強調(diào)對知識的運用,應(yīng)該以實際應(yīng)用為出發(fā)點按照“必需和夠用”的原則選取教學(xué)內(nèi)容[1].C#語言的應(yīng)用領(lǐng)域廣泛,可以開發(fā)單機程序、C/S結(jié)構(gòu)的網(wǎng)絡(luò)程序和B/S結(jié)構(gòu)的Web應(yīng)用程序.由于教學(xué)課時的限制,選取的教學(xué)內(nèi)容不可能面面俱到.圍繞能力培養(yǎng)的目標(biāo),教學(xué)內(nèi)容的選取應(yīng)考慮以下兩個因素.
(1)選擇具有通用性的章節(jié)內(nèi)容以滿足一般軟件系統(tǒng)開發(fā)的需要,包括:C#的開發(fā)環(huán)境和程序調(diào)試、基本語法、面向?qū)ο蟪绦蛟O(shè)計、泛型集合與索引器、委托與事件、Windows應(yīng)用程序設(shè)計、文件操作、數(shù)據(jù)庫編程.
(2)在通用性章節(jié)教學(xué)內(nèi)容的基礎(chǔ)上,根據(jù)專業(yè)培養(yǎng)方案和課程設(shè)置增加專業(yè)性的教學(xué)內(nèi)容以滿足特定領(lǐng)域的軟件系統(tǒng)開發(fā)需要.比如:計算機軟件專業(yè)可以增加GDI+圖形繪制和圖像處理、多線程和異步編程、多媒體編程技術(shù)等章節(jié)內(nèi)容,網(wǎng)絡(luò)工程專業(yè)可以增加Socket編程、FTP文件傳輸編程等內(nèi)容.
2.2 教學(xué)內(nèi)容提煉
理論與實踐是緊密聯(lián)系的,如果要達到熟練使用C#語言編寫程序的目標(biāo),就得具備過硬的語法功底和完整的知識體系.C#課程的知識點多而廣,但各知識點的重要性和使用頻率是不同的,教師可以對知識點進行提煉以突出教學(xué)內(nèi)容的重點和難點[2].根據(jù)教學(xué)重點和難點組織教學(xué)內(nèi)容有以下兩個優(yōu)點:可以幫助學(xué)生在較短的時間內(nèi)掌握重要的、常用的知識,以便觸類旁通學(xué)習(xí)其他知識點,從而構(gòu)建起該課程的完整知識體系;其次,教師引導(dǎo)學(xué)生在實際應(yīng)用中根據(jù)需要自學(xué)其他次要的、不常用的知識點,培養(yǎng)了學(xué)生的自學(xué)能力.
教學(xué)內(nèi)容的提煉需要考慮的因素較多,從應(yīng)用能力培養(yǎng)的角度出發(fā),可以從學(xué)生的認知能力、C#語言的應(yīng)用發(fā)展方向提煉教學(xué)重點和難點,具體說明如下.
(1)根據(jù)學(xué)生的認知能力確定教學(xué)重點和難點.C#課程的先修課是C語言程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫原理,在已有相關(guān)知識的基礎(chǔ)上掌握新知識是比較容易的,因此,在先修課中已學(xué)過的內(nèi)容不適合作為教學(xué)重點.比如:C#的循環(huán)語句有while、do/while、for和foreach,由于C語言和C#語言的while、do/ while、for語句的語法格式相同,這三種語句的知識點就不適合作為教學(xué)重點,相應(yīng)地,foreach是應(yīng)作為教學(xué)重點.
(2)根據(jù)C#語言的應(yīng)用發(fā)展方向提煉教學(xué)重點和難點.就目前而言,C#的應(yīng)用開發(fā)方向主要是用于企業(yè)級的Web開發(fā),與ASP.NET相關(guān)的知識點應(yīng)作為教學(xué)重點.比如:Windows窗體程序設(shè)計的教學(xué)重點不是窗體界面的美化,而是與窗體類相關(guān)的對象、屬性、方法和事件.
程序設(shè)計課程的理論教學(xué)應(yīng)解決三個基本問題:為什么教、教什么、怎么教[3],即培養(yǎng)學(xué)生分析和解決實際問題的思維能力.就目前而言,大多數(shù)C#教材的內(nèi)容以基本語法和概念、操作步驟和代碼為主,對案例的分析較少.要達到能力培養(yǎng)的教學(xué)目標(biāo),就要求教師針對不同的章節(jié)靈活運用多種教學(xué)方法,將抽象的理論知識轉(zhuǎn)化為形象生動的教學(xué)內(nèi)容,引導(dǎo)學(xué)生思考和分析問題,提高理論教學(xué)的效果.
3.1 案例教學(xué)法和比較教學(xué)法
案例教學(xué)法有助于學(xué)生理解和掌握抽象的理論和概念,能培養(yǎng)學(xué)生的分析能力[4].教學(xué)案例可以取自教材或?qū)嶋H生活,一個好的案例應(yīng)具有典型性、趣味性和綜合性.一些C#教材給出的案例普遍存在規(guī)模太小、數(shù)量太多、分析太少的缺點,需要對這些案例進行重組才能形成少而精的教學(xué)案例,在講解案例的過程中才能有足夠的時間去分析程序設(shè)計的思路.
比較教學(xué)法的三個特征要素是對象、內(nèi)容和方法[5],在C#語言中有很多滿足這三個要素的可比較知識點,因此,該教學(xué)法可以很好地應(yīng)用于C#課程的理論教學(xué)中.在C#課程的很多章節(jié)中,可以結(jié)合案例教學(xué)法和比較教學(xué)法設(shè)計教學(xué)內(nèi)容,這對學(xué)生掌握知識、提高分析能力大有好處.例如,在“抽象類與接口”章節(jié)的教學(xué)中,可以使用一個案例演示抽象類的定義和抽象方法的實現(xiàn),再使用一個案例演示接口的定義與實現(xiàn),然后對抽象類和接口進行比較,最后討論抽象類和接口的應(yīng)用場合.
3.2 啟發(fā)式教學(xué)法
程序設(shè)計的關(guān)鍵步驟是分析問題和設(shè)計算法,因此,在C#課程的理論教學(xué)中,教師要積極地引導(dǎo)學(xué)生思考問題,培養(yǎng)學(xué)生的思維能力.啟發(fā)式教學(xué)方法能激發(fā)學(xué)生思維[1],靈活運用該教學(xué)方法能提高C#課程的教學(xué)效果.在C#語言中,對字符串進行處理的類主要是String和StringBuilder.下面以StringBuilder類的教學(xué)為例,介紹啟發(fā)式教學(xué)法在C#課程教學(xué)中的運用.
引入問題:如果要把一個含有10000個元素的String類型數(shù)組s的所有元素值連接成一個字符串,應(yīng)該怎么辦?
大多數(shù)學(xué)生會給出以下答案:
String t = "";
for (int i=0; i<10000; i++) t += s[i];
引導(dǎo)學(xué)生分析問題:每次循環(huán)要生成一個新的String對象,10000次循環(huán)則生成10000個String對象,內(nèi)存消耗很大.
引出StringBuilder類,講解StringBuilder類的特點和常用方法,再次引導(dǎo)學(xué)生分析以上問題,便會得到一個更好的答案:
StringBuilder sb = new StringBuilder();
for (int i=0; i<10000; i++) sb.Append(s[i]);
傳統(tǒng)的“重理論、輕實踐”教學(xué)模式不利于應(yīng)用型人才培養(yǎng),實驗教學(xué)是提高學(xué)習(xí)能力、實踐能力和創(chuàng)新能力的重要環(huán)節(jié),要達到能力培養(yǎng)的目標(biāo)就必須重視實驗教學(xué).就目前而言,C#程序設(shè)計課程的實驗教學(xué)中普遍存在以下兩個問題:教學(xué)方法單一,學(xué)生學(xué)習(xí)動力不足;實驗項目簡單,難以提高編程能力.已經(jīng)有很多教師對該課程的實驗教學(xué)方法進行了研究和改革,提出了項目驅(qū)動式、任務(wù)驅(qū)動式等教學(xué)方法,對提高該課程的實驗教學(xué)效果起到了推動作用.
能力的提高是一個循序漸進的過程,實驗項目的設(shè)計也應(yīng)該體現(xiàn)層次漸進、彈性可變的原則[6].實驗項目大致可分為三類:學(xué)習(xí)知識的驗證型、運用知識的設(shè)計型、拓展知識的綜合型.驗證型實驗主要由學(xué)生自主進行,其目的是通過編寫和修改簡單的程序來掌握教材和課堂講授知識.設(shè)計型和綜合型實驗主要由教師選取和設(shè)計項目,引導(dǎo)學(xué)生單獨或以小組方式完成.從能力培養(yǎng)的角度考慮,實驗項目應(yīng)該以設(shè)計型和綜合型為主,這就要求教師精心選取和設(shè)計實驗項目.以文件和目錄管理章節(jié)的實驗教學(xué)為例,設(shè)計的項目如表1所示.
表1 文件和目錄管理實驗項目
從表1可以看出:設(shè)計型項目要靈活運用較多的知識點才能完成,綜合型項目除了綜合運用所學(xué)知識外,還得通過查找MSDN和相關(guān)資料才能完成.在實驗教學(xué)中應(yīng)適當(dāng)?shù)卦黾釉O(shè)計型和綜合型項目的比例,通過實驗項目提高學(xué)生的學(xué)習(xí)能力和編程能力.
傳統(tǒng)的考核方式一般采用“平時成績+期末考試成績”的方式,平時成績以出勤、課堂表現(xiàn)為主,期末考試以筆試的試卷得分為主.這種考核方式不能對學(xué)生的學(xué)習(xí)成績和綜合能力作出客觀評價,也是導(dǎo)致學(xué)生缺乏學(xué)習(xí)動力的主要原因.因此,需要對考核方式進行改革,基本思路如下.
(1)采用“平時成績+期末考試成績+項目完成情況”的評價方式.
(2)在期末考試中增加上機考試,筆試考查常用知識點的掌握情況,機試考查運用C#語言的熟練程度.
(3)對實驗項目的完成情況進行考核,考查學(xué)習(xí)能力、綜合運用C#語言的編程能力.
本文針對目前C#程序設(shè)計課程教學(xué)中普遍存在的問題,圍繞能力培養(yǎng)的目標(biāo)探討了該課程的教學(xué)改革思路.近年來,筆者嘗試將這些改革方法應(yīng)用于教學(xué)實踐中,取得了很好的教學(xué)效果.在筆者任教的班級中,有多名學(xué)生采用C#語言完成了質(zhì)量較好的畢業(yè)設(shè)計,目前從事C#軟件開發(fā)的所有學(xué)生都能勝任崗位工作,達到了能力培養(yǎng)的目標(biāo). ■
[1]黃淼,高敬禮,單冬紅,等. C#程序設(shè)計課程教學(xué)改革研究[J].計算機教育,2010,(18):21-24.
[2]鄧建新. C#課程一體化多層次問題引導(dǎo)式教學(xué)方法[J].計算機教育,2014,(11):68-71.
[3]劉井蓮,趙衛(wèi)績,楊輝,等.以能力培養(yǎng)為導(dǎo)向的程序設(shè)計課程教學(xué)改革與實踐[J].通化師范學(xué)院學(xué)報(自然科學(xué)),2013,34(5):56-57.
[4]孫玉紅.案例教學(xué)法在“面向?qū)ο蟪绦蛟O(shè)計”課程中的運用[J].電腦知識與技術(shù),2011,7(7):1703-1704.
[5]冷洶濤,蔡銘輝,龐文穎.比較教學(xué)法三要素在高等教育中的實踐性探索[J].高教論壇,2013,(8):70-73.
[6]吳淑英.C#程序設(shè)計課程項目引領(lǐng)任務(wù)驅(qū)動式教學(xué)設(shè)計與實施[J].計算機時代,2012,(7):52-54.
【責(zé)任編輯 謝明俊】
Teaching Reform of C# Program Design Course Based on Ability Cultivation
ZHOU Guo-jun, CHENG Yu-qiang, WU Qing-jun
( School of Maths & Information Science, Yulin Normal University, Yulin, Guangxi 537000 )
In view of the common problems in C# program design course teaching, this paper discusses teaching reform of the course based on ability cultivation. The main thoughts of teaching reform include the following points: select and refine teaching contents around the target of ability cultivation; use various teaching methods to carry out theoretical teaching design experimental project based on ability training. In practice, the teaching method has achieved good effect.
ability cultivation; C# language; program design; teaching reform
G642
A
1004-4671(2015)02-0132-04
2014-03-01
廣西高等教育教學(xué)改革工程項目(項目編號:2014JGA207)
周國軍(1975~),男,湖南寧遠人,玉林師范學(xué)院數(shù)學(xué)與信息科學(xué)學(xué)院講師,碩士。研究方向:數(shù)據(jù)挖掘。