滕劍鋒 王玉鋒 王 猛 劉二林
(濟(jì)寧醫(yī)學(xué)院醫(yī)學(xué)信息工程學(xué)院,山東日照276826)
隨著計(jì)算機(jī)應(yīng)用范圍的不斷擴(kuò)展,程序設(shè)計(jì)類課程不僅是計(jì)算機(jī)相關(guān)專業(yè)的必修課程,也是廣大非計(jì)算機(jī)專業(yè)的基礎(chǔ)課程。以醫(yī)學(xué)專業(yè)為例,教育部在2011年下文,明確了包括程序設(shè)計(jì)基礎(chǔ)在內(nèi)的多門課程作為必修的計(jì)算機(jī)基礎(chǔ)課程。2010年7月,在西安舉行的首屆“九校聯(lián)盟(C9)計(jì)算機(jī)基礎(chǔ)課程研討會(huì)”旗幟鮮明地把“計(jì)算思維能力的培養(yǎng)”作為計(jì)算機(jī)基礎(chǔ)教學(xué)的核心任務(wù)[1]。
國(guó)際上廣泛認(rèn)同的計(jì)算思維定義來(lái)自卡內(nèi)基·梅隆大學(xué)周以真(Jeannette Wing)教授。周教授認(rèn)為,計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問(wèn)題求解、系統(tǒng)設(shè)計(jì),以及人類行為理解的涵蓋計(jì)算機(jī)科學(xué)之廣度的一系列思維活動(dòng)[2]。計(jì)算思維的理念古已有之,只是2006年周教授首次把該概念清晰歸納。計(jì)算思維的本質(zhì)是抽象和自動(dòng)化。其與“理論思維”(以數(shù)學(xué)為代表)、“實(shí)驗(yàn)思維”(以物理學(xué)為代表)一起,并稱3大科學(xué)思維[3]。
1972年圖靈獎(jiǎng)得主Edsger Dijkstra曾說(shuō):“我們所使用的工具影響著我們的思維方式和思維習(xí)慣,從而也將深刻地影響著我們的思維能力?!笨梢姡季S是通過(guò)工具來(lái)體現(xiàn)和影響的。計(jì)算思維的培養(yǎng)不是孤立進(jìn)行的,不是依靠另外開專門課程講授的,而是在學(xué)習(xí)和應(yīng)用計(jì)算機(jī)的過(guò)程中培養(yǎng)的[3]。學(xué)習(xí)程序設(shè)計(jì)類課程是培養(yǎng)“計(jì)算思維”的有效途徑之一。
長(zhǎng)久以來(lái),程序設(shè)計(jì)類課程教學(xué)中往往忽視對(duì)計(jì)算思維的培養(yǎng),偏重對(duì)編程語(yǔ)言語(yǔ)法細(xì)節(jié)的講授,將程序設(shè)計(jì)課簡(jiǎn)單的等同為“編程”課,導(dǎo)致諸如“Hello World”難度的例子貫穿授課過(guò)程的始終[4]。其僅僅為演示語(yǔ)言的細(xì)節(jié)而設(shè)計(jì),制約了學(xué)生能力的進(jìn)一步提高。一些教師意識(shí)到了這個(gè)問(wèn)題,提出了諸如“案例教學(xué)法”之類的教學(xué)理念,將大型應(yīng)用系統(tǒng)案例引入到程序設(shè)計(jì)類課程中,一定程度上消除了教學(xué)和企業(yè)需求之間的差距[5]。但是,在教學(xué)實(shí)踐中也發(fā)現(xiàn)這種教學(xué)方式并不是萬(wàn)能的。主要體現(xiàn)在:
1)“案例教學(xué)法”在高級(jí)的開發(fā)平臺(tái)(例如Java或.Net)教學(xué)中相對(duì)適用,但在程序設(shè)計(jì)基礎(chǔ)課程(一般講授C語(yǔ)言)中并不適用。所以,針對(duì)程序設(shè)計(jì)類課程,需要根據(jù)語(yǔ)言或平臺(tái),靈活的選用教學(xué)理念;2)“案例教學(xué)法”將重點(diǎn)放到了整個(gè)案例功能的最終實(shí)現(xiàn)上,導(dǎo)致學(xué)生往往忽視細(xì)節(jié)部分設(shè)計(jì)的高效性、科學(xué)性,不能將算法、數(shù)據(jù)結(jié)構(gòu)多課程的知識(shí)有機(jī)融合進(jìn)來(lái),最終影響了整體的執(zhí)行效率。
計(jì)算思維的養(yǎng)成,恰好能夠很好地解決這個(gè)問(wèn)題。由此也可見,培養(yǎng)計(jì)算思維也不是推倒重來(lái),而是在珍惜多年來(lái)行之有效的經(jīng)驗(yàn)和成果的前提下增加對(duì)計(jì)算思維的培養(yǎng)。主要思路如下:在程序設(shè)計(jì)基礎(chǔ)課程教學(xué)中,將計(jì)算思維作為貫穿課程教學(xué)的理念,不孤立介紹語(yǔ)法細(xì)節(jié),而是將算法貫徹始終,逐步深入;在程序設(shè)計(jì)后續(xù)課程中,將“案例教學(xué)法”與“計(jì)算思維”的理念相互滲透,互為補(bǔ)充。
我們認(rèn)為,程序設(shè)計(jì)基礎(chǔ)課程的教學(xué)應(yīng)該突出體現(xiàn)使用編程解決特定問(wèn)題的方式,即程序設(shè)計(jì)方法。另外,在這門課程的教學(xué)實(shí)施中要特別注重實(shí)踐,要使學(xué)生通過(guò)實(shí)踐確實(shí)感受和領(lǐng)悟計(jì)算機(jī)問(wèn)題求解的基本方法和思維模式。就課程性質(zhì)而言,程序設(shè)計(jì)基礎(chǔ)課有利于訓(xùn)練計(jì)算思維能力和動(dòng)手解決問(wèn)題的能力。當(dāng)今社會(huì)的有識(shí)之士提出:既然計(jì)算機(jī)已經(jīng)成為“人類通用智力工具”,那么計(jì)算思維對(duì)每個(gè)學(xué)生都有普遍意義,而不僅囿于計(jì)算機(jī)專業(yè)[6]。
《China Computing Curricula 2002中國(guó)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科教程2002》中說(shuō):“從問(wèn)題的抽象描述到具體實(shí)現(xiàn),以及從研究對(duì)象的表示形式到相應(yīng)的處理方法,都要求本學(xué)科的工作者具有較強(qiáng)的計(jì)算思維能力,而計(jì)算思維能力在較大的程度上是以思維方式的數(shù)學(xué)化為支撐的。所以,學(xué)生在思維方式的數(shù)學(xué)化上受到良好的訓(xùn)練是非常重要的?!盵7]由此可見,對(duì)學(xué)生在程序設(shè)計(jì)課上進(jìn)行數(shù)學(xué)抽象化的訓(xùn)練是培養(yǎng)“計(jì)算思維”,進(jìn)而掌握程序設(shè)計(jì)方法的重要環(huán)節(jié)。計(jì)算思維能力在很大程度上是以思維方式的數(shù)學(xué)化為支撐的,在程序設(shè)計(jì)基礎(chǔ)課上通過(guò)教師講授和學(xué)生自己上機(jī)實(shí)踐,來(lái)體會(huì)一個(gè)實(shí)際問(wèn)題是怎樣變?yōu)橛?jì)算機(jī)能夠求解的問(wèn)題,這個(gè)過(guò)程蘊(yùn)含著計(jì)算思維要素。
就數(shù)學(xué)抽象而言,它是針對(duì)現(xiàn)實(shí)世界的量的關(guān)系和空間形式進(jìn)行的。計(jì)算思維中的抽象與傳統(tǒng)數(shù)學(xué)相比更為復(fù)雜和實(shí)用,抽象的好壞和是否能夠?qū)嵱?,要看?jì)算機(jī)能否快速地自動(dòng)化地完成人們預(yù)想的計(jì)算任務(wù)。計(jì)算機(jī)解題過(guò)程是抽象和自動(dòng)化過(guò)程,就步驟而言,主要是:1)對(duì)問(wèn)題進(jìn)行抽象得到數(shù)學(xué)模型;2)研究解決數(shù)學(xué)模型的算法;3)選擇與算法相關(guān)的數(shù)據(jù)結(jié)構(gòu);4)程序編碼;5)調(diào)試運(yùn)行;6)結(jié)果分析。
在整個(gè)步驟過(guò)程中,構(gòu)造問(wèn)題很重要,它是切入點(diǎn),擔(dān)負(fù)著激發(fā)興趣,引出思路的重要使命,同時(shí),它還必須具有普遍性,具備舉一反三的可能。
教學(xué)具體舉措:1)在教學(xué)中盡量選用有典型數(shù)學(xué)模型背景的示例,例如漢諾塔問(wèn)題、人鬼渡河問(wèn)題等,不再采用單純?yōu)榱搜菔菊Z(yǔ)法而設(shè)計(jì)的初級(jí)例子;2)以賽代練,鼓勵(lì)學(xué)生參加算法類程序設(shè)計(jì)比賽,例如ACM程序大賽、百度之星、TopCoder、Google Code Jam等,以培養(yǎng)、鍛煉學(xué)生的計(jì)算思維能力。
對(duì)于程序設(shè)計(jì)的后續(xù)課程,如果還把重點(diǎn)僅僅放在“計(jì)算思維”的培養(yǎng)上,那就等于是在簡(jiǎn)單地重復(fù)程序設(shè)計(jì)基礎(chǔ)課程的教學(xué)工作,達(dá)不到提高的效果。較為合理的做法應(yīng)該是秉承行之有效的“案例教學(xué)法”理念,將程序設(shè)計(jì)基礎(chǔ)課程中培養(yǎng)出來(lái)的計(jì)算思維能力,應(yīng)用到案例的實(shí)現(xiàn)過(guò)程中,豐富案例教學(xué)法的內(nèi)涵。
教學(xué)具體舉措:1)以賽代練,由鼓勵(lì)學(xué)生參加算法類比賽,轉(zhuǎn)為參加軟件應(yīng)用類比賽,例如齊魯軟件大賽、全國(guó)信息技術(shù)應(yīng)用水平大賽等;2)在軟件整體功能實(shí)現(xiàn)的前提下,關(guān)注軟件中算法、數(shù)據(jù)結(jié)構(gòu)的高效與優(yōu)化。
對(duì)于專業(yè)基礎(chǔ)課來(lái)說(shuō),在以往的教學(xué)過(guò)程中,編程語(yǔ)言語(yǔ)法的教學(xué)是非常重要,但也是非常枯燥的,很多學(xué)生正是因此有了厭煩情緒導(dǎo)致學(xué)習(xí)掉隊(duì)。通過(guò)教學(xué)實(shí)踐,我們發(fā)現(xiàn),較之以往,加入蘊(yùn)含數(shù)學(xué)的趣味問(wèn)題之后,學(xué)生的學(xué)習(xí)積極性明顯有所提高,更為重要的是通過(guò)這樣的例子,不自覺(jué)地提高了學(xué)生的算法邏輯思維能力,同時(shí)使學(xué)生掌握了基本的編程語(yǔ)法,課程掉隊(duì)的學(xué)生比例顯著降低,有效地實(shí)現(xiàn)了既定教學(xué)目標(biāo)。
對(duì)于后續(xù)課程來(lái)說(shuō),在以往的教學(xué)過(guò)程中,學(xué)生往往理解不清各門專業(yè)課程的關(guān)系,忽視,乃至曲解課程的前后銜接關(guān)系,無(wú)法建立起正確的、整體的知識(shí)框架。經(jīng)過(guò)了相應(yīng)的教學(xué)改革后,學(xué)生的知識(shí)體系趨于完整而清晰,并能夠有意識(shí)地將算法、數(shù)據(jù)結(jié)構(gòu)等融入自己的開發(fā)系統(tǒng)中,能較熟練地形成實(shí)際解決方案。在齊魯軟件大賽、全國(guó)信息技術(shù)應(yīng)用水平大賽中我院學(xué)生取得全省一等獎(jiǎng)和全國(guó)二等獎(jiǎng)的好成績(jī)。
我們應(yīng)特別關(guān)注學(xué)生多種思維能力的培養(yǎng),尤其要重視創(chuàng)造性思維的訓(xùn)練及創(chuàng)造性思維方法的掌握,提高學(xué)生發(fā)現(xiàn)問(wèn)題、解決問(wèn)題的能力。在培養(yǎng)計(jì)算思維的過(guò)程中,教師也需要警惕另外一個(gè)極端,那就是只重視思維,而忽視了編程語(yǔ)言,否則,計(jì)算思維就成了無(wú)源之水。培養(yǎng)計(jì)算思維不是目的,我們的最終目的是要提高學(xué)生的綜合能力。合理的根據(jù)課程內(nèi)容,在程序設(shè)計(jì)類課程的不同階段選用不同的教學(xué)方法、理念,是提高教學(xué)質(zhì)量的一條有效途徑。
[1]楊玉良.深入實(shí)施通識(shí)教育 培養(yǎng)未來(lái)社會(huì)中堅(jiān)[J].中國(guó)高等教育,2010,46(19):4-5.
[2]Wing JM.Computational thinking[J].Communications of ACM,2006,49(3):33-35.
[3]譚浩強(qiáng).研究計(jì)算思維,堅(jiān)持面向應(yīng)用[J].計(jì)算機(jī)教育,2012,10(21):45-49.
[4]王玉鋒,孔繁之.基于計(jì)算思維的計(jì)算機(jī)教學(xué)研究[J].計(jì)算機(jī)教育,2013,11(13):57-59.
[5]滕劍鋒.Java課程改革的研究與實(shí)踐[J].計(jì)算機(jī)教育,2012,10(23):87-89.
[6]吳文虎.我怎么講好“程序設(shè)計(jì)基礎(chǔ)”這門課[J].中國(guó)大學(xué)教學(xué),2011,30(12):10-12.
[7]中國(guó)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科研究組.China Computing Curricula 2002中國(guó)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科教程2002[M].北京:清華大學(xué)出版社,2002:27.