前言:想要寫出一篇引人入勝的文章?我們特意為您整理了C語言實驗教學(xué)改革思路范文,希望能給你帶來靈感和參考,敬請閱讀。
摘要:針對C語言實踐教學(xué)中存在的問題,提出將軟件工程思想引入C語言課程設(shè)計的教學(xué)改革中。以項目任務(wù)為主線,按照軟件工程方法分組、分階段地實施課程設(shè)計。實踐教學(xué)過程中強化學(xué)生的計算思維訓(xùn)練,采用實踐任務(wù)表驅(qū)動和階段性驗收方式培養(yǎng)學(xué)生自主學(xué)習(xí)能力,從而提高C語言程序設(shè)計實踐課程的教學(xué)質(zhì)量。
關(guān)鍵詞:C語言課程設(shè)計;實踐教學(xué);軟件工程思想;計算思維
目前,計算機技術(shù)的快速發(fā)展、普及和應(yīng)用極大程度地推動了計算機教育的發(fā)展。C語言程序設(shè)計作為計算機基礎(chǔ)教育中的一門重要課程,已經(jīng)成為全國高等院校工科各專業(yè)學(xué)習(xí)計算機程序設(shè)計的一門基礎(chǔ)課程,提高其教育質(zhì)量對培養(yǎng)學(xué)生的編程思想和編程技能至關(guān)重要。C語言是程序設(shè)計的啟蒙性語言,也是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)、JAVA語言程序設(shè)計和軟件工程等計算機類其他重要課程的前趨課程。作為一種抽象的且實踐性很強的語言,它具有數(shù)據(jù)類型繁多、語法結(jié)構(gòu)復(fù)雜等特點,這些特點給教學(xué)帶來一定的難度,上機操作實踐成了鞏固和熟練掌握課堂知識的一個必不可缺的環(huán)節(jié)。實踐教學(xué)效果的好壞直接決定著學(xué)生對C語言學(xué)習(xí)的效果,以及能否調(diào)動學(xué)生對程序語言學(xué)習(xí)的能動性。因此加強C語言實踐教學(xué)環(huán)節(jié),可以為后續(xù)的其他計算機類課程的學(xué)習(xí)奠定良好的基礎(chǔ),而且,從長遠來看,也符合社會對高素質(zhì)工程應(yīng)用型軟件人才培養(yǎng)要求。
1實驗教學(xué)中存在的問題
C語言程序設(shè)計課程的教學(xué)指導(dǎo)思想應(yīng)是以應(yīng)用為目的,重點培養(yǎng)學(xué)生分析和解決問題的能力,提高學(xué)生的動手能力。根據(jù)幾年來在本學(xué)院網(wǎng)絡(luò)工程專業(yè)開展C語言教學(xué)效果來看,現(xiàn)有的實踐教學(xué)尚存在一些薄弱點,主要表現(xiàn)在以下方面。⑴注重單一的語法練習(xí)。語法練習(xí)的案例為訓(xùn)練學(xué)生熟練掌握某個或某幾個語法點而設(shè)計,其程序簡單,代碼量少,通常僅有一個main函數(shù),學(xué)生常通過死記硬背的方式去記憶語法點和語法規(guī)則,極易失去學(xué)習(xí)興趣,并且,少量的幾行代碼不能同時覆蓋多個知識點,這會導(dǎo)致學(xué)生不能把各知識點有機地結(jié)合起來融會貫通。⑵驗證性實驗較多。驗證性實驗是一種鞏固知識的再現(xiàn)式教學(xué)模式,過多的這類實驗使得不少學(xué)生養(yǎng)成程序運行時一出現(xiàn)預(yù)期答案就終止實驗的習(xí)慣,不利于培養(yǎng)學(xué)生的程序測試意識,致使其分析錯誤和調(diào)試能力差。⑶缺乏計算思維的培養(yǎng)訓(xùn)練。計算思維的培養(yǎng)應(yīng)該是計算機基礎(chǔ)教學(xué)方面的一項核心任務(wù)[1],但由于近年來網(wǎng)絡(luò)工程專業(yè)常以通過全國計算機等級考試為目標,等級考試的擬題形式直接導(dǎo)致了學(xué)生對編程的認識局限于代碼的填空、寫出程序運行結(jié)果等諸如此類的形式,而對算法缺少整體上的認識,更談不上從多角度、多方位嘗試用不同的方案、不同的算法來實現(xiàn)程序功能。⑷評價方式單一。傳統(tǒng)的實驗教學(xué)采用隨機指導(dǎo)方式,在學(xué)生提出問題的情況下進行解答指導(dǎo),評價僅以最后的實驗作業(yè)為依據(jù),評價方式過于單一,學(xué)生中易出現(xiàn)抄襲現(xiàn)象,不能反映教學(xué)效果。
2教學(xué)改革措施
針對實踐教學(xué)環(huán)節(jié)的薄弱點,我們在傳統(tǒng)理論課結(jié)合實驗課模式的基礎(chǔ)上,進一步開設(shè)C語言課程設(shè)計這一綜合性設(shè)計實驗課程,承上啟下的實現(xiàn)教學(xué)銜接。
2.1教學(xué)內(nèi)容改革
社會的發(fā)展需要創(chuàng)新能力佳、實踐能力強的復(fù)合應(yīng)用型人才,因此,C語言課程設(shè)計的內(nèi)容改革首先在選題上就要符合以應(yīng)用為導(dǎo)向這一教學(xué)目標,而不能局限于通過計算機等級考試。在開展教學(xué)過程中,進一步融入軟件工程思想,強化計算思維訓(xùn)練。選題上,以一個小而完整的軟件開發(fā)項目貫穿整個課程教學(xué)過程,克服驗證性實驗存在的與實際應(yīng)用脫節(jié)問題。C語言作為程序設(shè)計的入門語言,考慮到學(xué)生尚不熟悉軟件開發(fā)的流程,項目選擇以貼近生活的信息管理系統(tǒng)為主,例如電話簿管理、宿舍管理等。這類系統(tǒng)開發(fā)項目能覆蓋多個知識點,尤其是覆蓋數(shù)組、鏈表、指針、結(jié)構(gòu)體等重點內(nèi)容,也具有一定的可擴展性,可以引導(dǎo)學(xué)生逐漸從簡單功能實現(xiàn)向較難的功能實現(xiàn)過渡。例如信息管理系統(tǒng)的基本功能點是對信息的錄入和讀取,在此基礎(chǔ)上根據(jù)學(xué)生的能力和完成進度,可以逐漸添加一些功能點,如各種查詢、排序,或進一步加入文件處理以保存信息。這樣就形成了知識鏈條,由淺入深地擴充并覆蓋到教材中各個重要的知識點。一個小而完整的項目具備一定規(guī)模的代碼,C語言又是一種理想的結(jié)構(gòu)化語言,在這種結(jié)構(gòu)化程序開發(fā)的教學(xué)過程中,需要提前向?qū)W生滲透軟件工程思想,潛移默化地熏陶學(xué)生養(yǎng)成良好的軟件開發(fā)習(xí)慣。內(nèi)容上,引入模塊化設(shè)計思想,模塊代表一個小的完整的功能點,用增量方式逐個實現(xiàn),介紹相對容易理解的瀑布模型,針對每個需求獲取分析、系統(tǒng)設(shè)計、開發(fā)、測試等幾個階段布置具體任務(wù),讓學(xué)生提前接觸軟件開發(fā)過程,糾正學(xué)生在沒有分析清楚需求就急于寫代碼的習(xí)慣,而測試時適當引入一些簡單的黑盒測試方法,例如邊界值法等,避免學(xué)生測試的隨意性。C語言涵蓋了語言和方法兩方面的內(nèi)容,方法指算法設(shè)計和使用計算機語言描述算法的過程[2]。算法可以說是程序的靈魂,而從學(xué)生的反饋來看,計算思維的訓(xùn)練尚存在很大不足。計算思維是運用計算機科學(xué)的基礎(chǔ)概念去求解問題、設(shè)計系統(tǒng)和理解人類行為的能力,在2006年被提出并明確定義以來[3],逐漸成為計算機教育的新要求,在2010年首屆“九校聯(lián)盟計算機基礎(chǔ)課程研討會”上提出把培養(yǎng)學(xué)生的“計算思維”能力作為計算機基礎(chǔ)教學(xué)的核心任務(wù)[4]。算法的學(xué)習(xí)是一個不斷積累的過程,需要將計算思維的培養(yǎng)貫穿始終。以數(shù)據(jù)排序為例,可以讓學(xué)生對不同的數(shù)據(jù)結(jié)構(gòu)(數(shù)組或鏈表)、不同算法的選擇進行優(yōu)劣分析,增加數(shù)據(jù)量或運行次數(shù)進行測試,讓他們對計算復(fù)雜度有直觀的了解,激發(fā)起學(xué)習(xí)興趣。
2.2教學(xué)方式改革
C語言課程設(shè)計以項目任務(wù)為主線安排教學(xué)步驟,借鑒翻轉(zhuǎn)課堂教學(xué)模式,分為課內(nèi)實驗和課外兩個階段學(xué)習(xí),分組合作,采用階段性驗收方式,以實踐任務(wù)表為驅(qū)動,促進和提高學(xué)生自主學(xué)習(xí)的能力。自主學(xué)習(xí)是一種學(xué)習(xí)者在總體教學(xué)目標的宏觀調(diào)控下,在教師的指導(dǎo)下根據(jù)自身條件和需要制定并完成具體學(xué)習(xí)目標的學(xué)習(xí)模式[5],是我們C語言課程設(shè)計的一個重要的教學(xué)目標,翻轉(zhuǎn)課堂思想可以有效地幫助實現(xiàn)這一目標。翻轉(zhuǎn)課堂作為一種新型教學(xué)模式,近年來得到了越來越多的教師的關(guān)注。它是以學(xué)生為中心,課后學(xué)習(xí),課堂上集中精力完成練習(xí)以及和教師同學(xué)交流[6]。借鑒于此,C語言課程設(shè)計的課外學(xué)習(xí)階段安排查找或觀看跟實踐任務(wù)表中問題相關(guān)的資料和視頻,課內(nèi)則集中時間進行實驗。課堂實驗采用項目分組方式,每組至少3人,并推選一位組長負責(zé)組內(nèi)協(xié)調(diào)和階段匯報,要求每個項目組按照軟件工程方法進行需求分析、總體設(shè)計、詳細設(shè)計、編碼和測試。需求分析階段可以實行角色扮演方式,將組內(nèi)部分人員放在用戶的位置上,采用面對面訪談方式進行需求獲取。在總體設(shè)計階段,要求根據(jù)自頂向下、逐步求精的模塊化設(shè)計思想,拆解為若干個功能單一、相對獨立的子模塊,根據(jù)每位學(xué)生對現(xiàn)有知識的掌握程度及編程水平進行任務(wù)分配,尤其要引導(dǎo)學(xué)生注意模塊間數(shù)據(jù)的傳遞和接口設(shè)計問題,減少使用全局變量,提高程序可維護性。詳細設(shè)計階段則要求學(xué)生多方位思考程序的實現(xiàn)途徑,對于稍微復(fù)雜點的必須先給出詳細的算法流程圖或偽代碼,然后進行編碼,將其映射為編程語句,以促進計算思維的培養(yǎng)。編碼和測試沒有明確的界限劃分,要求學(xué)生邊編碼邊進行單元測試,這個過程中要求學(xué)生學(xué)會看編譯出錯信息,掌握調(diào)試技術(shù),例如VC斷點調(diào)試、單步跟蹤等技巧,觀察內(nèi)存變量值的變化等。這樣一方面可以糾正學(xué)生原先那種與書上源代碼校對來查找錯誤的方式,另一方面可以提升對知識點的理解,尤其是通過在調(diào)試窗口觀察程序的動態(tài)運行過程來深入理解指針和鏈表問題。編碼階段完成部分測試后,還需要將各模塊功能集成到系統(tǒng)中進行測試,該過程中,向?qū)W生引入簡單的等價類劃分和邊界值測試等方法,避免學(xué)生測試隨機性和重復(fù)性。信息時代的教學(xué)模式應(yīng)以啟發(fā)學(xué)生探究為主,教師則是學(xué)習(xí)的指導(dǎo)者和幫助者,引導(dǎo)學(xué)生思考存在什么問題,可以用什么方式解決,而不是直接說明怎么解決。學(xué)生是學(xué)習(xí)的主體,為激發(fā)學(xué)生自主學(xué)習(xí)的熱情,C語言課程是設(shè)計采用實踐任務(wù)表驅(qū)動和階段性的驗收方式,引導(dǎo)學(xué)生課外學(xué)習(xí)按照自主的節(jié)奏一步一步有序?qū)W習(xí)。學(xué)生經(jīng)過課堂實驗,梳理歸納出實踐任務(wù)單,任務(wù)單包含課堂碰到的一些編程問題,以及教師給學(xué)生留下啟發(fā)式的思考題。階段性驗收以小組進行,以小組為單位匯報進度或發(fā)表意見,與教師進行面對面交流,測評實驗問題解決方案。這樣鼓勵學(xué)生在課后有針對性的自主發(fā)現(xiàn)和解決問題,課后去查找資料,獨立思考,從而實現(xiàn)從“做中學(xué)”到“學(xué)中思”的過渡。課程設(shè)計結(jié)束后,采用答辯方式進行考核,分為小組考核和個人考核,每組用15分鐘左右進行項目演示、功能介紹和總評,個人考核則以過程性考核為主,依據(jù)其所實現(xiàn)功能點的數(shù)量、在項目合作中發(fā)揮的作用,對調(diào)試操作的熟練程度等多個方面的指標進行。這樣就做到考核方式多樣化,而不單純以實現(xiàn)結(jié)果來衡量,從而能在全方面督促學(xué)生進步,也加強了學(xué)生良好的團隊意識和合作精神的培養(yǎng)。
3結(jié)束語
本文探討了網(wǎng)絡(luò)工程專業(yè)教學(xué)改革的具體措施,在本院實踐表明,實際項目的開發(fā)能很大程度上提高學(xué)生的學(xué)習(xí)興趣,加深知識點的理解,分組分階段的項目開發(fā)方式培養(yǎng)了學(xué)生的團隊協(xié)作能力,增強了學(xué)生的軟件工程意識,而通過任務(wù)驅(qū)動的課外學(xué)習(xí)方式,學(xué)生的學(xué)習(xí)自主性和解決問題能力都有了較大的提高。為了能夠滿足社會對應(yīng)用技術(shù)型人才的深層次需求,我們還需要在今后的實踐教學(xué)中繼續(xù)探索新的改革方案,以期達到更好的實踐效果。
參考文獻(References):
[1]何欽銘,陸漢權(quán),馮博琴.計算機基礎(chǔ)教學(xué)的核心任務(wù)是計算思維能力的培養(yǎng)—《九校聯(lián)盟(C9)計算機基礎(chǔ)教學(xué)發(fā)展戰(zhàn)略聯(lián)合聲明》解讀[J].中國大學(xué)教學(xué),2010.9:5-9
[2]杜恒.C語言程序設(shè)計(理實一體化教程)[M].機械工業(yè)出版社,2011.
[3]JeannetteM.Wing.ComputationalThinking[J].Communi-cationsoftheACM,2006.49(3):33-35
[4]九校聯(lián)盟(C9)計算機基礎(chǔ)教學(xué)發(fā)展戰(zhàn)略聯(lián)合聲明[J].中國大學(xué)教學(xué),2010.9:4,9
[5]謝飔羽.自主學(xué)習(xí)及大學(xué)生自主學(xué)習(xí)能力培養(yǎng)[J].中小企業(yè)管理與科技,2009.3:122
[6]張金磊,王穎,張寶輝.翻轉(zhuǎn)課堂教學(xué)模式研究[J].遠程教育雜志,2012.4:46-51
作者:樓軼超 單位:浙江工商大學(xué)信息與電子工程學(xué)院