在素質(zhì)教育背景下,以頒布《普通高中技術(shù)課程標(biāo)準(zhǔn)(實(shí)驗(yàn))》(以下簡稱“新課標(biāo)”)為標(biāo)志,我國信息技術(shù)教育實(shí)現(xiàn)了由計(jì)算機(jī)教育到信息技術(shù)教育的根本性轉(zhuǎn)變。作為計(jì)算機(jī)教育主要內(nèi)容達(dá)十六年之久的“程序設(shè)計(jì)”,變成了新課標(biāo)中的“算法與程序設(shè)計(jì)”選修模塊(以下簡稱“編程模塊”)。有關(guān)教學(xué)目標(biāo)變成了課程目標(biāo),并規(guī)定為:“旨在使學(xué)生進(jìn)一步體驗(yàn)算法思想,了解算法和程序設(shè)計(jì)在解決問題過程中的地位和作用;能從簡單問題出發(fā),設(shè)計(jì)解決問題的算法,并能初步使用一種程序設(shè)計(jì)語言編制程序,實(shí)現(xiàn)算法解決問題”。該目標(biāo)較原程序設(shè)計(jì)的教學(xué)目標(biāo)已經(jīng)發(fā)生了革命性的變化。這種歷史的淵源對“算法與程序設(shè)計(jì)”模塊的課程目標(biāo)(以下簡稱“課程目標(biāo)”)在教學(xué)實(shí)踐中的接受和理解產(chǎn)生了嚴(yán)重的負(fù)面影響。為了解疑釋惑,啟發(fā)對課程目標(biāo)的深入思考,促使我國信息技術(shù)教育的改革走向深入,本文認(rèn)為有必要對教學(xué)實(shí)踐中片面理解課程目標(biāo)的問題以及由此帶來的教學(xué)困惑進(jìn)行全面的剖析,從不同的角度對該課程目標(biāo)進(jìn)行全方位的詮釋。
曲解課程目標(biāo)的事實(shí)及由此產(chǎn)生的教學(xué)困惑
所謂課程目標(biāo)是某一課程學(xué)習(xí)完以后,學(xué)習(xí)者在情感與態(tài)度、過程與方法、知識與技能等方面發(fā)生的變化,是培養(yǎng)目標(biāo)在特定課程中具體化、操作化的表述。與廣大一線教師習(xí)慣了的教學(xué)目標(biāo)相比,課程目標(biāo)要求全面體現(xiàn)素質(zhì)教育的精神,從知識目標(biāo)的一維表述,發(fā)展成為“知識與技能”、“過程與方法”、“情感態(tài)度與價(jià)值觀”的三維呈現(xiàn)。這種三維目標(biāo)的大革命使得從一維目標(biāo)的傳統(tǒng)中走來的廣大教師,對新課標(biāo)中編程模塊課程目標(biāo)的理解和把握存在諸多困難,出現(xiàn)了不少問題,引出了許多困惑,概括起來有以下幾種情況。
1.編程能力說
把編程模塊理解成培養(yǎng)程序員的基礎(chǔ)課,著重強(qiáng)調(diào)編程能力的培養(yǎng)。在長達(dá)十六年的教學(xué)過程中,我國信息技術(shù)課就是程序設(shè)計(jì),就是學(xué)習(xí)BASIC語言。其課程目標(biāo)(教學(xué)目標(biāo))是訓(xùn)練和培養(yǎng)學(xué)生使用計(jì)算機(jī)語言進(jìn)行程序設(shè)計(jì)的能力。從這一傳統(tǒng)中走來的廣大教師很容易有意無意地繼續(xù)把培養(yǎng)編程能力當(dāng)成新課標(biāo)中信息技術(shù)課程目標(biāo)的全部。這種課程目標(biāo)在教學(xué)實(shí)踐中帶來許多困惑。有人質(zhì)疑:“有必要為了1%的程序員,讓99%的人陪著學(xué)習(xí)他們終生不用的課程嗎?”還有人困惑:“現(xiàn)在的應(yīng)用軟件層出不窮,有必要人人都自己編寫程序么?”在教學(xué)實(shí)踐中,編程能力說表現(xiàn)為講不完的編程技巧、說不盡的軟件產(chǎn)業(yè)……其結(jié)果是強(qiáng)化了學(xué)生對程序設(shè)計(jì)的神秘感、恐懼感,使學(xué)生們感到程序設(shè)計(jì)遙不可及、高不可攀。這導(dǎo)致編程模塊在教學(xué)實(shí)踐中教師難教、學(xué)生難學(xué)、學(xué)生厭學(xué)、學(xué)難致用。有些教師甚至用“騎虎難下”、“味如嚼蠟”等詞匯來形容編程模塊的教學(xué)。
2.編程工具說
對課程目標(biāo)的理解偏執(zhí)于讓學(xué)生掌握一種編程工具,強(qiáng)調(diào)編程語言的教學(xué)。受1997年的《中小學(xué)計(jì)算機(jī)課程指導(dǎo)綱要(修訂稿)》明顯帶有“計(jì)算機(jī)工具論”傾向的影響,許多人把“程序設(shè)計(jì)的課程目標(biāo)主要是讓學(xué)生了解計(jì)算機(jī),學(xué)會使用計(jì)算機(jī)解決問題”理解成:為了能夠使用計(jì)算機(jī)這個(gè)工具而掌握計(jì)算機(jī)的編程工具。這種課程目標(biāo)的理解雖然看起來近于荒唐,但卻較為廣泛,影響很深。以致在計(jì)算機(jī)語言的選擇上,盲目攀高、求新的現(xiàn)象比較普遍。受其影響,許多教師面對編程模塊的三十幾個(gè)課時(shí)不知所措,不知是應(yīng)該讓學(xué)生熟悉界面和工具,還是應(yīng)該讓學(xué)生學(xué)習(xí)語句和函數(shù)。在編程語言的選擇上更是無所適從:選擇簡單的VB怕學(xué)生的開發(fā)能力弱,選擇JAVA、C++又怕課時(shí)不夠,更怕學(xué)生聽不懂。無怪乎有人講:教了十幾年的程序設(shè)計(jì),面對新課標(biāo)的編程模塊,突然不會上課了……
3.解決實(shí)際問題說
對課程目標(biāo)的理解偏執(zhí)于解決實(shí)際問題。為了達(dá)到這個(gè)目標(biāo),把新課標(biāo)中的“簡單問題”演變成了“學(xué)生生活中的實(shí)際問題”。而系統(tǒng)地解決這些問題往往超出中學(xué)生知識結(jié)構(gòu)和心智模式的限制,算法成為課堂教學(xué)中難以逾越的障礙,絕大多數(shù)學(xué)生聽不懂。筆者專門與許多一線教師談及編程模塊的教學(xué),大家一致反映:“現(xiàn)在的學(xué)生能力差,很‘簡單’的問題無論你怎么講他就是不明白。”我們應(yīng)該反過來思考這個(gè)問題:學(xué)生“都”聽不明白的問題,還是簡單問題嗎?像這樣把基礎(chǔ)教育的算法與程序設(shè)計(jì)當(dāng)成高校軟件工程課來講的課,中學(xué)生只能聽天書了,其結(jié)果只能使學(xué)生喪失對編程模塊的學(xué)習(xí)興趣,使編程模塊成為信息技術(shù)課程的“老大難”。
多方位詮釋“課程目標(biāo)”
編程模塊的課程目標(biāo)不在于培養(yǎng)和發(fā)展學(xué)生的編程能力,而是“使學(xué)生進(jìn)一步去體驗(yàn)算法思想,了解算法和程序設(shè)計(jì)在解決問題過程中的地位和作用”,最終目標(biāo)是提高學(xué)生的信息素養(yǎng)。
編程模塊的課程目標(biāo)也不在于使學(xué)生通過編程去解決學(xué)習(xí)和生活中所遇到的實(shí)際問題,而是要求學(xué)生“能從簡單問題出發(fā),設(shè)計(jì)解決問題的算法”。這里的所謂“簡單問題”就是中學(xué)生容易理解,或由教師稍加講解就能全面理解的問題,只有這樣,學(xué)生才有能力、時(shí)間和精力去“設(shè)計(jì)解決問題的算法”,并以此為手段,實(shí)現(xiàn)讓學(xué)生“去體驗(yàn)算法思想,了解算法在解決問題過程中的地位和作用”的目的。
編程模塊的課程目標(biāo)更不在于掌握一種編程工具,而是要求學(xué)生“能初步使用一種程序設(shè)計(jì)語言編制程序,實(shí)現(xiàn)算法解決問題”。這里“初步使用一種程序設(shè)計(jì)語言編制程序”實(shí)現(xiàn)的“算法”是解決“簡單”問題的“簡單”算法。所以,新課標(biāo)要求的“初步使用”與人們普遍追求的“基本掌握”相去甚遠(yuǎn)。而且“實(shí)現(xiàn)算法解決問題”的目的是為了讓學(xué)生“了解程序設(shè)計(jì)在解決問題過程中的地位和作用”。
編程語言的教學(xué)是實(shí)現(xiàn)課程目標(biāo)的手段而不是課程目標(biāo)本身。正如南京師范大學(xué)的李藝教授所說:“在基礎(chǔ)教育階段,‘程序設(shè)計(jì)’課程的關(guān)鍵是要幫助學(xué)生建立合理的算法與程序設(shè)計(jì)的認(rèn)知結(jié)構(gòu),而不在于要求學(xué)生掌握多少語法知識與編程技巧,進(jìn)一步的目標(biāo)在于提升學(xué)生的信息素養(yǎng),為其終身發(fā)展奠定良好的基礎(chǔ)。”
筆者認(rèn)為要想深刻領(lǐng)會專家的詮釋和更加準(zhǔn)確地把握算法與程序設(shè)計(jì)課程目標(biāo)的真正內(nèi)涵,促進(jìn)算法與程序設(shè)計(jì)模塊的教學(xué)改革,應(yīng)該從以下幾個(gè)方面來思考。
1.算法與程序設(shè)計(jì)的教學(xué)是準(zhǔn)備性教學(xué)
基礎(chǔ)教育具有發(fā)展性和未完成性。這就是說基礎(chǔ)教育的教學(xué)是準(zhǔn)備性教學(xué),它的價(jià)值取向是受教育者的準(zhǔn)備性學(xué)習(xí)所約束的。無論基礎(chǔ)教育教學(xué)的準(zhǔn)備性是導(dǎo)向繼續(xù)深造學(xué)習(xí),還是導(dǎo)向生活與社會實(shí)踐,無論以何種具體的價(jià)值取向、何種規(guī)定的教學(xué)內(nèi)容、何種模式與方法來實(shí)施,都不應(yīng)當(dāng)具有嚴(yán)格意義上的終結(jié)性。所以理解該課程目標(biāo)必須充分注意該課程教學(xué)的準(zhǔn)備性和非終結(jié)性。即該課程不是讓學(xué)生掌握一種開發(fā)工具,也不是通過具有或接近實(shí)用意義的項(xiàng)目的開發(fā)執(zhí)意去培養(yǎng)學(xué)生的編程能力,而是讓學(xué)生通過“簡單的問題”、“簡單問題的簡單算法”、“簡單算法的簡單程序”這樣一個(gè)“簡單”的活動鏈條“讓學(xué)生從中體驗(yàn)算法思想,了解算法和程序設(shè)計(jì)在解決問題過程中的地位和作用”。
2.編程模塊的技術(shù)基礎(chǔ)性
在新課標(biāo)中編程模塊是作為計(jì)算機(jī)應(yīng)用的技術(shù)基礎(chǔ)設(shè)置的一個(gè)選修模塊。這個(gè)“技術(shù)基礎(chǔ)”包含兩方面的含義:一方面是指編程模塊使學(xué)生掌握程序設(shè)計(jì)的基礎(chǔ)知識和基本技能,這是對傳統(tǒng)教學(xué)目標(biāo)的繼承。與過去程序設(shè)計(jì)的“工具性教學(xué)”相比,淡化了語言與技巧,更注重過程與方法。另一方面是指編程模塊對信息技術(shù)課程體系中其他模塊的技術(shù)支持性。使學(xué)生通過編程、調(diào)試、編譯、安裝、運(yùn)行的整體實(shí)踐來領(lǐng)會存儲程序式計(jì)算機(jī)的工作原理;理解計(jì)算機(jī)系統(tǒng)各組成部分的功能和相互關(guān)系。如果說計(jì)算機(jī)是作為一個(gè)智能型的工具而存在的,那么,操作、使用計(jì)算機(jī)的過程就是一個(gè)人機(jī)交流的過程,“理解”是使用計(jì)算機(jī)的技術(shù)基礎(chǔ)。另外編程模塊還通過常量、變量、函數(shù)、代碼等內(nèi)容直接支持或支撐其他模塊,這也是算法與程序設(shè)計(jì)課程技術(shù)基礎(chǔ)性的又一價(jià)值取向。
3.編程模塊滲透的素質(zhì)教育
素質(zhì)教育的中心是德育,即素質(zhì)教育是教人做人的教育。所以,素質(zhì)教育要求教師既教書又育人。當(dāng)然,教編程模塊的教師也不能例外。所以編程模塊的課程目標(biāo)不單純是教書的目標(biāo),也應(yīng)該包含育人的目標(biāo)。只有這樣才能使育人的目標(biāo)通過有目的、有措施、講方法的行為,落實(shí)在課堂上。而不是像過去那樣,把育人當(dāng)成教師的即興發(fā)揮,或臨場贈送。同時(shí),素質(zhì)教育也是沒有顯性課程的教育。素質(zhì)教育的目標(biāo)只能整合到每一門具體的課程目標(biāo)中。所以,編程模塊的課程目標(biāo)也必然要蘊(yùn)含素質(zhì)的目標(biāo)成分和教育職責(zé)。
筆者倡導(dǎo)站在基礎(chǔ)教育的立場,以素質(zhì)教育的高度,在深刻反思傳統(tǒng)程序設(shè)計(jì)教學(xué)的基礎(chǔ)上,分析、研究算法與程序設(shè)計(jì)的課程目標(biāo)。在正確理解和全面把握的基礎(chǔ)上,澄清問題、指導(dǎo)教學(xué)。為推進(jìn)算法與程序設(shè)計(jì)的課程改革而努力。