国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

計(jì)算思維在“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)中的運(yùn)用

2013-12-29 00:00:00劉琴
計(jì)算機(jī)教育 2013年5期

摘要:計(jì)算思維是近年來(lái)被普遍倡導(dǎo)的一種科學(xué)素養(yǎng),如何在課堂教學(xué)中培養(yǎng)大學(xué)生的創(chuàng)新能力和計(jì)算思維能力,已成為“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)改革的任務(wù)之一。文章首先詳細(xì)分析計(jì)算思維的定義和特征,然后說(shuō)明計(jì)算思維和數(shù)據(jù)結(jié)構(gòu)的相通之處,最后給出幾個(gè)相關(guān)的教學(xué)案例。

關(guān)鍵詞:計(jì)算思維;數(shù)據(jù)結(jié)構(gòu);算法設(shè)計(jì)

0.引言

自2006年3月美國(guó)卡內(nèi)基·梅隆大學(xué)周以真教授提出“計(jì)算思維”以來(lái),在國(guó)內(nèi)外教育界引起了很大的反響。周教授清晰系統(tǒng)地闡述了計(jì)算思維的概念,并認(rèn)為計(jì)算思維是每個(gè)人的基本技能,不僅屬于計(jì)算機(jī)科學(xué)家,應(yīng)當(dāng)使每個(gè)學(xué)生在培養(yǎng)解析能力時(shí)除掌握閱讀、寫作和算術(shù)外,還要學(xué)會(huì)計(jì)算思維。既然是每個(gè)人都必須掌握的思維能力,那么作為最“接近”計(jì)算思維的計(jì)算機(jī)專業(yè)的學(xué)生來(lái)說(shuō),該如何培養(yǎng)學(xué)生具有這種思維方式呢?這個(gè)任務(wù)顯然不是某一門課程能獨(dú)立完成的,它需要滲透到每一門專業(yè)課程中。這就要求任課教師本身就應(yīng)該具有計(jì)算思維的教育理念,唯有這樣才能把計(jì)算思維滲透到每門課程中,最后把這一抽象的思維方式融到學(xué)生的生活和今后的工作中去。

筆者將以計(jì)算機(jī)專業(yè)的基礎(chǔ)課程——“數(shù)據(jù)結(jié)構(gòu)”的教學(xué)經(jīng)驗(yàn)為載體,詳細(xì)介紹如何在課程中傳授計(jì)算思維,使大學(xué)生學(xué)會(huì)運(yùn)用計(jì)算思維去思考問(wèn)題、解決問(wèn)題,提升他們的計(jì)算素養(yǎng),使其成為卓越人才。

1.計(jì)算思維的定義和特征

計(jì)算思維不是新生事物,從古代的算盤到近代的加法器、計(jì)算器以及現(xiàn)代的電子計(jì)算機(jī),直到目前風(fēng)靡全球的互聯(lián)網(wǎng)和云計(jì)算,計(jì)算思維的內(nèi)容在不斷豐富,推動(dòng)著人類科技的進(jìn)步。雖然計(jì)算思維一直都在被人們應(yīng)用,但是卻沒(méi)有明確地被人們用系統(tǒng)的理論來(lái)揭示。直到2006年,周以真教授在計(jì)算機(jī)權(quán)威期刊CommunicationsD,theACM上指出:計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問(wèn)題求解、系統(tǒng)設(shè)計(jì)、人類行為理解等的一系列思維活動(dòng)。周教授系統(tǒng)地給出了計(jì)算思維的6個(gè)特征:

1)概念化,不是程序化。計(jì)算機(jī)科學(xué)不是計(jì)算機(jī)編程,像計(jì)算機(jī)科學(xué)家那樣去思維意味著遠(yuǎn)不止能為計(jì)算機(jī)編程,還要求能夠在抽象的多個(gè)層次上思維。

2)根本的,不是刻板的技能。根本技能是每一個(gè)人為了在現(xiàn)代社會(huì)中發(fā)揮職能所必須掌握的;刻板技能意味著機(jī)械地重復(fù)。

3)是人的,不是計(jì)算機(jī)的思維方式。計(jì)算思維是人類求解問(wèn)題的一條途徑,但并不是要使人類像計(jì)算機(jī)那樣去思考。計(jì)算機(jī)枯燥且沉悶,人類聰穎且富有想象力,是人類賦予了計(jì)算機(jī)激情。

4)數(shù)學(xué)和工程思維的互補(bǔ)與融合。計(jì)算機(jī)科學(xué)在本質(zhì)上源自數(shù)學(xué)思維,因?yàn)橄袼械目茖W(xué)一樣,其形式化基礎(chǔ)建筑于數(shù)學(xué)之上。計(jì)算機(jī)科學(xué)又從本質(zhì)上源自工程思維,基本計(jì)算設(shè)備的限制迫使計(jì)算機(jī)學(xué)家必須計(jì)算性地思考,不能只是數(shù)學(xué)性地思考。

5)是思想,不是人造物。不只是軟件、硬件等人造物以物理形式到處呈現(xiàn)并時(shí)時(shí)刻刻觸及我們的生活,更重要的是接近和求解問(wèn)題、管理日常生活、與他人交流和互動(dòng),計(jì)算的概念無(wú)處不在。

6)面向所有的人,所有地方。當(dāng)計(jì)算思維真正融入人類活動(dòng),以至于不再表現(xiàn)為一種顯式哲學(xué)時(shí),它就將成為一種現(xiàn)實(shí)。

同時(shí),周以真教授又將計(jì)算思維闡述成了具體的幾種思維方法:遞歸,抽象和分解,保護(hù),冗余,容錯(cuò),糾錯(cuò)和恢復(fù),利用啟發(fā)式推理來(lái)尋求解答,在不確定情況下的規(guī)劃、學(xué)習(xí)和調(diào)度等。

2.計(jì)算思維與數(shù)據(jù)結(jié)構(gòu)

通過(guò)對(duì)計(jì)算思維的仔細(xì)分析,我們?cè)噲D用這樣一個(gè)公式來(lái)概括計(jì)算思維,即“模型+算法”。首先,學(xué)會(huì)合理地抽象,把有待解決的問(wèn)題抽象成有效的計(jì)算過(guò)程,抽象成合適的模型,這是問(wèn)題求解的第一步。然后,基于建立起來(lái)的模型利用各種思維方法去求解問(wèn)題。

“數(shù)據(jù)結(jié)構(gòu)”是計(jì)算機(jī)專業(yè)的一門專業(yè)必修課,是軟件編程設(shè)計(jì)的基礎(chǔ),對(duì)于培養(yǎng)學(xué)生的邏輯思維能力,利用計(jì)算機(jī)解決實(shí)際問(wèn)題的能力都起到了至關(guān)重要的作用。“數(shù)據(jù)結(jié)構(gòu)”的研究?jī)?nèi)容可歸納為3個(gè)部分:邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)和運(yùn)算集合,即按某種邏輯關(guān)系組織起來(lái)的一批數(shù)據(jù),按一定的映像方式把它存放在計(jì)算機(jī)的存儲(chǔ)器中,并在這些數(shù)據(jù)上定義了一個(gè)運(yùn)算的集合,可以用“(邏輯|存儲(chǔ))結(jié)構(gòu)+算法”的公式來(lái)概括。

對(duì)比兩個(gè)“公式”,我們可以發(fā)現(xiàn)相似之處,都是靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)操作的結(jié)合。當(dāng)然,計(jì)算思維中的模型和算法都要比數(shù)據(jù)結(jié)構(gòu)中的概念來(lái)的寬泛很多。但正因?yàn)槟撤N程度的契合,使得在“數(shù)據(jù)結(jié)構(gòu)”課程中貫徹計(jì)算思維的思想,要比其他課程來(lái)得自然和容易許多。具體體現(xiàn)在:

1)從“邏輯或者存儲(chǔ)結(jié)構(gòu)”的選擇理解“抽象建?!?。在“數(shù)據(jù)結(jié)構(gòu)”課程中,當(dāng)面對(duì)一個(gè)問(wèn)題時(shí),首先是要能從問(wèn)題中抽象出數(shù)據(jù)對(duì)象,然后分析數(shù)據(jù)對(duì)象中各個(gè)數(shù)據(jù)元素相互之間的(邏輯)關(guān)系是什么,接著這種邏輯關(guān)系用什么樣的存儲(chǔ)結(jié)構(gòu)來(lái)實(shí)現(xiàn)。確定好這些后,再思考各種算法的設(shè)計(jì)和實(shí)現(xiàn)。整個(gè)問(wèn)題的求解過(guò)程,就是一個(gè)抽象建模的過(guò)程。只不過(guò),計(jì)算思維的概念更寬泛,它還需要考慮問(wèn)題的可計(jì)算性(即計(jì)算的能力和極限,知道哪些問(wèn)題可以計(jì)算,哪些問(wèn)題不可以計(jì)算),而“數(shù)據(jù)結(jié)構(gòu)”課程中所給出的問(wèn)題都是可計(jì)算的。即便如此,依然能通過(guò)對(duì)問(wèn)題的抽象去訓(xùn)練計(jì)算思維。

2)通過(guò)算法多樣化訓(xùn)練思維方法?!皵?shù)據(jù)結(jié)構(gòu)”課程中,對(duì)于一個(gè)問(wèn)題往往可以通過(guò)不同方式來(lái)完成算法。在選擇不同求解方式的過(guò)程中,可以很好地訓(xùn)練計(jì)算思維。例如,可以學(xué)會(huì)對(duì)問(wèn)題進(jìn)行有效的分解,分解的方法和結(jié)果當(dāng)然是多樣性的,分解的過(guò)程要希望每個(gè)分解塊能盡量被重用,重用計(jì)算過(guò)程,重用程序。如何有效重用,是一個(gè)問(wèn)題的抽象分類。這樣做,能快速獲得計(jì)算結(jié)果。在設(shè)計(jì)算法和優(yōu)化算法的過(guò)程中還需要利用遞歸、并發(fā)、啟發(fā)、學(xué)習(xí)等方法。

3)通過(guò)靈活的實(shí)驗(yàn)手段打造創(chuàng)新思維。雖然在計(jì)算思維的第一個(gè)特征中強(qiáng)調(diào)“計(jì)算思維是概念化,不是程序化。計(jì)算機(jī)科學(xué)不是計(jì)算機(jī)編程”,但是不可否認(rèn)的是,當(dāng)你使用計(jì)算機(jī)來(lái)解決具體問(wèn)題求解時(shí),把算法思想編寫成可執(zhí)行的程序是解決問(wèn)題和驗(yàn)證算法有效性的最好方法。因此,在教學(xué)過(guò)程中,我們強(qiáng)調(diào)并培養(yǎng)學(xué)生對(duì)于抽象過(guò)程的嚴(yán)謹(jǐn)性,編寫程序時(shí)強(qiáng)調(diào)從需求定義開始,進(jìn)行算法優(yōu)化與選擇,最后通過(guò)上機(jī)實(shí)驗(yàn)來(lái)驗(yàn)證。為了提高學(xué)生學(xué)習(xí)的興趣,我們?cè)诎才艑?shí)驗(yàn)內(nèi)容上,多以實(shí)用課題為主,盡量生動(dòng)化、趣味化,例如,在線性表的實(shí)驗(yàn)中,選擇了通訊錄的設(shè)計(jì)和管理;在圖的實(shí)驗(yàn)中,選擇了最經(jīng)濟(jì)出行路線的設(shè)計(jì)。

3.教學(xué)案例

3.1抽象和分解方法的使用——排序問(wèn)題

“數(shù)據(jù)結(jié)構(gòu)”中有很多排序算法:插入排序、選擇排序、冒泡排序等算法。在講解這些算法時(shí)可以滲透講解計(jì)算思維中“抽象和分解”的思想。該方法是“選擇合適的方式去陳述一個(gè)問(wèn)題,或者是選擇合適的方式對(duì)一個(gè)問(wèn)題的相關(guān)方面建模使其易于處理”,也就是把一個(gè)復(fù)雜的問(wèn)題分解成若干相關(guān)的子問(wèn)題或者簡(jiǎn)單問(wèn)題去處理。

以插入排序?yàn)槔?,插入排序的基本思想是每次將一個(gè)待排序的記錄,按其關(guān)鍵字大小插入到前面已經(jīng)排好序的子表中的適當(dāng)位置,直到全部記錄插入完成為止。多個(gè)記錄的排序問(wèn)題可以看成是一個(gè)大的復(fù)雜問(wèn)題,這個(gè)問(wèn)題可抽象分解成若干個(gè)小問(wèn)題:把一個(gè)待排的記錄插入到已經(jīng)有序的子表中。那么原來(lái)的排序問(wèn)題就變成了不斷增長(zhǎng)有序表中記錄的個(gè)數(shù),即記錄個(gè)數(shù)依次從初始的1增加到n(即所有記錄的個(gè)數(shù)),個(gè)數(shù)增加到n時(shí),排序就完成了。這個(gè)小問(wèn)題又可轉(zhuǎn)換為數(shù)據(jù)的兩兩比較,即待排序記錄依次和有序子表中的記錄進(jìn)行兩兩比較,直到找到合適的位置,插入即可,插入后的子表依然有序。fb7f50d707b5e800146bb16ebebddd0a最后,通過(guò)這樣兩層轉(zhuǎn)換,排序問(wèn)題就轉(zhuǎn)換成了學(xué)生非常熟悉的數(shù)據(jù)兩兩比較的問(wèn)題。同樣,其他排序方法也可以通過(guò)層層抽象和分解把問(wèn)題轉(zhuǎn)換為簡(jiǎn)單的小問(wèn)題。

3.2遞歸方法的使用——二叉樹的遍歷問(wèn)題

二叉樹的遍歷是按照一定次序訪問(wèn)二叉樹中的所有結(jié)點(diǎn),并且每個(gè)結(jié)點(diǎn)僅被訪問(wèn)一次。遞歸方法是“把代碼譯成數(shù)據(jù)又把數(shù)據(jù)譯成代碼”。從程序設(shè)計(jì)的角度看,遞歸就是在定義一個(gè)過(guò)程或者函數(shù)時(shí)出現(xiàn)直接調(diào)用或間接調(diào)用本過(guò)程或本函數(shù)的成分。

二叉樹及其相關(guān)操作的講解是“數(shù)據(jù)結(jié)構(gòu)”課程的重點(diǎn)和難點(diǎn),由于二叉樹的定義本身就是一個(gè)遞歸定義,因此與其相關(guān)的操作,利用遞歸的方式來(lái)完成也是最自然的事情,是一個(gè)能很好地體現(xiàn)遞歸思想的知識(shí)點(diǎn)。以二叉樹的中序遍歷為例,我們首先可以利用上述的分解方法將整個(gè)遍歷問(wèn)題劃分成若干個(gè)子問(wèn)題,即分解為中序訪問(wèn)左子樹,根結(jié)點(diǎn),中序右子樹這樣三個(gè)子問(wèn)題;接著,對(duì)訪問(wèn)左子樹和訪問(wèn)右子樹的子問(wèn)題,利用相同的方法,又可以分解為類似的若干個(gè)子問(wèn)題或者不能再劃分(如子樹為空);如此反復(fù)進(jìn)行,直到不能再劃分成子問(wèn)題,或者已經(jīng)可以求解為止。在分解過(guò)程中,算法不斷地利用同樣的方法分解問(wèn)題,不斷地按照左子樹一根結(jié)點(diǎn)一右子樹的順序訪問(wèn)。這個(gè)“較小問(wèn)題”反復(fù)不斷地被重復(fù),形成了遞歸體。從問(wèn)題分析的過(guò)程,可以引導(dǎo)學(xué)生去理解遞歸這一抽象而又重要的方法。

4.結(jié)語(yǔ)

計(jì)算思維已經(jīng)成為近年來(lái)教育領(lǐng)域的研究熱點(diǎn),并作為一種通識(shí)教育被研究。計(jì)算機(jī)學(xué)科在培養(yǎng)計(jì)算思維方面有著得天獨(dú)厚的條件,計(jì)算思維的培養(yǎng)對(duì)于人才本身也是極為重要的,它可以使學(xué)生理解計(jì)算機(jī)的實(shí)現(xiàn)機(jī)制和約束,有利于培養(yǎng)學(xué)生的創(chuàng)新思維,提高學(xué)生的信息素養(yǎng),展現(xiàn)出處理計(jì)算機(jī)相關(guān)問(wèn)題時(shí)應(yīng)有的思維方法、表達(dá)形式和行為習(xí)慣。

文章對(duì)如何在“數(shù)據(jù)結(jié)構(gòu)”課堂教學(xué)過(guò)程中滲透計(jì)算思維進(jìn)行有益的探討。實(shí)踐表明,將計(jì)算思維融合于教學(xué)實(shí)踐提高了教學(xué)質(zhì)量,提高了學(xué)生解決問(wèn)題的能力,對(duì)人才的培養(yǎng)大有裨益。

(見習(xí)編輯:劉麗麗)

定远县| 长春市| 衡阳市| 广安市| 瑞昌市| 廊坊市| 景德镇市| 邮箱| 大渡口区| 肥乡县| 石门县| 蒲城县| 漠河县| 攀枝花市| 克什克腾旗| 嵩明县| 镇宁| 贵德县| 银川市| 芒康县| 靖西县| 犍为县| 织金县| 安阳市| 柏乡县| 遵义县| 桂阳县| 休宁县| 视频| 崇左市| 页游| 旌德县| 曲靖市| 东山县| 东方市| 城步| 汉寿县| 贡嘎县| 黄大仙区| 兴安盟| 博野县|