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