摘要:“C語言程序設(shè)計”是計算機專業(yè)的基礎(chǔ)課程,對訓(xùn)練學(xué)生的抽象思維能力和解決實際問題的能力具有重要作用。文章介紹基于項目化教學(xué)的“C語言程序設(shè)計”課程改革的教學(xué)目標(biāo)和實施方案,以哈爾濱師范大學(xué)計算機科學(xué)與技術(shù)專業(yè)的C語言課程改革實踐為例,闡述如何實施基于項目化教學(xué)的課程改革。
關(guān)鍵詞:C語言程序設(shè)計;教學(xué)質(zhì)量;課程改革
一直以來,C語言教學(xué)都是圍繞語法知識這個主線展開,按照數(shù)據(jù)類型、運算符、變量操作的順序來學(xué)習(xí)基本知識,按照數(shù)組、函數(shù)、結(jié)構(gòu)體的順序來學(xué)習(xí)程序結(jié)構(gòu)。這種線性教學(xué)模式可以循序漸進地把教學(xué)內(nèi)容傳授給學(xué)生,但是很難鍛煉學(xué)生的抽象思維和解決實際問題的能力。學(xué)生長期反復(fù)地學(xué)習(xí)基礎(chǔ)知識和經(jīng)典算法,雖然可以讀懂和編寫簡單的程序,但很難形成對編程的興趣,也沒有自主思維和實踐創(chuàng)新的意識。為了改進目前C語言教學(xué)“重理論,輕實踐”的現(xiàn)狀,哈爾濱師范大學(xué)在計算機科學(xué)與技術(shù)專業(yè)推廣基于項目化教學(xué)的“C語言程序設(shè)計”課程改革研究和實踐工作,取得了良好的教學(xué)效果。
1 教學(xué)目標(biāo)
實施C語言項目化教學(xué)要明確教學(xué)目標(biāo),關(guān)鍵問題是讓教學(xué)從應(yīng)用人手。教學(xué)要盡量面向技能訓(xùn)練和應(yīng)用能力培養(yǎng),首先確定教學(xué)的技能目標(biāo)和應(yīng)用目標(biāo),然后選擇相關(guān)的知識點組成有階梯難度和深度的項目教學(xué)內(nèi)容,在項目中體現(xiàn)知識目標(biāo)。這種從應(yīng)用角度規(guī)劃教學(xué)內(nèi)容的教學(xué)方式,避免了知識點過多、過難的問題。學(xué)生不再面對難以理解和掌握的抽象理論知識,而是要親自動手練習(xí)、總結(jié)和掌握編程經(jīng)驗,鍛煉解決問題和實踐創(chuàng)新的能力?;陧椖炕虒W(xué)的“C語言程序設(shè)計”課程改革的教學(xué)目標(biāo)界定流程如圖1所示。
1.1初級階段
學(xué)習(xí)C語言的初級階段應(yīng)該是學(xué)習(xí)結(jié)構(gòu)化程序設(shè)計思路和基本語句的使用,基本內(nèi)容包括數(shù)據(jù)類型、變量、運算符、順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)等。項目化教學(xué)應(yīng)該把各種知識和操作的組合使用作為應(yīng)用目標(biāo),把各種語句的理解和訓(xùn)練作為技能目標(biāo),在知識點方面則要加入更加復(fù)雜的數(shù)組、指針、文件等內(nèi)容。這樣就可以提前讓學(xué)生了解和掌握傳統(tǒng)知識結(jié)構(gòu)中后期才能接觸的知識,提高應(yīng)用訓(xùn)練的強度和深度。初級階段的知識點目標(biāo)、技能目標(biāo)和應(yīng)用目標(biāo)如表1所示。
1.2進階階段
進階階段應(yīng)該是在掌握C語言基本概念和操作的基礎(chǔ)上,學(xué)習(xí)軟件開發(fā)模塊化和信息傳遞、常用算法學(xué)習(xí)和改進、團隊合作開發(fā)等應(yīng)用技能。項目化教學(xué)中,把應(yīng)用模塊化編程和項目分工協(xié)作作為應(yīng)用目標(biāo),把函數(shù)調(diào)用和參數(shù)傳遞、常用算法學(xué)習(xí)和改進作為技能目標(biāo),把程序調(diào)試、函數(shù)編寫和函數(shù)庫調(diào)用作為知識點目標(biāo)。進階階段的知識點目標(biāo)、技能目標(biāo)和應(yīng)用目標(biāo)如表2所示。
1.3提高階段
提高階段主要是在之前學(xué)習(xí)的基礎(chǔ)上,設(shè)計可以通過多種方法或結(jié)構(gòu)實現(xiàn)的項目任務(wù)。把程序設(shè)計和算法改進作為應(yīng)用目標(biāo),把編程技巧綜合運用作為技能目標(biāo),把構(gòu)造體、指針和文件操作等內(nèi)存分配相關(guān)知識作為知諷點目標(biāo)。提高階段的知識點目標(biāo)、技能目標(biāo)和應(yīng)用目標(biāo)如表3所示。
2 實施方案
“C語言程序設(shè)計”課程改革的方案分為兩個階段。一個是語言基礎(chǔ)階段,是在教師的主導(dǎo)下進行的;一個是編程提高階段,是把學(xué)生作為教學(xué)的主體?;陧椖炕虒W(xué)的“C語言程序設(shè)計”課程改革的實施方案如圖2所示。
在語言基礎(chǔ)階段,教師運用任務(wù)驅(qū)動教學(xué)法,把教學(xué)分為任務(wù)提出、知識分析、任務(wù)分解、任務(wù)完成和評價提升5個階段。在教學(xué)初期,教師選擇小型軟件系統(tǒng)的一部分作為課堂任務(wù),介紹任務(wù)相關(guān)的知識點和要求,然后和學(xué)生一起討論分析任務(wù)的解決方案和實現(xiàn)細(xì)節(jié),再由學(xué)生根據(jù)書本內(nèi)容和教師講解內(nèi)容完成該任務(wù),最后教師對學(xué)生完成的任務(wù)進行評價和總結(jié)。學(xué)生根據(jù)教師的評價來修改程序,達到加深認(rèn)識、提高技能的目的。
在編程提高階段,教師要設(shè)計項目教學(xué)內(nèi)容,讓學(xué)生組成團隊選擇或自選題目,完成一個可以解決實際問題的軟件系統(tǒng)。項目教學(xué)分為項目提出、知識分析、項目遞進、項目實施和驗收總結(jié)5個階段。教師在這個階段只是輔助和引導(dǎo)的角色,在初期提出項目要求和備選項目之后,教師就不再參與項目的分析、實施和完成工作。學(xué)生要根據(jù)自己的技能積累和知識儲備自行選擇、設(shè)計和完成項目。項目首先是一個功能簡單的軟件系統(tǒng),學(xué)生在完成基本功能之后,要通過討論和分析提出項目遞進和拓展的內(nèi)容。這里的遞進可以是功能上的也可以是性能方面的,最終完成的系統(tǒng)要具備一定的功能特點。項目完成之后,教師要組織學(xué)生進行評審,小組之間互相驗收,最后根據(jù)完成情況進行評價、展示和經(jīng)驗共享工作。
“C語言程序設(shè)計”課程改革實施方案的兩個階段都是把理論和實踐融為一體進行的,在教學(xué)過程中學(xué)生不再面對抽象、無趣的基礎(chǔ)概念和復(fù)雜算法,而是自己動腦動手操作和學(xué)習(xí),把書本知識融入任務(wù)和項目當(dāng)中,這也是基于項目化教學(xué)的“C語言程序設(shè)計”課程改革的創(chuàng)新之處。
3 改革實踐
基于項目化教學(xué)的“C語言程序設(shè)計”課程改革的核心思想就是“以練代學(xué)”,以學(xué)生作為課程主體,將技能掌握和應(yīng)用作為主線。在課程改革實踐過程中,主要從教學(xué)內(nèi)容、教學(xué)方法和考核方式3個主要教學(xué)環(huán)節(jié)人手展開。
3.1教學(xué)內(nèi)容改革
基于項目化教學(xué)的“C語言程序設(shè)計”課程改革的依據(jù)是軟件開發(fā)領(lǐng)域和實際工作范疇,選取的項目要貼近實際,具有典型性。教學(xué)內(nèi)容要根據(jù)課程的進度而定,一般將整個教學(xué)內(nèi)容分為4個模塊,分別是理論基礎(chǔ)操作模塊、程序設(shè)計模塊、數(shù)據(jù)處理模塊和應(yīng)用程序開發(fā)模塊。每個模塊都由一個或若干個課程任務(wù)組成,程序設(shè)計模塊的課程任務(wù)和對應(yīng)知識點如表4所示。
3.2教學(xué)方法改革
項目化教學(xué)模式采用引導(dǎo)式的教學(xué)方法,教師在提出項目或任務(wù)之后,給學(xué)生足夠的時間去分析問題和尋找解決方案。在教學(xué)展開初期,學(xué)生應(yīng)該思考如何設(shè)計功能,選擇正確的技術(shù)來解決問題。當(dāng)然在這個過程中必然會有很多無法解決的問題,這就需要教師講解,這些講解內(nèi)容往往正是教學(xué)的重點和難點。以往的教學(xué)重點和難點都是抽象的、難懂的,學(xué)生常對其有抵觸情緒,而在項目化教學(xué)法中這些問題都是學(xué)生提出的,學(xué)生對于解決問題是有興趣和動力的,必然會投入更多的熱情。另外,項目化教學(xué)采用項目作為引導(dǎo)學(xué)生學(xué)習(xí)的載體,其中蘊涵的模塊化設(shè)計和團隊合作的思想也是軟件開發(fā)的精髓所在,學(xué)生在教學(xué)過程中也潛移默化地積累了系統(tǒng)開發(fā)的經(jīng)驗,這對其他的高級軟件程序設(shè)計語言學(xué)習(xí)也是一個很好的基礎(chǔ)鋪墊。
項目化教學(xué)法的本身是基于建構(gòu)理論的,倡導(dǎo)讓學(xué)生在實踐中學(xué)習(xí)、在學(xué)習(xí)中思考、在思考中創(chuàng)新。項目只是教學(xué)導(dǎo)向的形式,教學(xué)的核心內(nèi)容應(yīng)避免以往存在的學(xué)生只是死記硬背基礎(chǔ)知識、模仿經(jīng)典算法和函數(shù)、沒有自我思考和分析能力等誤區(qū),幫助學(xué)生在學(xué)會“C語言程序設(shè)計”之余還能自己分析和解決問題,掌握研究探索新問題和合作討論的意識。項目化教學(xué)法不是固定的,教學(xué)內(nèi)容和組織形式都要隨著時代的變遷而改變,不能把一個經(jīng)典算法講爛,也不能憑空編造、脫離實際,要把生活中或工作中的問題拿出來作為項目讓學(xué)生研究,只有熟悉的內(nèi)容學(xué)生才會感興趣。例如,同樣是結(jié)構(gòu)體知識,理發(fā)店排隊問題就遠比大數(shù)字倒序輸出生動,學(xué)生的積極性決定了教學(xué)質(zhì)量,這是必須重視和研究的問題。
3.3考核方式改革
哈爾濱師范大學(xué)計算機科學(xué)與技術(shù)專業(yè)的“C語言程序設(shè)計”課程考核體系是過程式考核和期末考試相結(jié)合,其中過程式考核占總成績的60%,期末考試占總成績的40%。在過程式考核中,學(xué)生出勤和課堂表現(xiàn)占20%,上機實踐(包括程序設(shè)計和調(diào)試能力、代碼規(guī)范程度、課程實驗)和作業(yè)(包括實驗報告、課后作業(yè))占40%。期末考試的形式是筆試,考查基礎(chǔ)知識和程序分析能力?!癈語言程序設(shè)計”課程考核體系如表5所示。
4 結(jié)語
通過一段時間的實踐,基于項目化教學(xué)的“C語言程序設(shè)計”課程改革取得了一定的成效,教學(xué)效果良好,學(xué)生學(xué)習(xí)積極性高漲,程序設(shè)計能力明顯提高。項目化教學(xué)模式也會逐步在其他課程中推廣使用,哈爾濱師范大學(xué)會組織教師繼續(xù)研究如何提高項目化教學(xué)的時效性和拓展性,在教材改革和師資隊伍建設(shè)等方面作進一步的研究和探索。
(見習(xí)編輯:劉麗麗;編輯:郭田珍)