孫培鋒
摘 要:培養(yǎng)計(jì)算思維的本質(zhì)是培養(yǎng)問(wèn)題求解能力,而程序設(shè)計(jì)課程重點(diǎn)體現(xiàn)了計(jì)算機(jī)語(yǔ)言的問(wèn)題求解方法,兩者的主旨是吻合的。本文針對(duì)當(dāng)前程序設(shè)計(jì)課程教學(xué)中存在的問(wèn)題,分析產(chǎn)生這些問(wèn)題的主要原因,并提出了以培養(yǎng)學(xué)生計(jì)算思維為核心的程序設(shè)計(jì)課程新模式。
關(guān)鍵詞:計(jì)算思維;程序設(shè)計(jì);教學(xué)模式
一、前言
2006年,美國(guó)卡內(nèi)基·梅隆大學(xué)計(jì)算機(jī)系主任周以真教授在美國(guó)計(jì)算機(jī)權(quán)威雜志ACM上發(fā)表文章并定義了計(jì)算思維(Computation Thinking):計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問(wèn)題求解、系統(tǒng)設(shè)計(jì)以及人類行為理解等涵蓋計(jì)算機(jī)科學(xué)之廣度的一系列思維活動(dòng)。她指出,計(jì)算思維是每個(gè)人的基本技能,不僅僅屬于計(jì)算機(jī)科學(xué)家,在培養(yǎng)每個(gè)孩子的解析能力時(shí)不僅要讓他們掌握閱讀、寫(xiě)作和算術(shù)(Reading,wRiting,and aRithmetic,3R),還要學(xué)會(huì)計(jì)算思維[1]。
二、計(jì)算思維
計(jì)算思維能力培養(yǎng)是計(jì)算機(jī)學(xué)科教學(xué)的核心任務(wù),計(jì)算機(jī)學(xué)科專業(yè)能力培養(yǎng)的目標(biāo)是計(jì)算機(jī)的認(rèn)知能力和應(yīng)用計(jì)算機(jī)的問(wèn)題求解能力[2]。計(jì)算思維培養(yǎng)的本質(zhì)是培養(yǎng)問(wèn)題求解能力,而程序設(shè)計(jì)課程重點(diǎn)體現(xiàn)了計(jì)算機(jī)語(yǔ)言的問(wèn)題求解方法,這與計(jì)算思維能力培養(yǎng)的主要內(nèi)容相吻合。當(dāng)然一門(mén)課程并不能包含計(jì)算思維的所有內(nèi)容,需要一系列計(jì)算機(jī)基礎(chǔ)應(yīng)用課程協(xié)作完成計(jì)算思維能力的培養(yǎng)。而計(jì)算思維能力的培養(yǎng)為今后學(xué)生應(yīng)用計(jì)算機(jī)技術(shù)解決專業(yè)問(wèn)題奠定了堅(jiān)實(shí)的基礎(chǔ)。
我國(guó)2010年發(fā)布的《九校聯(lián)盟(C9)計(jì)算機(jī)基礎(chǔ)教學(xué)發(fā)展戰(zhàn)略聯(lián)合聲明》重點(diǎn)強(qiáng)調(diào):“必須正確認(rèn)識(shí)大學(xué)計(jì)算機(jī)基礎(chǔ)教學(xué)的重要地位,需要把培養(yǎng)學(xué)生的‘計(jì)算思維能力作為計(jì)算機(jī)基礎(chǔ)教學(xué)的核心任務(wù),并由此建設(shè)更加完備的計(jì)算機(jī)基礎(chǔ)課程體系和教學(xué)內(nèi)容,進(jìn)而為全國(guó)高校的計(jì)算機(jī)基礎(chǔ)教學(xué)改革樹(shù)立標(biāo)桿?!盵3]
作為計(jì)算機(jī)類專業(yè)基礎(chǔ)課,程序設(shè)計(jì)是將分析和解決問(wèn)題的思維活動(dòng)轉(zhuǎn)化成計(jì)算機(jī)程序的過(guò)程。學(xué)生在學(xué)習(xí)程序設(shè)計(jì)課程中,可以通過(guò)問(wèn)題分析、算法設(shè)計(jì)、程序?qū)崿F(xiàn)來(lái)體驗(yàn)問(wèn)題求解的思維訓(xùn)練過(guò)程。所以,學(xué)習(xí)程序設(shè)計(jì)課程的目的不應(yīng)是單純掌握某門(mén)程序設(shè)計(jì)語(yǔ)言的語(yǔ)法規(guī)范或單純學(xué)習(xí)一門(mén)程序設(shè)計(jì)語(yǔ)言,而是學(xué)習(xí)利用計(jì)算機(jī)分析和解決問(wèn)題的基本過(guò)程和思維方法[4]。
三、程序設(shè)計(jì)課程存在的問(wèn)題
現(xiàn)有的計(jì)算機(jī)程序設(shè)計(jì)課程教學(xué)存在著諸多問(wèn)題,包括如下幾方面。
(1)計(jì)算機(jī)類課程課時(shí)頻頻遭減,但為保證完成必要的教學(xué)內(nèi)容,會(huì)為了追求進(jìn)度而減少引導(dǎo)學(xué)生自行思考解決問(wèn)題的課時(shí),學(xué)生來(lái)不及理解與消化所學(xué)內(nèi)容。
(2)教師在課程講授的過(guò)程中過(guò)于重視程序語(yǔ)法細(xì)節(jié),而忽視了需求分析、功能劃分、編程思路以及算法設(shè)計(jì)等,導(dǎo)致學(xué)生在學(xué)習(xí)的過(guò)程中常處于一知半解的狀態(tài),從而在編程的過(guò)程中存在缺乏思路、條理不清、代碼使用不規(guī)范等問(wèn)題。
(3)隨著各種校外考試機(jī)構(gòu)主辦的證書(shū)考試在校園內(nèi)廣泛開(kāi)展,學(xué)生學(xué)習(xí)程序設(shè)計(jì)課程的目的正在發(fā)生變化,相當(dāng)多的學(xué)生只是為了一紙證書(shū)在學(xué)習(xí),一些學(xué)校也在為證書(shū)忙碌,能力最大化經(jīng)常被晾在一邊,正常的教學(xué)活動(dòng)與教學(xué)改革受到?jīng)_擊。
(3)“學(xué)不致用”的質(zhì)疑聲一直伴隨著程序設(shè)計(jì)課程。不同于傳統(tǒng)的公共基礎(chǔ)課程,程序設(shè)計(jì)課程具有鮮明的應(yīng)用性,而“學(xué)不致用”是一種致命的質(zhì)疑。筆者對(duì)計(jì)算機(jī)相關(guān)專業(yè)的200名畢業(yè)生進(jìn)行問(wèn)卷調(diào)查,結(jié)果如表1所示。
通過(guò)表1可以發(fā)現(xiàn),調(diào)查對(duì)象可以分為三大人群:Ⅰ類為有需求并使用的人;Ⅱ類為有需求但沒(méi)有能力使用的人;Ⅲ類為沒(méi)有需求的人。此外,調(diào)查過(guò)程中發(fā)現(xiàn):Ⅲ類人中一部分人認(rèn)同“學(xué)習(xí)編程沒(méi)有用處”的觀點(diǎn),即認(rèn)同“學(xué)不致用”,而另一部分人則認(rèn)同“并不是自己的工作不需要編程,而是自己的水平無(wú)法勝任編程從而選擇不需要編程的工作”的觀點(diǎn),這一部分人肯定程序設(shè)計(jì)課程的應(yīng)用性但未能實(shí)踐其應(yīng)用性,即“學(xué)不能用”;而Ⅰ類人中部分人則認(rèn)同“僅靠學(xué)校學(xué)到的編程知識(shí)是不能勝任工作需要的,要編出程序還需自己繼續(xù)學(xué)習(xí)、查閱許多資料”的說(shuō)法,這從反面也印證了“學(xué)不致用”現(xiàn)象的客觀存在。
四、程序設(shè)計(jì)課程改革的必要性
傳統(tǒng)的程序設(shè)計(jì)教學(xué)模式一般為:介紹該語(yǔ)言數(shù)據(jù)類型及運(yùn)算符、表達(dá)式,介紹其語(yǔ)法規(guī)則,講解例題,最后布置作業(yè)。這種教學(xué)模式以教師為中心,雖然能較好地保證知識(shí)的系統(tǒng)性,但因知識(shí)枯燥,在影響學(xué)生學(xué)習(xí)積極性的同時(shí),也束縛了學(xué)生思維的發(fā)展,學(xué)生實(shí)踐能力不足、綜合分析能力及創(chuàng)新能力薄弱,難以滿足當(dāng)今社會(huì)對(duì)人才培養(yǎng)的要求。
近年來(lái),教育部高等學(xué)校大學(xué)計(jì)算機(jī)課程教學(xué)指導(dǎo)委員會(huì)提出了大學(xué)計(jì)算機(jī)基礎(chǔ)課程教學(xué)基本要求,明確了以計(jì)算思維為導(dǎo)向的計(jì)算機(jī)基礎(chǔ)教學(xué)改革方向,目的是通過(guò)梳理核心知識(shí)體系,改革教學(xué)內(nèi)容和教學(xué)方法,將計(jì)算思維培養(yǎng)建立在知識(shí)理解和應(yīng)用能力培養(yǎng)基礎(chǔ)上[5],以提升學(xué)生的計(jì)算思維能力。計(jì)算思維能力的培養(yǎng)已經(jīng)成為高校計(jì)算機(jī)基礎(chǔ)教學(xué)改革的目標(biāo)。因此,急需將程序設(shè)計(jì)課程的編程基礎(chǔ)和計(jì)算思維的培養(yǎng)結(jié)合起來(lái),對(duì)程序設(shè)計(jì)課程進(jìn)行改革,以提高程序設(shè)計(jì)課程的教學(xué)質(zhì)量,培養(yǎng)學(xué)生的編程能力、計(jì)算思維能力及應(yīng)用創(chuàng)新能力。
五、程序設(shè)計(jì)課程教學(xué)方法改革
對(duì)大多數(shù)學(xué)生而言,學(xué)習(xí)程序設(shè)計(jì)的目的是學(xué)習(xí)計(jì)算機(jī)分析和解決問(wèn)題的基本過(guò)程和思路,而不是成為程序員。顯然,程序設(shè)計(jì)課程的內(nèi)容最能夠體現(xiàn)語(yǔ)言級(jí)的問(wèn)題求解方法,是計(jì)算思維能力培養(yǎng)的重要內(nèi)容。
改革的方向應(yīng)當(dāng)是幫助學(xué)生降低學(xué)習(xí)門(mén)檻,逐步展現(xiàn)計(jì)算思維方法和程序設(shè)計(jì)過(guò)程,從而幫助學(xué)生培養(yǎng)分析問(wèn)題與通過(guò)程序設(shè)計(jì)解決問(wèn)題的能力。具體做法如下。
(1)適當(dāng)?shù)Z(yǔ)法細(xì)節(jié),在“以程序抽象為主線”的思想指導(dǎo)下,適當(dāng)裁剪程序設(shè)計(jì)語(yǔ)言,去除較為復(fù)雜、較難理解、使用很少、不太規(guī)范的部分。事實(shí)上,在實(shí)際編程學(xué)習(xí)過(guò)程中,如果采用良好的編程風(fēng)格,學(xué)生只需要掌握最基本、最重要的語(yǔ)法機(jī)制和最常用、最不容易寫(xiě)錯(cuò)的編程范式(編程模式、習(xí)慣寫(xiě)法),就可以編寫(xiě)程序解決實(shí)際問(wèn)題了。這樣可以降低程序設(shè)計(jì)的學(xué)習(xí)門(mén)檻,讓學(xué)生能盡早開(kāi)始編程,從而以漸進(jìn)的方式在實(shí)際編程中學(xué)習(xí)程序設(shè)計(jì),通過(guò)逐步深入的方式慢慢掌握思考、設(shè)計(jì)、組織程序的方法和技術(shù),降低學(xué)生學(xué)習(xí)過(guò)程中的枯燥感和挫折感,提高學(xué)生解決問(wèn)題的愉悅感和成就感。endprint
(2)將教學(xué)重心放在計(jì)算思維能力和程序設(shè)計(jì)能力的培養(yǎng)上,將分解、抽象、自動(dòng)化、約簡(jiǎn)、轉(zhuǎn)化、遞歸、迭代、啟發(fā)式、折中等計(jì)算思維的主要特征融入程序設(shè)計(jì)教學(xué)過(guò)程中,如通過(guò)順序結(jié)構(gòu)把復(fù)雜工作分解為一系列較簡(jiǎn)單的工作;通過(guò)分支結(jié)構(gòu),把整體處理分解為對(duì)一些互不相交、更為簡(jiǎn)單的分支處理;通過(guò)循環(huán),把復(fù)雜問(wèn)題的處理分解為一系列類似處理;通過(guò)函數(shù)機(jī)制實(shí)現(xiàn)功能模塊的分解和抽象;采用抽象、分解來(lái)解決相對(duì)比較復(fù)雜的問(wèn)題,通過(guò)約簡(jiǎn)、轉(zhuǎn)化、遞歸、迭代來(lái)實(shí)現(xiàn)復(fù)雜問(wèn)題的分而治之等。
(3)開(kāi)發(fā)相對(duì)綜合的教學(xué)案例,如萬(wàn)年歷程序、ATM自動(dòng)取款機(jī)程序等,這些案例由部分到整體,由簡(jiǎn)單到復(fù)雜,貫穿整個(gè)課程,幫助學(xué)生體會(huì):如何從分析問(wèn)題開(kāi)始,通過(guò)分解、抽象、約簡(jiǎn)、迭代等計(jì)算思維方法,最終設(shè)計(jì)出一個(gè)問(wèn)題的計(jì)算過(guò)程;如何用程序設(shè)計(jì)語(yǔ)言將所設(shè)計(jì)的計(jì)算過(guò)程轉(zhuǎn)化成為一個(gè)程序;如何采用結(jié)構(gòu)化程序設(shè)計(jì)思想方法,設(shè)計(jì)出良好的結(jié)構(gòu),使其易于修改和擴(kuò)充;如何保證程序能合理妥當(dāng)?shù)靥幚聿徽_的輸入,提高程序的容錯(cuò)性;如何合理地組成程序,以方便將代碼作為更大程序的組成部分。
(4)引入基于問(wèn)題的互動(dòng)教學(xué)方法,精選反映計(jì)算思維思想的問(wèn)題案例或者相關(guān)知識(shí)模塊的引導(dǎo)性問(wèn)題,通過(guò)課堂互動(dòng)討論等方式,討論問(wèn)題的分析、分解和精確化,找出問(wèn)題解決的主要步驟,確定函數(shù)抽象,找出循環(huán)迭代、條件控制結(jié)構(gòu),最后實(shí)現(xiàn)程序。做完之后還應(yīng)該分析討論所設(shè)計(jì)程序的優(yōu)點(diǎn)和缺點(diǎn),考慮其他設(shè)計(jì)實(shí)現(xiàn)的可能性。
六、結(jié)語(yǔ)
計(jì)算思維包含的內(nèi)容不是一門(mén)課程所能承載的。計(jì)算和計(jì)算思維是計(jì)算機(jī)基礎(chǔ)課程的基本理論和基本思維,早期的計(jì)算機(jī)課程教學(xué)強(qiáng)調(diào)技能培養(yǎng)和能力培養(yǎng),計(jì)算思維的引入,將計(jì)算機(jī)課程對(duì)于大學(xué)生科學(xué)思維能力培養(yǎng)的重要性提升到了前所未有的高度。在大學(xué)計(jì)算機(jī)課程中有目的地引入計(jì)算思維,并且加以適當(dāng)訓(xùn)練,有利于提高學(xué)生對(duì)于計(jì)算機(jī)科學(xué)的理解和認(rèn)識(shí),有利于訓(xùn)練科學(xué)思維的素質(zhì)和能力。
程序設(shè)計(jì)課程是高校計(jì)算機(jī)教育的重要基礎(chǔ)課程。通過(guò)基于計(jì)算思維的程序設(shè)計(jì)公共基礎(chǔ)課程改革,可以使學(xué)生在掌握程序語(yǔ)言語(yǔ)法規(guī)則的基礎(chǔ)上,培養(yǎng)學(xué)生的計(jì)算思維能力和創(chuàng)新能力,從而進(jìn)一步提高計(jì)算機(jī)程序設(shè)計(jì)公共基礎(chǔ)課程的教學(xué)質(zhì)量。
參考文獻(xiàn):
[1]Wing J M. Computational thinking[M]. ACM, 2006.
[2]王榮良.計(jì)算思維教育[M].北京:上??萍冀逃霭嫔?,2014.
[3]何欽銘,陸漢權(quán),馮博琴.計(jì)算機(jī)基礎(chǔ)教學(xué)的核心任務(wù)是計(jì)算思維能力的培養(yǎng)[J].中國(guó)大學(xué)教學(xué),2010(9).
[4]牟琴,譚良.計(jì)算思維的研究及其進(jìn)展[J].計(jì)算機(jī)科學(xué),2011(3).
[5]教育部高等學(xué)校大學(xué)計(jì)算機(jī)課程教學(xué)指導(dǎo)委員會(huì).大學(xué)計(jì)算機(jī)基礎(chǔ)課程教學(xué)基本要求[M].北京:高等教育出版社,2016.endprint