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