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