摘要:針對目前高級C# 應(yīng)用開發(fā)教學(xué)中存在的問題,在建構(gòu)主義學(xué)習(xí)理論的倡導(dǎo)下,文章論述高級C# 應(yīng)用開發(fā)課程的教學(xué)改革思路:組織開展互動(dòng)教學(xué)、案例教學(xué)、實(shí)訓(xùn)教學(xué)來促進(jìn)和完善學(xué)生對C# 知識體系的意義建構(gòu)。這對高級C# 應(yīng)用開發(fā)教學(xué)模式改革極具指導(dǎo)意義。
關(guān)鍵詞:建構(gòu)主義;教學(xué)改革;互動(dòng)教學(xué);案例教學(xué);實(shí)訓(xùn)教學(xué)
皮亞杰提出的建構(gòu)主義學(xué)習(xí)理論強(qiáng)調(diào)對事物的認(rèn)知學(xué)習(xí),知識是由符號系統(tǒng)組成的,學(xué)習(xí)者可以在軟件需求背景下,借助各種幫助,利用學(xué)習(xí)資料,對客觀世界作出一種合理的解釋或假想,通過建構(gòu)出抽象符號系統(tǒng)的方式獲得知識。教師單方面的傳授知識并不是學(xué)習(xí)的最佳途徑,學(xué)生通過自主學(xué)習(xí)同樣可以發(fā)揮創(chuàng)新潛力,這樣可以讓學(xué)生最大程度地獲取知識。
1高級C# 應(yīng)用開發(fā)課程概述
高級C# 應(yīng)用開發(fā)課程是一門綜合性和實(shí)踐性較強(qiáng)的應(yīng)用學(xué)科,其體系結(jié)構(gòu)比較復(fù)雜,比如,我校該課程的體系結(jié)構(gòu)如表1所示。
在學(xué)習(xí)過程中,學(xué)生需要對實(shí)際應(yīng)用有親身體驗(yàn)和探索,否則就不能全面深入地掌握相關(guān)知識體系。
另一方面,由于這一學(xué)科有實(shí)用性的特點(diǎn),隨著.NET技術(shù)的快速發(fā)展,該課程的知識體系是一個(gè)動(dòng)態(tài)系統(tǒng),技術(shù)和經(jīng)驗(yàn)不斷推陳出新,學(xué)生需要有學(xué)習(xí)的開放性和主動(dòng)性,否則將無法及時(shí)更新軟件技術(shù)和知識經(jīng)驗(yàn),其固有的知識體系就無法適應(yīng)用戶不斷發(fā)展變化的需求。鑒于此,筆者認(rèn)為教師可以借助建構(gòu)主義教學(xué)觀的理念,在高級C# 應(yīng)用開發(fā)教學(xué)活動(dòng)中延伸傳統(tǒng)教學(xué)的“教師主導(dǎo)型”為“學(xué)生主導(dǎo)教師輔助型”,利用豐富的網(wǎng)絡(luò)教學(xué)資源,使教學(xué)輔導(dǎo)過程得以拓展和延伸。
2目前教學(xué)中存在的問題
2.1學(xué)生的認(rèn)知領(lǐng)域窄、自主學(xué)習(xí)能力差
傳統(tǒng)的教學(xué)方法不利于培養(yǎng)學(xué)生自主學(xué)習(xí)的習(xí)慣,對學(xué)生的探究學(xué)習(xí)未能合理引導(dǎo),學(xué)生一般不會(huì)發(fā)現(xiàn)學(xué)習(xí)過程中的問題,更不會(huì)主動(dòng)搜集資料去解決問題和探索問題。
2.2學(xué)生的認(rèn)知結(jié)構(gòu)不完整、協(xié)作學(xué)習(xí)效果差
傳統(tǒng)的教學(xué)過程中,很少有學(xué)生在團(tuán)體中為了完成一個(gè)共同的目標(biāo),進(jìn)行責(zé)任分工明確的互助式學(xué)習(xí)[1]。學(xué)生一般是通過教師的講述和組織來被動(dòng)學(xué)習(xí)知識,彼此之間缺乏合作交流,學(xué)生之間或師生之間的優(yōu)勢無法得到互補(bǔ),不僅使學(xué)生對相關(guān)的理論知識缺乏興趣,而且遮蔽了個(gè)人對問題認(rèn)識的視線,從而無法完整建構(gòu)軟件開發(fā)知識認(rèn)知體系[2]。
2.3學(xué)生的軟件開發(fā)實(shí)戰(zhàn)能力差
傳統(tǒng)的課堂教學(xué)方式主張把學(xué)習(xí)置于課堂講述之中,知識不能適應(yīng)不同的問題背景,從而在實(shí)踐中不能廣泛地遷移,學(xué)生沒有充分對軟件開發(fā)實(shí)戰(zhàn)進(jìn)行體驗(yàn),不能參與其中,經(jīng)過一番課堂灌輸后,由于缺乏接近現(xiàn)實(shí)需求的完整案例學(xué)習(xí),學(xué)生沒有真正領(lǐng)會(huì)到什么是任務(wù)、如何分配任務(wù)、如何設(shè)計(jì)開發(fā)以及如何測試系統(tǒng),學(xué)生的軟件開發(fā)實(shí)戰(zhàn)能力提高不是很明顯[3]。
3建構(gòu)主義在高級C# 應(yīng)用開發(fā)教學(xué)中的影響
我校本科教育的應(yīng)用性特征決定了高級C# 應(yīng)用開發(fā)的教學(xué)宗旨應(yīng)側(cè)重于培養(yǎng)學(xué)生的專業(yè)技能水平,基于此,筆者認(rèn)為,利用建構(gòu)主義教學(xué)觀原理進(jìn)行高級C# 應(yīng)用開發(fā)教學(xué)模式改革,開展多樣化的教學(xué)活動(dòng)和實(shí)驗(yàn),這對學(xué)生建構(gòu)理論與實(shí)踐相結(jié)合的高級C# 應(yīng)用開發(fā)知識體系是十分必要和有效的。
3.1促進(jìn)互動(dòng)式課堂教學(xué)
在“基于問題學(xué)習(xí)”教學(xué)方式下的課堂教學(xué)應(yīng)充分發(fā)揮學(xué)生的主動(dòng)學(xué)習(xí)性,轉(zhuǎn)“被動(dòng)”為“主動(dòng)”,引導(dǎo)學(xué)生發(fā)現(xiàn)問題、分析問題、探索性地解決問題,這是一種建構(gòu)主義所倡導(dǎo)的教學(xué)方式[4]。
教師可以在講授理論知識的同時(shí)向?qū)W生提問,讓學(xué)生主動(dòng)思考作出解答,與此同時(shí),也可以適當(dāng)評析一些與本課程相關(guān)的實(shí)踐知識,引導(dǎo)學(xué)生對一些C# 軟件開發(fā)的熱門技術(shù)和實(shí)踐應(yīng)用進(jìn)行探討。例如,筆者在講授C# 數(shù)據(jù)挖掘技術(shù)時(shí)曾向?qū)W生提出思考題:如今電子商務(wù)越來越普遍,針對由此產(chǎn)生的海量數(shù)據(jù),軟件企業(yè)應(yīng)如何利用C# 這一開發(fā)工具,采取什么有效方法搜集Web訪問信息并發(fā)掘出有價(jià)值的知識,從而對互聯(lián)網(wǎng)用戶提供個(gè)性化服務(wù)。這一問題引起學(xué)生的熱烈討論,一方面激發(fā)了學(xué)生的學(xué)習(xí)興趣,另一方面為學(xué)生構(gòu)建了“研究式學(xué)習(xí)環(huán)境”,引導(dǎo)學(xué)生主動(dòng)面對實(shí)際問題并開動(dòng)腦筋求解問題。
這樣的互動(dòng)式課堂教學(xué)需要教師具備“一專多能”的業(yè)務(wù)技能,教師需要將其他學(xué)科的知識引進(jìn)課堂,豐富課堂教學(xué)信息。例如,筆者在講到分布式服務(wù)這一章時(shí),將以前做過的單機(jī)版的繪圖程序變換成分布式繪圖程序,讓學(xué)生加以講解點(diǎn)評,開拓學(xué)生學(xué)習(xí)的思路,既讓學(xué)生學(xué)習(xí)了圖形編程,又讓學(xué)生在感受分布式技術(shù)帶來便利的同時(shí)學(xué)會(huì)了新的編程手段。當(dāng)然,教師在互動(dòng)教學(xué)過程中,應(yīng)能把握好對學(xué)生學(xué)習(xí)指導(dǎo)的程度,充分考慮學(xué)生水平的差異性,盡量讓大多數(shù)學(xué)生都能發(fā)揮其思維創(chuàng)造力。從另一方面看,教師通過這樣的教學(xué)方式也能不斷完善充實(shí)自身的知識和能力,這是一種“教學(xué)相長”的良性循環(huán)。
3.2引入案例教學(xué)
建構(gòu)主義提倡在教學(xué)中適當(dāng)引入案例,特別是在培養(yǎng)軟件開發(fā)人才時(shí),軟件案例分析無疑是一種切實(shí)有效的教學(xué)方法[5]。這種方法不僅能培養(yǎng)學(xué)生綜合運(yùn)用C# 軟件開發(fā)知識,提高分析解決實(shí)際問題的能力,而且能使學(xué)生在案例討論過程中自覺吸取案例中所體現(xiàn)的軟件開發(fā)經(jīng)驗(yàn),從而豐富和完善了原有的認(rèn)知結(jié)構(gòu)。
在案例教學(xué)過程中,需要引用典型的C# 軟件開發(fā)實(shí)戰(zhàn)案例,為學(xué)生提供情境學(xué)習(xí)的平臺,師生以及學(xué)生之間對案例進(jìn)行分析、探討,學(xué)生可以在協(xié)作中體會(huì)C# 開發(fā)過程,從而總結(jié)軟件理論并提煉設(shè)計(jì)觀點(diǎn),最終在已有的知識體系和經(jīng)驗(yàn)的基礎(chǔ)上積極建構(gòu)新的C# 軟件開發(fā)知識體系。案例教學(xué)分析法可以采用以下兩種方法:
1) 總分法。
可以選取一個(gè)或若干個(gè)典型案例進(jìn)行講解和分析,然后提煉出案例的相關(guān)知識點(diǎn)或知識體系,最后針對這些知識點(diǎn)再向?qū)W生提出一些實(shí)踐性較強(qiáng)的熱點(diǎn)問題,鼓勵(lì)學(xué)生思考、討論、回答。
筆者以圖像檢索軟件為例闡述個(gè)案分析的過程。該案例充分利用圖像處理、分析、檢索、數(shù)據(jù)庫技術(shù),實(shí)現(xiàn)了對圖像數(shù)據(jù)庫的管理和檢索。該案例分為如下功能:
?、?提供了對圖像進(jìn)行像素法、內(nèi)存法和指針法等圖像存儲(chǔ)功能;
?、?提供了對圖像進(jìn)行去色、反相、縮放、平滑、分割、腐蝕、膨脹、邊緣檢測等圖像處理功能;
?、?提供了對圖像顏色特征、紋理特征和形狀特征提取等功能;
④ 提供了一些由實(shí)踐證明有效的圖像檢索算法,主要包括基于顏色、紋理和形狀等視覺特征的圖像檢索算法。
該案例基本可以貫穿整個(gè)教學(xué)過程,學(xué)生可以從圖像存儲(chǔ)方式和檢索算法等技術(shù)入手,剖析出像素法、內(nèi)存法和指針法等圖像存儲(chǔ)的知識點(diǎn),也能帶出圖像的顏色直方圖檢索、紋理檢索、輪廓檢索等圖像內(nèi)容檢索算法。一直涉及到圖像處理算法的開發(fā)策略,然后再向?qū)W生提出如何將這些開發(fā)策略集成的新任務(wù),引導(dǎo)學(xué)生去思考、討論和解答。
該案例具有良好的擴(kuò)展性,從人工智能的角度考慮,學(xué)生可以在此基礎(chǔ)上加入對圖像利用聚類算法進(jìn)行圖像分割功能。
圖1展示了該案例和高級C# 圖像處理與分析教學(xué)內(nèi)容的對照關(guān)系。
本案例從設(shè)計(jì)階段就充分考慮了高級C# 課程教學(xué)過程中所涉及到的各個(gè)環(huán)節(jié)的內(nèi)容,在教學(xué)的基礎(chǔ)理論階段就可以引入本案例來講解諸如圖像處理、圖像特征提取以及圖像檢索等概念,并且可以讓學(xué)生發(fā)揮主觀能動(dòng)性來設(shè)計(jì)圖像處理算法。隨著課程的不斷深入,逐步引入其他諸如聚類分析、圖像分割等高級
圖1案例和高級C# 圖像處理與分析教學(xué)內(nèi)容的對照關(guān)系
概念,可以讓學(xué)生將該案例移植到網(wǎng)絡(luò)環(huán)境下運(yùn)行,更可以激發(fā)學(xué)生探索新技術(shù)的學(xué)習(xí)熱情。
2) 個(gè)案法。
可以選取規(guī)模較小、業(yè)務(wù)較單一的案例,就某一技術(shù)層面進(jìn)行重難點(diǎn)分析,這樣的案例需要包含相關(guān)知識,通過對案例的深入分析和經(jīng)驗(yàn)總結(jié)來幫助學(xué)生對某一技術(shù)透徹理解。
例如,在講到多線程技術(shù)這一章時(shí),設(shè)計(jì)一個(gè)排隊(duì)系統(tǒng)的案例,火車站有20個(gè)窗口正在售票,一共有10 000張票,每人限購10張票,每個(gè)窗口售票時(shí),若售票數(shù)量超過現(xiàn)有的車票數(shù),那么這次售票將被拒絕。這就要保證一個(gè)窗口在售票時(shí),另外的窗口不能售票,同時(shí)車票的余量不能為負(fù)。
這就是一個(gè)典型的線程互斥和同步的問題,線程同步來源于多個(gè)線程同時(shí)訪問一個(gè)資源時(shí)帶來的結(jié)果不一致問題。有了線程同步,當(dāng)一個(gè)線程完全執(zhí)行完任務(wù)之后,才允許執(zhí)行下一個(gè)線程,這樣就可以保證一個(gè)共享資源一次只能被一個(gè)線程使用。
線程同步可以采用以下3種方法:lock()、Monitor類、Mutex類。將多種線程同步技術(shù)引入其中,讓學(xué)生通過案例的設(shè)計(jì)和實(shí)施來評價(jià)各種線程同步的特點(diǎn),從而讓學(xué)生在今后的開發(fā)中知道如何選擇合適的線程同步技術(shù)。
下面我們可以修改案例的程序,使之使用3種不同的線程同步方法,并且我們要比較3種線程同步在效率上相差多少。通過比較,可以看到三者在效率上有比較明顯的差別:
?、賚ock()語句可以把某一段代碼定義為互斥,這互斥的程序段在某一時(shí)間段只允許一個(gè)線程執(zhí)行,其余線程必須等待這個(gè)線程執(zhí)行完畢之后才執(zhí)行。
②lock()只是Monitor類的一個(gè)表現(xiàn)形式,在C# 編譯器編譯lock()語句時(shí),將其編譯成了調(diào)用Monitor類。
?、跰utex與Monitor類似,它防止多個(gè)線程在某一時(shí)間同時(shí)執(zhí)行某個(gè)代碼塊,不過Mutex不具備Wait、Pulse、PulseAll功能,因此,我們不能使用Mutex實(shí)現(xiàn)類似的喚醒功能。盡管Mutex可以用于進(jìn)程內(nèi)的線程同步,但是使用Monitor通常更為可取,因?yàn)楸O(jiān)視器是專門為 .NET Framework而設(shè)計(jì)的,因而它可以更好地利用資源。相比之下,Mutex類是 Win32構(gòu)造的包裝。盡管Mutex比監(jiān)視器更為強(qiáng)大,但是相對于Monitor類,它所需要的互操作轉(zhuǎn)換更消耗計(jì)算資源,但是Mutex類可以跨應(yīng)用程序域邊界進(jìn)行封送處理,可用于多個(gè)等待,并且可用于同步不同進(jìn)程中的線程。
不過不可否認(rèn)這些線程同步方法各自的優(yōu)勢,因此使用哪種線程同步方法還需要根據(jù)自己的需求來選擇。讓學(xué)生通過案例的設(shè)計(jì)和實(shí)施來評價(jià)各種線程同步的特點(diǎn),從而讓學(xué)生在今后的開發(fā)中知道如何選擇合適的線程同步技術(shù)。
3.3開展情景學(xué)習(xí)
建構(gòu)主義強(qiáng)調(diào)知識遷移能力的培養(yǎng),學(xué)生在真實(shí)的情境下進(jìn)行學(xué)習(xí),可以減少知識與解決問題之間的差距。高級C# 應(yīng)用開發(fā)是一門實(shí)踐性較強(qiáng)的應(yīng)用科學(xué),是軟件企業(yè)設(shè)計(jì)開發(fā)實(shí)踐經(jīng)驗(yàn)的概括與總結(jié),教學(xué)過程除了有課堂講授、課堂討論、案例分析以外,還應(yīng)適當(dāng)增加一些操作性較強(qiáng)的實(shí)際技能訓(xùn)練,在學(xué)生的知識建構(gòu)過程中嵌入更為豐富的信息。
實(shí)訓(xùn)教學(xué)可由兩個(gè)部分組成:
一是建設(shè)和使用軟件工程模擬實(shí)驗(yàn)室,實(shí)驗(yàn)室可以某個(gè)具體軟件企業(yè)的整個(gè)開發(fā)生命周期內(nèi)各階段基本活動(dòng)為主線,設(shè)置多個(gè)摸擬C# 軟件開發(fā)活動(dòng)模塊,讓學(xué)生扮演軟件企業(yè)項(xiàng)目主管,從各個(gè)角度分析實(shí)戰(zhàn)案例,進(jìn)行開發(fā)設(shè)計(jì),探索解決方案,在此過程中培養(yǎng)學(xué)生的實(shí)戰(zhàn)能力和創(chuàng)新能力。
二是組織開展與軟件開發(fā)活動(dòng)相關(guān)的社會(huì)實(shí)踐,可考慮讓學(xué)生利用課余時(shí)間或假期開展多種形式的專題調(diào)查,如市場軟件需求調(diào)研、軟件銷售策劃等,并撰寫專題報(bào)告,教師對此調(diào)查過程進(jìn)行事前籌劃、事中督導(dǎo)、事后交流、檢查和評估。通過調(diào)查實(shí)踐,使學(xué)生參與了軟件企業(yè)的實(shí)際管理活動(dòng),可以綜合運(yùn)用和融會(huì)貫通所學(xué)知識,達(dá)到培養(yǎng)實(shí)用型專業(yè)人才的目標(biāo)。
4結(jié)語
建構(gòu)主義教學(xué)理論適應(yīng)了高級C# 應(yīng)用開發(fā)課程的動(dòng)態(tài)性和多樣化,運(yùn)用建構(gòu)主義理論對教學(xué)過程進(jìn)行改革可以完善課程知識體系,提高教學(xué)質(zhì)量,當(dāng)然教師的教學(xué)水平也會(huì)相應(yīng)提高。高級C# 應(yīng)用開發(fā)教材不僅應(yīng)有基本技能的闡述,更應(yīng)注重對一些實(shí)際問題的分析和研究,還應(yīng)積極采用多媒體知識載體來豐富教學(xué)資源和信息。任課教師應(yīng)時(shí)常關(guān)注國外新的理論和學(xué)術(shù)領(lǐng)域的動(dòng)態(tài),多參加學(xué)術(shù)交流和職業(yè)培訓(xùn),將最新的C# 開發(fā)技術(shù)引入校園和課堂。
參考文獻(xiàn):
[1]