葛欣 席景科 李政偉 劉厚泉
[摘 要]“高級(jí)語(yǔ)言程序設(shè)計(jì)”課程是一門知識(shí)點(diǎn)繁多、實(shí)踐性較強(qiáng)的課程。它面向計(jì)算機(jī)所有本科專業(yè)開(kāi)設(shè),是學(xué)生靈活運(yùn)用所學(xué)知識(shí),培養(yǎng)和訓(xùn)練軟件開(kāi)發(fā)能力的基礎(chǔ)和關(guān)鍵。計(jì)算思維作為一種應(yīng)對(duì)信息時(shí)代的普適能力,得到了廣泛的關(guān)注和認(rèn)可。計(jì)算機(jī)課程是培養(yǎng)學(xué)生計(jì)算思維的最好課程。以技能培養(yǎng)和能力培養(yǎng)為目標(biāo)的“高級(jí)語(yǔ)言程序設(shè)計(jì)”課程,需要擺脫傳統(tǒng)的教學(xué)內(nèi)容和教學(xué)方法,以計(jì)算思維為主線,開(kāi)展教學(xué)活動(dòng),使程序設(shè)計(jì)思維成為學(xué)生自身的技能組成部分。
[關(guān)鍵詞]計(jì)算思維 高級(jí)語(yǔ)言程序設(shè)計(jì) 思維訓(xùn)練
[中圖分類號(hào)] G423.07[文獻(xiàn)標(biāo)識(shí)碼] A[文章編號(hào)] 2095-3437(2015)06-0089-02
“高級(jí)語(yǔ)言程序設(shè)計(jì)”課程是一門知識(shí)點(diǎn)繁多、實(shí)踐性較強(qiáng)的課程。它面向計(jì)算機(jī)所有本科專業(yè)開(kāi)設(shè),是學(xué)生靈活運(yùn)用所學(xué)知識(shí),培養(yǎng)和訓(xùn)練軟件開(kāi)發(fā)能力的基礎(chǔ)和關(guān)鍵。它不僅是對(duì)C++語(yǔ)言的學(xué)習(xí),也是軟件開(kāi)發(fā)的啟蒙和軟件開(kāi)發(fā)技能的初步訓(xùn)練??梢哉f(shuō),它是計(jì)算機(jī)專業(yè)的入門課程,不僅決定著今后的課程學(xué)習(xí)情況,也直接影響著學(xué)生學(xué)習(xí)計(jì)算機(jī)知識(shí)的興趣和動(dòng)力。
根據(jù)多年的教學(xué)實(shí)踐,以及學(xué)生在課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)中暴露出的問(wèn)題,筆者發(fā)現(xiàn)“高級(jí)語(yǔ)言程序設(shè)計(jì)”課程雖然課時(shí)量很大,但教學(xué)效果與學(xué)習(xí)效果均不理想,學(xué)生普遍不會(huì)用面向?qū)ο蟮乃枷虢鉀Q實(shí)際應(yīng)用問(wèn)題,在后續(xù)的軟件開(kāi)發(fā)工作中感到無(wú)從下手。
“計(jì)算思維”作為三大科學(xué)思維之一,旨在培養(yǎng)思維方式和提高創(chuàng)新能力,將其應(yīng)用在“高級(jí)語(yǔ)言程序設(shè)計(jì)”課程中,能夠有效地提高教學(xué)效果,使該課程不再僅僅講授程序編寫(xiě),而是成為思維訓(xùn)練和能力培養(yǎng)的平臺(tái),真正發(fā)揮其在課程體系中的作用。
一、引入計(jì)算思維的必要性
(一)計(jì)算思維的特質(zhì)
“計(jì)算思維”(Computational Thinking)2006年由美國(guó)卡內(nèi)基梅隆大學(xué)計(jì)算機(jī)科學(xué)系主任周以真教授提出,是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念去求解問(wèn)題、設(shè)計(jì)系統(tǒng)和理解人類的行為。[1]其本質(zhì)是抽象(Abstraction)和自動(dòng)化(Automation),即在解決實(shí)際問(wèn)題時(shí),首先通過(guò)分析、提取、類比、替代等一系列方法將問(wèn)題抽象成計(jì)算機(jī)世界中的問(wèn)題描述;其次利用形式化語(yǔ)言,將問(wèn)題進(jìn)行離散的符號(hào)化處理,建立模型;最后設(shè)計(jì)算法和編程實(shí)現(xiàn),在實(shí)際的計(jì)算機(jī)中運(yùn)行并求解。
當(dāng)前,計(jì)算機(jī)領(lǐng)域的研究成果不斷豐富和完善,它與其他學(xué)科的交叉也越來(lái)越深入,計(jì)算思維有利于解決計(jì)算機(jī)科學(xué)家和領(lǐng)域?qū)<抑g的知識(shí)鴻溝所帶來(lái)的困惑。計(jì)算思維雖然具有計(jì)算機(jī)的許多特征,但是計(jì)算思維本身并不是計(jì)算機(jī)的專屬。計(jì)算思維是屬于人類的一種思維方式,它給出了求解問(wèn)題的一條途徑,而不是讓人類像計(jì)算機(jī)那樣思考。[1]因此,計(jì)算思維是一種基本技能,是每一個(gè)人必須掌握的技能。
(二)計(jì)算思維的作用
長(zhǎng)期以來(lái),學(xué)生們?cè)诤芏嗾n程中被動(dòng)地學(xué)習(xí),導(dǎo)致思維固化,缺乏解決具體問(wèn)題的能力。計(jì)算思維在培養(yǎng)認(rèn)知能力和鍛煉思維方式上有其獨(dú)特之處,得到了國(guó)內(nèi)眾多院士和教授的一致認(rèn)可。
計(jì)算大師戴克斯特拉曾說(shuō)過(guò):“我們所使用的工具影響著我們的思維方式和思維習(xí)慣,從而也將深刻地影響著我們的思維能力?!庇?jì)算機(jī)以及計(jì)算機(jī)科學(xué)的發(fā)展催生了智能化的思維,周以真教授更是把這種思維提升到與“讀、寫(xiě)、算”同等的重要地位,成為適合于每一個(gè)人的“一種普遍的認(rèn)識(shí)和一類普適的技能”。[2]
計(jì)算思維將計(jì)算機(jī)從工具發(fā)展成一種思維方式,使計(jì)算機(jī)科學(xué)中的經(jīng)典方法潛移默化地應(yīng)用到分析問(wèn)題和解決問(wèn)題中,巧妙地實(shí)現(xiàn)了多領(lǐng)域知識(shí)的融合。在解決具體問(wèn)題時(shí),它使用計(jì)算機(jī)科學(xué)中的抽象、分解、嵌入、轉(zhuǎn)化和仿真等方法,把一個(gè)看起來(lái)困難的問(wèn)題重新闡釋成一個(gè)已有解決方案的問(wèn)題;利用復(fù)雜度計(jì)算的思想充分估計(jì)解決方法的空間和時(shí)間代價(jià),同時(shí)借鑒系統(tǒng)設(shè)計(jì)的簡(jiǎn)潔和優(yōu)雅,在解決問(wèn)題時(shí)兼顧對(duì)美學(xué)的考量。
二、基于計(jì)算思維的“高級(jí)語(yǔ)言程序設(shè)計(jì)”教學(xué)模式
“高級(jí)語(yǔ)言程序設(shè)計(jì)”課程的最終目標(biāo)是培養(yǎng)學(xué)生程序設(shè)計(jì)的思維,即解決具體問(wèn)題的思維方式,這和計(jì)算思維的目標(biāo)相一致。因此,應(yīng)結(jié)合計(jì)算思維對(duì)課程的教學(xué)內(nèi)容和教學(xué)方法進(jìn)行改革。
(一)教學(xué)內(nèi)容的改革
1.結(jié)合實(shí)際生活設(shè)計(jì)教學(xué)實(shí)例
傳統(tǒng)的教學(xué)內(nèi)容中也會(huì)包含許多實(shí)例,但這些實(shí)例與生活脫節(jié),學(xué)生雖然掌握了這些實(shí)例的解題方法,但遇到和實(shí)際相關(guān)的題目時(shí)仍無(wú)從下手。例如,比較兩個(gè)整數(shù)的大小,輸出較大的值。對(duì)于這個(gè)經(jīng)典的比較大小的題目,大部分學(xué)生都能理解和掌握。但如果改成“桌子上有兩個(gè)大小不同的蘋(píng)果,請(qǐng)編程實(shí)現(xiàn)找出大的蘋(píng)果”,那么很多學(xué)生就會(huì)感覺(jué)問(wèn)題簡(jiǎn)單到不知如何去做。導(dǎo)致這個(gè)情況的原因是,傳統(tǒng)的教學(xué)實(shí)例基本上都是經(jīng)過(guò)了抽象、提取、細(xì)化等處理后的產(chǎn)品,學(xué)生在學(xué)習(xí)這些實(shí)例時(shí)只鍛煉了語(yǔ)法知識(shí)的理解和組織,而前期的思維訓(xùn)練都被省略,但這部分恰恰是整個(gè)程序設(shè)計(jì)思維的主體,也是計(jì)算思維的本質(zhì)之一——抽象。
實(shí)際生活中的問(wèn)題會(huì)包含大量的信息,在處理這些問(wèn)題時(shí),首先需要明確目標(biāo),對(duì)信息進(jìn)行過(guò)濾,保留需要的信息。這就是抽象與提取的過(guò)程。以“比較蘋(píng)果”為例,題目中要求找出較大的蘋(píng)果,那么就可以確定比較的條件是蘋(píng)果的大小,而不是外觀、產(chǎn)地、品種等條件。其次,什么值能夠代表蘋(píng)果的大小?如果往簡(jiǎn)單地想,重量從一定程度上可以代表大小;如果往復(fù)雜地想,設(shè)定蘋(píng)果是一個(gè)圓體,那么體積可以代表大小;這樣問(wèn)題就抽象成給定兩個(gè)值,進(jìn)行比較。最后,落實(shí)到編程語(yǔ)句上,要根據(jù)實(shí)際情況確定兩個(gè)值的數(shù)據(jù)類型,比較的過(guò)程則對(duì)應(yīng)到選擇結(jié)構(gòu)的語(yǔ)法。這個(gè)過(guò)程是計(jì)算思維的本質(zhì)之二——自動(dòng)化。
2.注重實(shí)例間的關(guān)聯(lián)與組合
思維訓(xùn)練的另一個(gè)重要方面是問(wèn)題的分解與組合,因此在設(shè)計(jì)教學(xué)實(shí)例時(shí),除了要結(jié)合實(shí)際生活,還要注重實(shí)例間的關(guān)系,讓每個(gè)實(shí)例不僅能單獨(dú)解決一個(gè)問(wèn)題,而且能夠通過(guò)多個(gè)實(shí)例的組合來(lái)完成更高難度的問(wèn)題。例如在講解數(shù)組和指針內(nèi)容時(shí),對(duì)應(yīng)的知識(shí)點(diǎn)會(huì)有關(guān)于數(shù)組的輸入、輸出的實(shí)例,基于冒泡、選擇等多種算法的數(shù)值排序的實(shí)例,折半查找的實(shí)例……這些實(shí)例獨(dú)立存在時(shí)是針對(duì)某一個(gè)問(wèn)題的解決方法,如果把這些實(shí)例組合在一起,就實(shí)現(xiàn)了一組數(shù)據(jù)的輸入/輸出、排序、查找、插入、刪除等多種功能的結(jié)構(gòu),這正是《數(shù)據(jù)結(jié)構(gòu)》中講解的隊(duì)列結(jié)構(gòu),應(yīng)用到實(shí)際生活中,可以用來(lái)模擬實(shí)現(xiàn)超市排隊(duì)結(jié)賬、火車票售票、旅游路線規(guī)劃等多種具體問(wèn)題。
3.提高實(shí)例的實(shí)用性
“高級(jí)語(yǔ)言程序設(shè)計(jì)”課程在進(jìn)入面向?qū)ο蟮某绦蛟O(shè)計(jì)時(shí),實(shí)例的規(guī)模一般都會(huì)變大,因?yàn)槊嫦蚪Y(jié)構(gòu)的程序設(shè)計(jì)階段中每個(gè)實(shí)例解決的只是一個(gè)知識(shí)點(diǎn),而面向?qū)ο蟮某绦蛟O(shè)計(jì)本身就包括類、對(duì)象、屬性、方法等多個(gè)因素,實(shí)例的內(nèi)容為了覆蓋這些因素就需要設(shè)計(jì)得復(fù)雜一些。但常用的實(shí)例,如日期類、時(shí)鐘類、圖形類等在實(shí)際中的可用性并不大,學(xué)生通過(guò)這些實(shí)例確實(shí)理解了類的結(jié)構(gòu),但遇到具體問(wèn)題時(shí)卻不能根據(jù)需要設(shè)計(jì)出一個(gè)新類。因此,在設(shè)計(jì)教學(xué)實(shí)例時(shí)需要結(jié)合后續(xù)課程的內(nèi)容,設(shè)計(jì)一些在以后學(xué)習(xí)中經(jīng)常會(huì)遇到或能夠用到的、具有延展性的實(shí)例,例如string類、堆棧類、隊(duì)列類等。
(二)教學(xué)方法的改進(jìn)
1.教學(xué)以組為單位
學(xué)生按照兩到三個(gè)為一組進(jìn)行劃分,教學(xué)過(guò)程中,對(duì)于問(wèn)題的求解按照組內(nèi)討論的方式開(kāi)展。每個(gè)組內(nèi)的學(xué)生,不設(shè)組長(zhǎng),輪流講解該組討論后的結(jié)論。遇到結(jié)論不同的情況,先由組與組之間進(jìn)行辯論,結(jié)論仍不明確時(shí),每個(gè)小組選擇本組所支持的結(jié)論進(jìn)行編程驗(yàn)證,最后由教師結(jié)合各組實(shí)驗(yàn)結(jié)果,給出具體說(shuō)明和講解。這種方法能夠有效地調(diào)動(dòng)學(xué)生學(xué)習(xí)的積極性,同時(shí)也避免了教師一個(gè)人的思維局限性,讓教學(xué)碰撞出思想的火花。
2.以實(shí)例安排教學(xué)單元
教學(xué)單元不再按照章節(jié)進(jìn)行,而是根據(jù)教學(xué)實(shí)例進(jìn)行設(shè)計(jì)。每個(gè)實(shí)例作為一個(gè)教學(xué)單元,先給出問(wèn)題的描述,學(xué)生分組后,組內(nèi)進(jìn)行討論;然后教師對(duì)實(shí)例中涉及的知識(shí)點(diǎn)進(jìn)行詳細(xì)的講解和延伸,并根據(jù)每組反饋回來(lái)的結(jié)論,給予對(duì)比和分析;最后學(xué)生通過(guò)對(duì)知識(shí)點(diǎn)的理解和消化,對(duì)本組的結(jié)論進(jìn)行調(diào)整和細(xì)化,并在計(jì)算機(jī)上編程實(shí)現(xiàn)。
3.隨堂上機(jī)實(shí)踐
蒙臺(tái)梭利曾說(shuō)過(guò):“我看到了,我忘記了;我聽(tīng)到了,我記住了;我做過(guò)了,我理解了?!彼?,實(shí)踐對(duì)知識(shí)的掌握具有關(guān)鍵作用。傳統(tǒng)的“滿堂灌”和少量的學(xué)生問(wèn)答,很難獲得理想的教學(xué)效果。學(xué)生只有在思考后,付諸于實(shí)踐,在實(shí)現(xiàn)過(guò)程中總結(jié)經(jīng)驗(yàn)教訓(xùn),才能把知識(shí)內(nèi)化,最終轉(zhuǎn)化成行為習(xí)慣的一部分。
三、結(jié)束語(yǔ)
“計(jì)算思維”隨著計(jì)算機(jī)的普及和計(jì)算機(jī)技術(shù)的發(fā)展演化而來(lái),提出了面向問(wèn)題解決的系列觀點(diǎn)和方法,指出了計(jì)算機(jī)科學(xué)與其他領(lǐng)域融合、創(chuàng)新的途徑。計(jì)算機(jī)課程不是培養(yǎng)計(jì)算思維的唯一課程,但卻是最好的課程。[3]以技能培養(yǎng)和能力培養(yǎng)為目標(biāo)的“高級(jí)語(yǔ)言程序設(shè)計(jì)”課程,需要擺脫傳統(tǒng)的教學(xué)內(nèi)容和教學(xué)方法,以計(jì)算思維為主線,開(kāi)展教學(xué)活動(dòng),使程序設(shè)計(jì)思維成為常識(shí),成為學(xué)生自身的技能組成部分。
[ 注 釋 ]
[1] J.M.Wing.Computational Thinking[J].Communications of ACM,2006(3):33-35.
[2] Fei?鄄Yue Wang.Toward a Paradigm Shift in Social Comput?鄄ing[J].The ACP Approach,IEEE Intelligent Systems,2007(5):65-67.
[3] 戰(zhàn)德臣,聶蘭順,徐曉飛.計(jì)算之樹(shù)——一種表述計(jì)算思維知識(shí)體系的多維框架[J].工業(yè)和信息化教育,2013(6).
[責(zé)任編輯:覃侶冰]
[收稿時(shí)間]2014-12-19
[基金項(xiàng)目]中國(guó)礦業(yè)大學(xué)2013青年教師教改項(xiàng)目(2013Y45);中國(guó)礦業(yè)大學(xué)計(jì)算機(jī)學(xué)院2012精品課程培育項(xiàng)目。
[作者簡(jiǎn)介]葛欣(1980-),女,江蘇徐州人,博士,副教授,研究方向:信息處理。