摘要:程序設計思維能力是計算機及相關專業(yè)學生最重要的專業(yè)能力之一,程序設計課程教學的重要任務之一是培養(yǎng)學生的程序設計思維能力。本文分析了高級語言程序設計課程的現(xiàn)狀,提出基于任務驅動,以提高學生程序設計能力為目的的課程體系改革與實踐,從課程教學內容、教學方式、教學手段和考核方式等方面進行了教學探討。
關鍵詞:程序設計課程;教學改革;程序設計能力
1 研究背景
程序設計能力是計算機及其相關專業(yè)學生最重要的專業(yè)能力之一,它是評價本專業(yè)本科生培養(yǎng)質量的首要指標。高級語言程序設計是計算機專業(yè)學生的第一門專業(yè)基礎課程。通過該門課程的學習,學生應該掌握正確的、規(guī)范的編程方法;掌握通過編程解決問題的方法和思路;加深對計算機基本概念的理解,訓練邏輯思維能力,培養(yǎng)嚴謹?shù)目茖W作風。因此,該門課程的教學質量直接決定了學生程序設計能力的高低,對學生專業(yè)素養(yǎng)的形成具有重要的影響作用。
在高級語言程序設計課程的教學過程中常常會出現(xiàn)這樣的矛盾沖突:教師抱怨課時少,課本上的內容不能講細講全,學生底子薄,難以深入理解課程的要義和精華;而學生則抱怨課程概念比較復雜,規(guī)則繁多,枯燥乏味,難以學習,難以實際運用,因而缺少學習的興趣和動力,更談不上自主學習。
在多年的教學實踐中我們感到,老師在課堂教學中過于注重語句、語法和一些細節(jié)的講解,考核(特別是標準化考試)也是偏重于語法,課程基本上是以高級語言自身的體系脈絡展開的;在常用的“講授語法規(guī)則,給出例題,再加解釋”簡單三步式的教學中,學生花了很大精力學習語法,但還是不知如何編寫一個正規(guī)的程序,不知道怎樣通過編程去解決問題,忽視了程序設計思想的學習。分析問題、解決問題的能力不高,很大程度上影響了學生專業(yè)技能的培養(yǎng)。為此,我們對課程的教學現(xiàn)狀作了調查和分析研究,主要狀況如下[1]:
1) 目標定位不明確。學習編程語言還是學習程序設計方法?教授編程知識還是培養(yǎng)用編程知識解決實際問題的能力?程序設計類課程目標定位不明確,沒有建立課程目標體系,專業(yè)基礎課的作用不明顯。
2) 對專業(yè)能力的培養(yǎng)重視不夠。課程教學中太過強調程序語言本身的要素,以知識點為目標,忽視了對知識綜合運用和實踐能力的培養(yǎng)。
3) 對課程的實踐性重視不夠,實際知識運用的訓練較少。實踐教學不夠系統(tǒng)和完善,實踐項目的設計沒有充分考慮能力目標的培養(yǎng)而過多關注程序語言本身的特性。
4) 練習和考試。多采用書面或驗證性實驗的形式,以標準化習題和簡單的編程題為主,缺少對知識靈活運用的練習題,缺少專業(yè)性編程基礎的練習題,缺少對程序實際運行的檢查,從某種意義上引導學生只關注基本概念和語言要素,忽視了對程序設計能力的鍛煉和培養(yǎng)。
5) 從教學效果上來看,學生基本程序設計能力差,遇到程序設計問題不知如何下手,缺乏完整系統(tǒng)的程序設計方法,工作效率低;缺乏專業(yè)程序設計的能力和意識,代碼質量意識弱,代碼質量差,缺乏中等規(guī)模以上的程序設計能力。
2課程體系改革
2.1教學內容的改革
經(jīng)過分析,我們認為在高級語言程序設計課程中一些更為重要的內容沒有教給學生(或強調得不夠),那就是程序設計的方法和編程解決問題的思路。為此,我們對程序設計課程進行改革,在教學內容的設計以及教學過程的各環(huán)節(jié)設計中,弱化學生對編程知識和語言本身的關注,突出對知識的運用,使學生能從更高的角度認識學習目的,并在第一門程序設計課程中引入軟件工程的思想,指導學生編寫規(guī)范的程序。改革后的教學內容如表1所示。
2.2教學方法的改進
在教學中,努力貫穿程序設計語言的語法服務于任務求解和程序實現(xiàn)的思想。以知識點為主線,采用問題驅動方式,通過實例來講授程序設計的概念和方法。重點放在編程構思上,試圖貫穿以程序編寫帶動語法教學的模式,引導學生掌握計算機語言的核心編程方法,提高應用能力,做到計算機語言知識和應用開發(fā)能力的融會貫通。
任務驅動是指由教師根據(jù)教學內容,以任務為核心組織每一堂課的教學,將學生自主學習和探究過程置于一個特定的情境中。通過交流,引導學生發(fā)現(xiàn)問題、解決問題、反思學習,充分發(fā)揮學生的主動性和積極性。在教學中,我們把原來“講授語法知識→講解算法思路→學生理解算法思路→用該種算法解決實際問題”的課程授課體系,改革為“提出問題→分析問題解決的思路和方法(算法分析)→解決問題(編寫程序)→語法小結→程序測試、結果分析→用該方法解決實際問題”。在專業(yè)學生的第一門專業(yè)基礎課程中引入軟件測試的介紹,使學生一開始就建立一個正確的軟件測試觀點,對提高學生的程序調試能力有很大幫助。
我們學院高級語言程序設計課程是以C語言作為教學語言。下面以“選擇結構程序設計”單元為例,說明課堂教學組織結構。
1) 選擇結構程序設計教學案例。
任務一:計算一元二次方程的根。
任務二:從鍵盤輸入你和你朋友的年齡,判斷誰的年齡最大,輸出最大者的年齡。
算法1:用不帶else子句的if語句編程
算法2:用帶有else子句的if語句編程
算法3:用條件表達式實現(xiàn)
任務三:給出由身高與體重計算的“體指數(shù)”,判斷某人是否屬于肥胖。
算法1:用不帶else子句的if語句編程
算法2:用在if子句中嵌入if語句的形式編程
算法3:用在else子句中嵌入if語句的形式編程
任務四:根據(jù)輸入的百分制成績,轉換成相應的五分制成績并打印輸出。
算法1:用嵌套的if語句編程
算法2:用switch語句編程
任務五:編程設計一個簡單的計算器,要求根據(jù)用戶輸入的表達式計算,指定的運算符為加(+)、減(-)、乘(*)、除(/)。
2) 語法小結——if-then; if-then-else; switch。
3) 程序測試——白盒測試法。
4) 編程練習。
在課堂教學組織中要做到選擇任務典型,能夠代表一些基本的算法,并能留下深刻印象;隨著問題算法由淺入深地介紹,語法知識逐步展開;將程序測試引入,不僅需要設計合理的測試數(shù)據(jù),還需要設計不合理的測試數(shù)據(jù),讓學生建立正確的程序測試觀點。
2.3教學手段的變化
在教學手段上,積極采用多媒體教學,但不局限于多媒體教學。我們發(fā)現(xiàn),并不是所有的教學內容都適合采用多媒體教學,多媒體技術不恰當?shù)氖褂脮稚W生注意力,不利于培養(yǎng)學生的邏輯思維。在高級語言程序設計課程的教學過程中,我們將傳統(tǒng)教學與多媒體教學進行了有機的結合。將一些概念、語句的格式說明、案例代碼制作成課件,在課堂上展示,加大信息量的投入。大部分例題和習題直接在C編譯環(huán)境下講授,但部分案例的分析和程序的編寫過程,則采用傳統(tǒng)的黑板板書教學方式,隨著老師的講解和板書,將問題層層剖析、層層深入,能有效帶動學生的積極思維,增強師生互動。
建立網(wǎng)絡輔助教學平臺可以有效地利用教學資源,擴大學生的知識面,增強師生互動。該網(wǎng)站收集了完整的網(wǎng)絡課程資料,包括教學大綱、教學錄像、網(wǎng)絡教學課件、實驗指導、在線測試、下載中心、在線答疑等欄目,為學生自主學習提供了豐富的資源。
2.4課程考核方式的改變
衡量高級語言程序設計課程學習的好壞,不是看學生“知不知道”,而是“會不會干”。所以,建立一個服務于課程目標的學生成績評定方法是一項非常重要的工作。我們要求成績評定應具有激勵、反饋、導向三大功能,達到“以考促學”的目的。因此,在評定內容上不僅僅是基本理論、基本知識的掌握,更要重視對學生學習過程的考核,重視實踐和動手能力的考核,側重考核學生解決問題的能力。
以往,高級語言程序設計課程成績的評定是以8∶2方式,即期末筆試成績占該課程總成績的80%,平時成績占總成績的20%的方式。在新的成績評定體系下,采用5∶3∶2評定方式,即期末筆試成績占總成績比例由80%降為50%,增加了實踐環(huán)節(jié)成績,占總成績30%,平時成績仍占總成績20%。其中,實踐環(huán)節(jié)成績包括課程學習過程中的10個實驗成績以及課程結束時的實踐環(huán)節(jié)考試成績。這種考核進一步促進學生對實踐能力培養(yǎng)的重視。
3結語
課程特點和教學目標的定位決定教學方法的選擇和對教學內容的設計,“案例引導,任務驅動”的教學模式是實施高級語言程序設計課程教學的有效方法。我們對近幾年的程序設計教學進行了調查,學生普遍反映課程教學的改革提高了他們的學習興趣,動手能力和編程能力有了明顯提高,為進一步學習和工作打下了良好的基礎。
參考文獻:
[1]