摘要:通過(guò)訪談北京地區(qū)17所高校的60名程序設(shè)計(jì)課程初學(xué)者,了解他們學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言產(chǎn)生困難的原因以及他們的學(xué)習(xí)方式和看法。從學(xué)生的角度對(duì)大作業(yè)教學(xué)形式進(jìn)行益處分析,并指出面臨的挑戰(zhàn)。
關(guān)鍵詞:大作業(yè);程序設(shè)計(jì)課程;語(yǔ)言學(xué)習(xí);調(diào)研
1.初學(xué)者學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言產(chǎn)生困難的原因
1.1單一化的課程設(shè)置
受到教學(xué)資源和教學(xué)能力的影響,目前國(guó)內(nèi)大學(xué)的程序設(shè)計(jì)課程除了某些特殊專(zhuān)業(yè)的課程需要一些特殊語(yǔ)言(如浙江大學(xué)生物醫(yī)學(xué)工程系要求采用Mcs51單片機(jī)匯編語(yǔ)言)之外,大多數(shù)采用C/C++、Java、VB、C#等語(yǔ)言。對(duì)于初學(xué)者而言,較多院系選擇讓學(xué)生學(xué)習(xí)C/C++,但是學(xué)生常常會(huì)在后續(xù)其他課程的學(xué)習(xí)中發(fā)現(xiàn)所學(xué)語(yǔ)言并不是需要使用的語(yǔ)言。例如,學(xué)生在清華大學(xué)水利系課程的學(xué)習(xí)中,有時(shí)會(huì)使用到Matlab、VB、Fortran乃至Lisp等語(yǔ)言。
這就對(duì)學(xué)生如何理解編程思想和設(shè)計(jì)程序提出挑戰(zhàn),但現(xiàn)狀往往是學(xué)生學(xué)完了C/C++語(yǔ)言課程,認(rèn)為掌握得也不錯(cuò),卻對(duì)別的語(yǔ)言望而生畏。究其原因有以下幾點(diǎn):①學(xué)生只學(xué)過(guò)c語(yǔ)言,于是只會(huì)用C語(yǔ)言編程;②害怕學(xué)習(xí)其他語(yǔ)言會(huì)像C語(yǔ)言一樣枯燥且花費(fèi)時(shí)間;③盡量繞開(kāi)需要使用語(yǔ)言的地方。最終的結(jié)果是學(xué)生越來(lái)越不敢應(yīng)用自己曾經(jīng)學(xué)習(xí)的編程技能,導(dǎo)致程序設(shè)計(jì)能力下降。
1.2眾多基礎(chǔ)技能和知識(shí)需要學(xué)習(xí)
對(duì)于初學(xué)者而言,程序設(shè)計(jì)這門(mén)課的學(xué)習(xí)任務(wù)往往比較重,有各種作業(yè)和實(shí)驗(yàn)課。但不可忽視的是,要想學(xué)好程序設(shè)計(jì)并能夠自主編寫(xiě)程序,就必須具備一些其他學(xué)科的基礎(chǔ)知識(shí),如線性代數(shù)、離散數(shù)學(xué)、算法設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)等,而主要矛盾就在于上述課程或者沒(méi)有開(kāi)設(shè),或者比較難。因此,這門(mén)本來(lái)就比較難學(xué)的課程容易給初學(xué)者造成一個(gè)暗示,即“應(yīng)該先把上述課程學(xué)好再來(lái)學(xué)編程”,這種現(xiàn)象從信心上打擊了初學(xué)者。
1.3緊湊的課程設(shè)計(jì)和短時(shí)間內(nèi)轉(zhuǎn)化思維
程序設(shè)計(jì)語(yǔ)言的內(nèi)容相對(duì)較多,受學(xué)期學(xué)時(shí)的限制必然被安排得比較緊湊。對(duì)于初學(xué)者而言,比較難的正是前面幾節(jié)課,因?yàn)榫退闶且粋€(gè)最簡(jiǎn)單的“Hello World!”程序,教師都需要對(duì)其中所包含的很多內(nèi)容進(jìn)行解釋?zhuān)袝r(shí)還會(huì)涉及后面章節(jié)的內(nèi)容(如#include指令和cout命令就涉及頭文件、編譯、運(yùn)算符等內(nèi)容)。因此,學(xué)生在前面幾節(jié)課中對(duì)于很多內(nèi)容需要先記下來(lái)如何使用,然后在后續(xù)的課程學(xué)習(xí)中再掌握原理,而這會(huì)不停地增加初學(xué)者的疑惑,直至最終使初學(xué)者認(rèn)為程序設(shè)計(jì)是一門(mén)不適合自己的課程。
編程重在思維的轉(zhuǎn)化,而這對(duì)于初學(xué)者來(lái)說(shuō)往往是最難的。無(wú)論是面向過(guò)程還是面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,對(duì)初學(xué)者而言都是一種新鮮的思維方式,而不僅僅是一套知識(shí)體系。以前受固定思維模式影響比較嚴(yán)重的初學(xué)者往往難以在短時(shí)間內(nèi)轉(zhuǎn)換思維,跟上緊湊的課程設(shè)計(jì),這導(dǎo)致的最終結(jié)果是初學(xué)者既沒(méi)有學(xué)好程序設(shè)計(jì),又被打擊了學(xué)習(xí)信心和積極性。
2.大作業(yè)及其益處分析
2.1大作業(yè)概述
大作業(yè)不同于一般的編程練習(xí)題,從量和復(fù)雜度上來(lái)說(shuō)都有相當(dāng)大的區(qū)別。大作業(yè)是一個(gè)較為完整的程序開(kāi)發(fā)過(guò)程,具體來(lái)說(shuō)就是要求學(xué)生編程解決一個(gè)有一定難度的問(wèn)題,綜合利用所學(xué)課程的基本內(nèi)容、基本理論和知識(shí)結(jié)構(gòu)對(duì)難點(diǎn)問(wèn)題進(jìn)行分析的作業(yè)形式。
2.2原始調(diào)研數(shù)據(jù)羅列
筆者通過(guò)對(duì)北京地區(qū)17所高校的60名程序設(shè)計(jì)課程初學(xué)者進(jìn)行訪談(調(diào)查問(wèn)卷及結(jié)果如表1所示),了解他們學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言產(chǎn)生困難的原因以及他們的學(xué)習(xí)方式和看法
2.3數(shù)據(jù)處理和益處分析
綜合被調(diào)研者的口述內(nèi)容和調(diào)研數(shù)據(jù),大作業(yè)有以下幾個(gè)優(yōu)點(diǎn):訓(xùn)練方面廣、靈活性較強(qiáng)、連貫性強(qiáng)。
1)訓(xùn)練方面廣。是否進(jìn)行大作業(yè)設(shè)計(jì)的初學(xué)者平均代碼編寫(xiě)行數(shù)如圖1所示。從數(shù)據(jù)上來(lái)看,進(jìn)行大作業(yè)的初學(xué)者為44人,占總調(diào)研人數(shù)的73.3%;進(jìn)行大作業(yè)設(shè)計(jì)的初學(xué)者平均代碼編寫(xiě)行數(shù)是不進(jìn)行大作業(yè)設(shè)計(jì)的初學(xué)者平均代碼編寫(xiě)行數(shù)的5倍,其中有11名初學(xué)者編寫(xiě)的程序多于1000行??梢钥闯觯帉?xiě)大程序可以保證初學(xué)者盡量多地使用語(yǔ)言。
2)靈活性較強(qiáng)。主要表現(xiàn)在不同大學(xué)不同課程的大作業(yè)具體內(nèi)容的實(shí)行上,包括2個(gè)方面。首先,從設(shè)計(jì)命題(有的學(xué)校不要求)到開(kāi)題,再到算法討論和實(shí)現(xiàn)以及最后的程序提交和總結(jié)過(guò)程,導(dǎo)師都可以針對(duì)不同的要求和課程難度設(shè)置,靈活地安排大作業(yè)難度。在調(diào)研中,也有初學(xué)者表示他們可以按照自己的水平,靈活地選擇目標(biāo)和方向以及需要自己完成的項(xiàng)目。其次,導(dǎo)師的考查形式具有靈活性,對(duì)于開(kāi)放性問(wèn)題,導(dǎo)師可以設(shè)置面試答辯方式,也可以使用提交報(bào)告和運(yùn)行展示的方式??疾闀r(shí)間可以設(shè)置在項(xiàng)目進(jìn)程的關(guān)鍵時(shí)期,此期間可以由初學(xué)者進(jìn)行一些匯報(bào)展示等。
3)連貫性強(qiáng)。主要表現(xiàn)在初學(xué)者的表述上。有的學(xué)校會(huì)為大作業(yè)設(shè)置一些必須使用的關(guān)鍵技術(shù)(如文件讀取、多態(tài)、繼承等)。比較優(yōu)秀的大作業(yè)程序設(shè)計(jì)重點(diǎn)應(yīng)該放在核心思路的討論和核心算法的優(yōu)選上。程序設(shè)計(jì)往往貫穿整個(gè)學(xué)期,有的學(xué)校還專(zhuān)門(mén)設(shè)計(jì)一套時(shí)間表,精確到每個(gè)具體日期,要求初學(xué)者在某個(gè)日期提交程序設(shè)計(jì)的具體內(nèi)容。從程序設(shè)計(jì)安排上看,大多數(shù)學(xué)校主要以培養(yǎng)編程習(xí)慣和熟練度作為編程核心,有條件的會(huì)更加重視思維的培養(yǎng)和小組團(tuán)隊(duì)合作共同開(kāi)發(fā)的能力訓(xùn)練。大作業(yè)可以比較容易地將教學(xué)、自學(xué)、互學(xué)聯(lián)系在一起,將整個(gè)學(xué)期的課程串起來(lái)。
對(duì)于初學(xué)者而言,面對(duì)程序設(shè)計(jì)有兩道坎。第一是掌握語(yǔ)言本身,即能夠順利地使用本門(mén)課程的語(yǔ)言達(dá)到自己想要的目標(biāo)。第二是掌握程序設(shè)計(jì)思想,即掌握結(jié)構(gòu)化程序設(shè)計(jì)的精髓,以便在后續(xù)的應(yīng)用中舉一反三。初學(xué)者通過(guò)一般的小作業(yè)能夠鞏固基本的程序設(shè)計(jì)語(yǔ)言知識(shí),相對(duì)而言,通過(guò)大作業(yè)則能夠?qū)⒊绦蛘Z(yǔ)言的學(xué)習(xí)內(nèi)容貫穿起來(lái),訓(xùn)練整體思維的同時(shí)還能夠加強(qiáng)程序使用的熟練度,提高小組合作能力和自主解決問(wèn)題的能力,在量和質(zhì)上達(dá)到飛躍。最關(guān)鍵的是,由于大作業(yè)課堂上的知識(shí)很難滿足需求,使得初學(xué)者在實(shí)踐過(guò)程中自主學(xué)習(xí)新的技術(shù)和算法,提高了自學(xué)程序設(shè)計(jì)語(yǔ)言和舉一反三的能力,為后續(xù)程序設(shè)計(jì)思想的培養(yǎng)奠定基礎(chǔ)。
3.面臨的挑戰(zhàn)
總的來(lái)看,90%以上的學(xué)生認(rèn)為大作業(yè)對(duì)編程訓(xùn)練有效果,其中有半數(shù)以上認(rèn)為這個(gè)作業(yè)很值得做。然而,筆者綜合60名受訪者陳述的觀點(diǎn)發(fā)現(xiàn),相當(dāng)多的學(xué)生仍然無(wú)法達(dá)到培養(yǎng)編程思想并在后續(xù)學(xué)習(xí)中運(yùn)用該編程思想的目標(biāo),仍然為后續(xù)語(yǔ)言需求不對(duì)等的問(wèn)題感到迷茫。究其原因主要包括以下幾個(gè)方面:①題目由老師布置;②幾乎沒(méi)有小組合作;③繁重的課業(yè)導(dǎo)致學(xué)生無(wú)法專(zhuān)心投入;④沒(méi)有改進(jìn)程序的意識(shí),認(rèn)為能夠編出程序即可;⑤考查形式對(duì)于學(xué)生沒(méi)有壓力。
中國(guó)的“傳授一接受”教學(xué)模式會(huì)使學(xué)生減少自主學(xué)習(xí)活動(dòng),逐漸產(chǎn)生依賴(lài)教師的習(xí)慣,降低自主學(xué)習(xí)能力。對(duì)于教師的依賴(lài)使得學(xué)生不愿意自主設(shè)計(jì)命題,即使設(shè)計(jì)出命題,該命題也存在各種缺陷。少見(jiàn)的小組合作模式是難點(diǎn),學(xué)生沒(méi)有小組合作的習(xí)慣,其實(shí)小組合作的模式不僅能培養(yǎng)學(xué)生合作討論并解決問(wèn)題的能力,而且可以起到讓學(xué)生相互監(jiān)督和督促的作用。學(xué)生對(duì)于課業(yè)壓力與學(xué)習(xí)精力的平衡較難把握,除了面對(duì)繁重的學(xué)習(xí)壓力還要完成大作業(yè),算法的設(shè)計(jì)和優(yōu)化也是需要面對(duì)的難題,需要學(xué)生投入較大精力。學(xué)生動(dòng)手能力的提高過(guò)程中需要解決2大問(wèn)題:①程序設(shè)計(jì)能力;②程序調(diào)試能力。這2個(gè)問(wèn)題相輔相成,都是一個(gè)逐步實(shí)踐和提高的過(guò)程,怎么從中找到一個(gè)平衡也是教師亟待思考的問(wèn)題。
4.結(jié)語(yǔ)
學(xué)生對(duì)于程序設(shè)計(jì)語(yǔ)言的學(xué)習(xí)有語(yǔ)言設(shè)計(jì)不對(duì)口、牽連知識(shí)多、思維轉(zhuǎn)化難等困難。綜合整個(gè)調(diào)研,筆者發(fā)現(xiàn)被廣泛采用的大作業(yè)教學(xué)模式有相當(dāng)突出的優(yōu)點(diǎn),應(yīng)用形式也多種多樣,是很有意義也很值得推廣的一種作業(yè)形式。很多學(xué)生無(wú)法達(dá)到培養(yǎng)程序設(shè)計(jì)思維能力的目標(biāo),而這正是教師通過(guò)一門(mén)程序課程教學(xué)所要達(dá)到的目標(biāo),因此在大作業(yè)的完成過(guò)程中,教師應(yīng)該更加關(guān)注這方面內(nèi)容和技能的培養(yǎng)。
該調(diào)研有幾個(gè)明顯缺陷:①樣本容量不夠大,調(diào)查區(qū)域不夠廣,主要涉及北京地區(qū)大學(xué)本科教學(xué)的一小個(gè)方面;②調(diào)研采訪的方式較為固定,應(yīng)結(jié)合多種方法進(jìn)行綜合調(diào)研;③調(diào)研對(duì)象僅涉及學(xué)生,應(yīng)該擴(kuò)展到廣泛的教學(xué)工作者。
致謝
該論文得到清華大學(xué)鄭莉教授以及參與調(diào)研工作的包括清華大學(xué)、北京大學(xué)、北京林業(yè)大學(xué)等17所大學(xué)的60名受訪者的支持,在此表示誠(chéng)摯感謝。
(編輯:宋文婷)