摘要:闡述歸納式教學法的基本原理及其對程序設計課程的重要意義,提出程序設計課程在完善案例教學、加強學生實踐、改革考試方式等方面,基于歸納式教學法的若干創(chuàng)新教學方法,強調(diào)通過實踐提高學習效率,培養(yǎng)學生的自主學習能力和創(chuàng)新精神。
關鍵詞:歸納式教學法;程序設計;創(chuàng)新教學方法
程序設計課程是計算機專業(yè)的核心基礎課程。關于程序設計課程的創(chuàng)新教學方法研究是我國高校重點關注的課題之一。本文重點研究了歸納式教學法在程序設計課程中的應用,首先介紹程序設計課程創(chuàng)新教學方法的研究現(xiàn)狀,之后闡述歸納式教學法對程序設計課程的重要意義,再提出基于歸納式教學法的程序設計課程的若干創(chuàng)新教學方法,最后作出總結(jié)。
1.程序設計課程創(chuàng)新教學方法的國內(nèi)外研究現(xiàn)狀
1.1國內(nèi)研究現(xiàn)狀
國內(nèi)很多大學都在程序設計課程創(chuàng)新教學方法上作出了有益的嘗試。例如,文獻[1]提出以多媒體課件為主、以多本參考書為輔,演示的程序?qū)嵗簧儆?00個。文獻[2]采用“案例牽引、項目驅(qū)動、團隊合作、引導互動”為特征的“做中學”教學模式,按照企業(yè)過程標準實際完成一個產(chǎn)品或系統(tǒng)的完整構(gòu)建過程訓練。文獻[3]通過啟發(fā)式提問講解編程原理和方法,然后講解案例源碼,再引導學生分組討論。文獻[4]以培養(yǎng)工程師的綜合品質(zhì)和創(chuàng)新能力為目標,將基于問題和項目的設計教育貫穿整個工程教育過程。
以上學校都是圍繞課程教學的具體方法來進行創(chuàng)新,而九校聯(lián)盟(C9)則提出,要把培養(yǎng)學生的“計算思維”能力作為計算機基礎教學的核心任務,并圍繞這一核心任務加強計算機課程體系和教學內(nèi)容的研究。
1.2國外研究現(xiàn)狀
文獻[6]提出計算機教學中應綜合運用不同學科的方法,包括計算機學科、教育學、社會學、心理學等。文獻[7]認為建立正確的思維模式對于學習編程十分重要。學生必須改變原有的思維模式,否則雖然在學,卻不能真正理解編程。文獻[8]發(fā)現(xiàn)很多學生對推理和創(chuàng)新不感興趣,只看重結(jié)果,他們認為應當讓學生了解計算機學科不僅是一門技術,更需要發(fā)揮聰明才智和創(chuàng)造力。文獻[9]提出了一種新的案例授課方法。在一門課程中,每次給學生留作業(yè)都使用同一個案例(或背景),但是隨著課程的深入,要求學生運用不同的知識點來解決這個案例中的不同問題。這種方法可以節(jié)省學生理解案例內(nèi)容的時間,讓學生把精力集中于如何解決問題。文獻[10]介紹了一種輔助編程軟件Alice 3,可以幫助學生利用可視化環(huán)境學習Java編程技術。
2.歸納式教學法及其對程序設計課程的重要意義
我們認為要想創(chuàng)新教學方法,首先必須更新教學理念。美國的普林斯和菲爾德總結(jié)了“歸納式教學法”在高等教育中的應用。我們認為歸納式教學法的原理和方法非常適合于程序設計課程。事實上,前述國內(nèi)高校所采用的“案例牽引”“啟發(fā)式提問”“基于問題和項目的教學”等都屬于歸納式教學法的范疇,只是沒有從理論上闡明歸納式教學法對于程序設計課程的重要意義。
2.1歸納式教學法簡述
歸納式教學法包括一系列教育方法,如探究式學習、基于問題/項目/案例的學習、發(fā)現(xiàn)式學習和即時教學等。這些方法的共同特點是“以學習者為中心”,讓學生在學習中居于主導地位,采用多種手段激發(fā)他們主動學習的精神。歸納式教學法的一般做法是:先提出一個問題、項目或案例,由學生組成小組在課內(nèi)或課外進行討論和研究,提出解決方案,再評價不同方案的優(yōu)劣,從而歸納出相對正確和有效的方法。在這一過程中,學生通過解決問題自行建構(gòu)知識體系,教師主要起指導、推動和提供必要信息的作用。
與歸納式教學法相比,在傳統(tǒng)教學中,教師居于教學的主導地位,通常先由教師講解原理、方法等,再讓學生掌握并運用這些原理和方法解決問題,這是一種演繹式教學法。在這一過程中,教師把原理和方法作為一種結(jié)論灌輸給學生,學生只是被動地接受,并不清楚這些原理和方法是如何得出來的,也不清楚為什么一定要使用這些方法而不能用其他方法,因此學生很難真正理解并掌握它們。
2.2歸納式教學法的重要意義
程序設計不僅是一門技術,更是一種思維方式。文獻[12]指出計算機基礎教學的核心任務是計算思維能力的培養(yǎng),而學習程序設計是計算思維能力培養(yǎng)的重要內(nèi)容。我們認為在程序設計課程中引入歸納式教學法,有助于學生更好地理解和掌握程序設計的基本思想,從而逐步建立起計算思維能力。這主要體現(xiàn)在以下幾個方面。
2.2.1培養(yǎng)學生的自主學習能力
歸納式教學法十分強調(diào)培養(yǎng)學生的自主學習精神和能力。當遇到問題時,學生應當有能力利用各種資源、采用各種方法積極地解決問題。而自主學習能力對于學好程序設計十分重要。學生只有具備了自主學習能力,才能不斷地更新知識和技術,使自己成為一個合格的應用型人才。
傳統(tǒng)的教學方法不強調(diào)這種能力的培養(yǎng),學生只要能利用課堂上的原理和方法去解決問題就夠了。但是對于程序設計,僅靠課堂上講授的知識往往不足以解決復雜的實際問題。因此,必須強調(diào)對學生自主學習能力的培養(yǎng)。歸納式教學法中的探究式學習、基于問題的學習、發(fā)現(xiàn)式學習等都提供了培養(yǎng)學生自主學習能力的有效方法。
2.2.2培養(yǎng)學生的創(chuàng)新精神
歸納式教學法十分注重培養(yǎng)學生的創(chuàng)新精神。針對同一個案例或問題,歸納式教學法不會給出統(tǒng)一的標準答案,而是鼓勵學生采用不同方法提出多種解決方案。這種方法非常適合程序設計教學。因為在程序設計中,針對某一問題往往沒有唯一的解決方案。學生應根據(jù)不同的環(huán)境背景,提出一種或幾種比較適合的方案。這就要求學生具備足夠的創(chuàng)新精神。
傳統(tǒng)教學中,僅靠教師在課堂上講解一個個知識點不利于培養(yǎng)學生的創(chuàng)新精神。而歸納式教學法中的很多方法,如基于案例/項目的學習等,有助于培養(yǎng)學生的創(chuàng)新精神。
2.2.3通過實踐提高學習效率
實踐對于學好程序設計意義重大。學生只有通過大量的實踐才能真正理解并掌握程序設計方法。歸納式教學法就十分強調(diào)學生的實踐。例如,歸納式教學法中的即時教學法要求學生先獨立回答一些問題,教師從中發(fā)現(xiàn)學生易犯的錯誤和存在的問題,然后有針對性地講解。將這種方法應用到程序設計教學中,可以使學生認識到自己易犯什么錯誤,并通過改正這些錯誤而進一步增強對所學知識的理解。
相比之下,在傳統(tǒng)教學法中,教師雖然對每個知識點都詳細講解,但學生們卻不容易真正掌握。例如,Java中的switch語句只接受幾種固定的數(shù)據(jù)類型,但僅靠學生死記硬背很難記住,相反,讓學生上機實踐一次,甚至錯過一次,學生自然就會記住了。類似現(xiàn)象在程序設計課程教學中很常見。
3.基于歸納式教學法的創(chuàng)新教學方法
歸納式教學法的總體原則適用于程序設計教學,但具體方法不宜照搬。我們在教學實踐中以歸納式教學法的基本思想為指導,在完善案例教學、加強學生實踐、改革考試方式等方面提出了若干創(chuàng)新教學方法。
3.1完善案例教學
傳統(tǒng)教學中,教師先講解知識點,后講解案例。學生在學習知識點時,缺少感性認識,往往不知所云,教學效果不好。我們依據(jù)歸納式教學法的原理,對案例教學做出了幾點改革。
一是將案例提前。每次上課首先提出一個案例,通過講解這個案例引出將要學習的知識點。這樣學生對新知識點會有一個感性認識,了解某一知識點在整個程序中的具體用途和用法,比較容易理解和吸收。二是提供完整的案例。每次講解案例時,不是僅截取一段程序演示,而是從某一具體的問題或需求出發(fā),討論如何解決這一問題,再在計算機上演示完整的程序,直至運行、輸出結(jié)果。這樣可以讓學生對編程的完整過程有所了解,有助于對程序的理解。三是開設案例討論課。每月開展一次,預先將案例交給學生分組準備,課堂上每組學生演示自己的程序,然后組織學生討論,最后教師點評。
3.2加強學生實踐
大量的實踐對于學好程序設計是至關重要的。教師反復講解,不如讓學生實踐一次。但是實踐不能僅考慮數(shù)量(例如編寫多少行代碼)。我們提出除了要保證代碼量外,還應做到以下幾點:
一是盡量提前實踐開始時間。學生開始上機實踐的時間越早越好。即使學生還沒有學習編程方法,也可以先熟悉一下編程環(huán)境,熟悉如何建立文件或試著寫幾行代碼等。二是保證實踐機會。我們應盡量讓學生在需要實踐的時候能夠?qū)嵺`。教師剛講解完知識點時立刻讓學生實踐,這時的效果最好。我們在課堂上總是留出一部分時間讓學生分組編寫程序,然后選出1-2組演示程序。教師根據(jù)演示情況隨時予以點評,并針對易犯的錯誤深入剖析。三是鼓勵學生每天做一點編程練習。理論上,學生都知道程序設計必須實踐,但實際上并不了解具體的實踐方法和步驟。我們提倡學生天天編程、日日練習,這對學生來說是可行的、具體的。在這一過程中,學生逐漸養(yǎng)成編程實踐的習慣,并體會到只有經(jīng)過日積月累的實踐,才能提高程序設計的能力。
3.3改進考試方式
在考試方式上,國內(nèi)教師較多地采用傳統(tǒng)的客觀題考試方式(如選擇題、填空題等),國外教師則嘗試采用小組考試。我們認為這兩種方式都不適合國內(nèi)的程序設計教學。在期末考試中,我們采用的仍是單獨考試,但僅考編程題和簡述題,不考客觀題。這種方式更符合程序設計課程的培養(yǎng)目標,即培養(yǎng)應用型的程序設計人才,強調(diào)編程能力,而不是死記硬背。學生學習都是以考試為導向的。如果我們考察的是編程能力,學生平時就會更積極地進行編程練習,而不會死記硬背概念和語法。
4.結(jié)語
歸納式教學法是與傳統(tǒng)的演繹式教學法完全不同的一種教學方法,它不是直接提供結(jié)論,而是先提出問題,讓學生通過解決問題自己歸納出相對正確的方法。歸納式教學法有助于培養(yǎng)學生的自主學習能力和創(chuàng)新精神,因此十分適合于程序設計教學。
我們依據(jù)歸納式教學法的基本原理,在完善案例教學、加強學生實踐、改進考試方式等方面提出了若干創(chuàng)新教學方法,取得了較好的教學效果。以Java程序設計相關課程為例,根據(jù)調(diào)查,77%的學生認為課堂上的程序?qū)嵗龑τ谒麄兝斫釰ava“很有幫助”或“有幫助”;85%的學生認為考查編程能力更能體現(xiàn)他們的學習水平。這說明我們的改革方向是正確的,符合學生的需要。
最后要說明的是,本文討論歸納式教學法在程序設計課程中的應用,但并非完全排除傳統(tǒng)的演繹式教學法,在實踐中應將二者有機結(jié)合。
(見習編輯:劉麗麗)