魯紅英 肖思和 孫淑霞
摘要:針對目前高校C語言程序設計課程教學的現狀及存在的問題,結合課程組在國家級精品課程“C/C++語言程序設計”建設過程中的經驗和收獲,提出“以應用為前提,學生為主體,知識為主線,培養學生的實踐動手能力為著力點”的教學理念,闡述如何構建一套教材體系完善、教學資源豐富、教學手段先進、教學評價合理、考核方式差異化的教學體系。
關鍵詞:C/C++語言程序設計;教學改革;國家精品課程;教學方法
文章編號:1672-5913(2013)07-0095-04
中圖分類號:G642
1 課程教學現狀及存在問題
“C/C++語言程序設計”是理工科非計算機專業本科學生的第二門計算機課程,也是大學計算機基礎系列課程的核心課程。“C/C++語言程序設計”課程的內容抽象,概念和語法規則較多,特別講究適用技巧。長期以來,高校都在不斷地探索和實踐關于“C/C++語言程序設計”課程的教學改革,但仍然存在很多問題。例如,教學依然以傳統教學方式為主,不能將實驗環節與課堂教學環節很好地相互連貫,相互印證,使得理論教學和實踐教學脫節;某些教師忽視學生的實踐能力和創新能力的培養,使學生在分析問題和解決問題時無從下手,缺乏編程和調試的能力;實驗教學中的多數實驗內容是驗證性的,學生機械式的運行程序,對知識的理解只停留在表面上;理論和實驗課時數較少,上課信息量大,學生接受知識的進度不一樣,這就導致教師和學生的學習步調不一致。
針對上述問題,許多高校對“C/C++語言程序設計”課程的教學作出了有益的探索,如文獻[1]提出“通、實、新、聯”的教學理念;文獻[2]提出教學設計原理;文獻[3]提出項目教學法;文獻[4]提出案例教學法;文獻[5]提出“機房授課+自主學習”的授課模式;文獻[6]提出將“以應用為背景,以知識為主線,以提高能力和興趣為目的,變應試為應用”的教學理念應用于該課程的教學中。這些方法均在一定程度上激發了學生的學習興趣,增強了學生的動手能力,取得了較為明顯的教學效果。
為了探究出適合成都理工大學人才培養的課程特點,“C/C++語言程序設計”課程組經過多年的課程建設和對教學環節的研究與探索,提出了“以應用為前提,學生為主體,知識為主線,培養學生的實踐動手能力為著力點”的教學理念,構建了一套教材體系完善、教學資源豐富、教學手段先進、教學評價合理、考核方式差異化、精品課程網站新穎的教學體系。下面分別從教學設計、教學方法、教學手段、考核方式以及教學資源等方面進行闡述。
2 教學設計及課程內容組織
2.1教學設計
成都理工大學每年有4000名以上的學生參加“C/C++語言程序設計”課程學習。為實施因材施教,我們重視研究性學習、探究性學習、協作學習等現代教育理念在教學中的應用,根據課程內容和學生特征,對教學方法和教學評價進行設計,并在教學理念與教學設計上實施了多種改革舉措。
1)以學生為中心的教學模式。
以學生為中心的教學模式讓教師從傳統的教學方式中解脫出來,變“教學”為“導學”。教師充分利用多種教學媒體和提示學習資源,講重點、解難點、釋疑點,講評作業,指導學習方法,輔助小組學習,發揮學生的主體作用,引導學生自主學習,幫助學生培養自學能力。
教師要在理論課前了解學生是否掌握了與課程有關的基礎知識和基本技能,根據學生在實驗課的表現來了解學生是否掌握了教學目標中要求學會的知識和技能,以及掌握的程度等信息,從而確定后續教學中應重點講解和輔導的知識,根據學生的實際情況設計教學環節。對于部分優秀學生和已經學習了程序設計的學生,我們要加快他們的學習進度,增加學習難度和深度,使他們可以很快在自己的專業中使用程序設計來解決相關問題。
2)精心準備每一節課,激發學生學習積極性。
激發學生對程序設計課程的學習興趣,是本課程任務執行的重要目標。學生是主動學習還是被動學習會讓教學效果產生明顯的差別,因此每位教師都應精心準備每一節課。引領學生跨入程序設計大門的第一節課是極其重要的。學生所關心的是所學課程對自己的專業和今后的工作有什么作用,教師可從不同的專業角度,結合當前最熱門的IT話題和實際應用為學生介紹學習本課程的意義和作用,同時介紹一些往屆學生將所學程序設計知識用于數學建模、程序設計競賽、專業課程學習等方面的生動實例,這些都是教師第一節課的良好素材。
3)培養學生系統化的程序設計思維。
程序設計課程長期存在著注重語句、語法和細節的特點,基本上是以程序設計語言自身的體系為脈絡展開的。許多學生在學習程序設計語言課程時會覺得枯燥難學,學過后又不能用來解決實際問題。所以學生雖然學了一定的程序設計知識,但編程能力較差。‘部分學生在遇到實際問題依舊無從下手。而系統化程序設計思維培養模式是從本科生的認知特點出發,讓教師在教授學生程序設計課程、提高學生編程能力的同時,培養學生的系統化程序設計思維。
程序設計課程不僅教學生如何進行計算機編程,而且教學生如何像程序員一樣思考問題。系統化的程序設計思維的培養過程就是讓學生自己動手解決實際問題的過程。這個過程充滿了學生對未知問題的探索、研究與創新,不僅可以教會學生解決在程序設計中遇到的問題,而且可以鍛煉思維,使學生的邏輯思維更加嚴密,這對一個理工科的大學生來說是至關重要的,對學生整體素質的提高、程序設計課程整體教學水平的提高都有現實意義。
4)互換角色思考與提問。
在教學過程中我們發現,很多學生不提問,有時是學生提不出問題,有時是不知該如何提問。這時,教師需要站在學生位置上,思考學生可能會有什么問題,然后由教師提出問題,讓學生來回答。如果學生不能回答,教師再為學生解答。教師備課時不再只是準備我要講什么,而是思考學生會遇到什么難點,需要向學生提什么問題、解答什么問題。基于此目的,教師需準備大量經典案例,提出問題,分析問題,并在問題中設置一些錯誤,讓學生思考原因,并進一步思考如何修改錯誤,在這樣的學習過程中潛移默化地掌握基本的語法知識和解決問題的方法。這種模式轉變了學生的學習方式,激勵學生積極思考問題、分析和解決問題。
2.2理論課程設計
由于科學技術的快速發展,計算機科學與其他學科間的交叉、融合日益增強。大多數非計算機專業的培養目標已將學生的計算機程序設計能力作為了一項重要內容。
本課程主要是針對非計算機專業的理工科一年級大學生開設的。與計算機專業不同的是,非計算機專業學生一般只學一門語言課程。因此,該課程的教學就擔負起培養學生編程能力的重要責任,成為了學習其他程序設計語言的基礎。
根據非計算機專業各學科的培養目標,“C/C++語言程序設計”課程在理論課程內容設計上注意知識結構的合理,強調基本能力的培養,注重基礎理論與實際應用的融合。課程內容體系結構重點突出學以致用。課程內容知識結構由C語言簡單程序的編寫和調試、C語言程序設計基礎、控制結構、數組、指針、函數、編譯預處理與變量的存儲類型、文件、結構體與共用體、圖形程序設計基礎、C++程序設計基礎、查找和排序12部分組成。
根據學以致用的原則,在實際應用中,函數是程序設計的重要內容之一,也是學生學習的難點之一,因此在理論課程設計中,我們將函數的使用提前講解,讓學生盡早接觸函數,理解模塊化的設計方法,掌握函數的基本設計和操作。在講授第2章有關輸入/輸出庫函數時,可同時結合第8章文件的知識,使學生掌握實際問題中涉及不同數據的不同輸入/輸出方式,較好地解決了學生學習C語言后不能熟練掌握文件操作的問題。
教材在內容編排上注重易用性。每章的開頭設置本章學習目標,之后設置本章學習指導,包含“課前思考”“本章難點”和“本章編程中容易出現的錯誤”。每章后的練習題涵蓋了程序設計中的常見算法,涉及簡單程序設計、較復雜程序設計、易于舉一反三的程序設計問題等內容,使學生能夠通過練習,大大地提高編程能力。
2.3實驗課程設計
“C/C++語言程序設計”是一門實踐性很強的課程。在近幾年的課程建設與教學改革中,實驗課程注重理論課程內容與實驗內容的有機結合,強調學生創新能力和實際動手能力的培養。C/C++程序設計實驗教學內容改變了以往驗證性實驗為主的現象,使設計性實驗內容占了70%以上。通過實驗,培養學生分析問題和解決問題的能力,以及動手能力和程序設計能力,從而加深對理論課程內容的理解。
實驗課程配有實驗指導書,共設計了11個實驗項目和一個綜合程序設計,其基本出發點是幫助學生理解和消化課堂教學的內容,培養學生自主學習能力,加強其實踐能力和團隊協作精神,讓學生掌握程序設計的基本思想和方法。具體實驗內容包括:C/C++簡單程序的編寫和調試、C語言程序設計基礎、控制結構、數組、指針、函數、編譯預處理、文件、結構體與共用體、圖形程序設計、C++程序設計基礎。
3 教學方法和手段
3.1教學方法
為了實現程序設計課程的教學目標,使學生不但掌握高級編程語言的知識、編程技術和基本算法,更要掌握程序設計的思想和方法,培養學生進行問題求解和編程的能力,以及探索和創新能力,我們采用了多種教學方法,主要做了以下改革。
1)課內與課外訓練相結合,注重學生綜合能力的培養。
課內教師根據教材進行引導學習,加強典型例題的啟發式講解。在分析常見錯誤案例的過程中,教師講解程序設計的基本方法、程序測試方法以及程序調試和排錯方法,幫助學生理解錯誤發生的原因和實質,掌握糾錯的方法和解決的對策。在實驗教學中,我們為每堂實驗課設計相應的實驗項目。實驗項目的設計注重實用性和綜合性。實踐教學強調大量程序設計的訓練。教師在網上為學生發布一些經典、實用、有一定挑戰性的作業,鼓勵學生課外多訓練,倡導學生課后以寢室為單位,組成學習小組,進行討論、分析和解決問題。
為了激勵學生參與程序設計的實踐,進一步提高學生程序設計的興趣,提升他們的軟件技術水平,成都理工大學每年舉行一次全校范圍的程序設計大賽。大賽采用初賽和決賽制,要求學生在2~4小時內完成一個綜合性較強的程序設計題目,或在一段時間內完成一個綜合程序設計題目,然后進行答辯。
2)重視實踐教學環節、注重學生創新意識與應用能力的培養。
為了培養學生的實踐動手能力,我們加強了實踐教學環節的管理。教師要積極使用多媒體實驗室的教學設備,進行啟發、引導式的實驗指導,將平時測試與期末測試結合,測試學生在1個小時內調試和正確編寫程序的能力,引導和督促學生重視實踐教學。開放性實驗注重培養學生的創新意識與應用能力。
3)網站互動學習。
課程組建立的教學網站、精品課程網站、課程資源平臺等為學生提供了網絡課程、網上答疑、作業提交、理論試題及答案、上機試題及答案、教學錄像、視頻節目、精品課程網站鏈接、相關學習網站鏈接等資源,擴充了課堂教學區域。學生可以在任何時候、任何地點進行互動學習。這種方法及時地解決了學生在學習中遇到的疑難問題。
4)改革考核方式,采用多元評價方式考核實驗成績。
為了提高學生的學習興趣,培養學生問題求解和編程能力,以及探索和創新能力,我們采用了開卷和閉卷相結合的考試方式,鼓勵基礎好的學生開卷考試,完成一個綜合編程題目。經過實踐,參加開卷考試的學生在獨立分析問題、解決問題和編程能力上得到了很大提高。
3.2教學手段
多年以來,成都理工大學“C/C++語言程序設計”課程最大限度地、多方位地應用了以下現代教育技術手段。
1)課堂多媒體理論教學。
本課程的理論教學將傳統教學手段和現代教育技術手段相結合,在應用現代教育技術手段的同時,繼續發揮傳統教學的優勢。課堂上多媒體課件的播放效果直接影響到學生的聽課效果,因此我們不僅制作了幻燈片,還利用Autherware、Flash等工具,制作了具有較強動畫效果的多媒體課件,將程序的執行過程利用動畫演示,生動、形象地模擬了計算機執行程序的真實情況。
2)建立計算機基礎教學網站。
我們開發課程網上教學平臺,為學生提供電子教案、多媒體課件、視頻等豐富的網上教學資源,同時提供討論和在線答疑,構建以學生為中心的自主學習環境。
3)網上考試系統。
網上考試系統為學生提供了模擬和考試環境,實現了系統自動組卷和評分功能,為學生課后自學和自測、提高教學效果搭建了一個有效的平臺。
4 考核方式
課程考核可以采用開卷和閉卷2種形式。
1)閉卷考試由筆試和機試組成。
(1)筆試(占總成績的50%)主要考核語言基礎、基本的閱讀和編寫程序的能力。題型包括選擇題、填空題、程序閱讀題和程序填空題。
(2)機試(占總成績50%)主要考核程序設計能力,包括上機考試(占總成績的30%)和平時出勤及作業完成情況(占總成績的20%)。
2)開卷考試主要考核學生綜合程序設計的能力,獨立分析問題和解決問題的能力,難度較大。通常只有學習優秀的學生可以參加開卷考試。這些學生必須是按時完成了每一次的實驗項目,且中期考試合格。開卷考試要求學生提供源程序、開卷考試報告并參加面試。
5 結語
通過對各種教學方法和教學手段的研究和探索,我們改變了傳統的知識傳授理念,從而更加注重學生解決實際問題的能力,并提出“以學生為主體,教師為引導,網絡教學為輔助”的全新理念,極大地激發了學生的學習興趣,挖掘了學生的創造潛能,又培養了他們自主研究、協作學習的能力。實踐證明,通過上述教學改革措施,教學效果取得了顯著提高。在計算機二級c語言考試中,學生通過率較往年大大提升。當然,實際教學過程是一個相當復雜的系統,也還存在著一些需要解決的問題,還需要我們在今后的實踐中繼續開拓,不斷探索。
參考文獻:
[1]趙珊,賈宗璞,“C語言程序設計”課程教學模式改革方案探討[J],科技資訊,2011(35):185-187。
[2]黃群,C語言程序設計課程教學設計探討[J],計算機教育,2010(5):78-81。
[3]陳洪超,項目教學法在“C語言程序設計”課程中的應用[J],重慶電力高等專科學校學報,2012,17(3):29-30,36。
[4]左永文,案例教學法在“C語言程序設計”課程中的應用[J],科技創新導報,2012(18):175-175。
[5]陳剛,朱曉燕,江漢大學“C語言程序設計”課程教學改革[J],計算機光盤軟件與應用,2012(7):245-246。
[6]李敏杰,呂橙,王雅杰,“C語言程序設計基礎”的教學改革與實踐[J],現代計算機:專業版,2012(8):45-49。
(見習編輯:劉麗麗)