亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Python的數(shù)據(jù)結(jié)構(gòu)課程

        2017-12-31 17:58:01裘宗燕
        計(jì)算機(jī)教育 2017年12期
        關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu)復(fù)雜性講授

        裘宗燕

        (北京大學(xué)數(shù)學(xué)學(xué)院,北京100871)

        0 引言

        越來(lái)越多的高校開(kāi)設(shè)了Python編程課程,國(guó)際上已有很多學(xué)校將Python作為第一門(mén)計(jì)算機(jī)科學(xué)技術(shù)課的語(yǔ)言,講授基本編程的思想、概念和技術(shù)。這種做法不可避免地帶來(lái)一個(gè)問(wèn)題:這門(mén)課程怎樣與后續(xù)課程銜接,首先是怎樣與數(shù)據(jù)結(jié)構(gòu)課程銜接。我們使用Python語(yǔ)言講授過(guò)幾次計(jì)算機(jī)基礎(chǔ)課,包括基本編程課和數(shù)據(jù)結(jié)構(gòu)課,并編寫(xiě)出版了相關(guān)教材[1],發(fā)現(xiàn)用Python講授數(shù)據(jù)結(jié)構(gòu)課程的現(xiàn)實(shí)情況:與原來(lái)基于C語(yǔ)言等的課程相比,該課程有哪些優(yōu)勢(shì),又有哪些需要特別關(guān)注和解決的問(wèn)題。

        1 Python與數(shù)據(jù)結(jié)構(gòu)

        數(shù)據(jù)結(jié)構(gòu)課程大約于20世紀(jì)70年代從發(fā)達(dá)國(guó)家的計(jì)算機(jī)科學(xué)系起步,最初使用偽代碼討論和分析,相關(guān)教學(xué)和教材很大程度上受到文獻(xiàn)[2]的影響。隨著高級(jí)語(yǔ)言的廣泛使用,數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)逐漸轉(zhuǎn)向以高級(jí)語(yǔ)言作為討論工具。文獻(xiàn)[3]中提出的觀點(diǎn)被廣泛接受,對(duì)數(shù)據(jù)結(jié)構(gòu)課程的發(fā)展產(chǎn)生了很大影響。一時(shí)之間,絕大多數(shù)數(shù)據(jù)結(jié)構(gòu)課程都轉(zhuǎn)向采用Pascal語(yǔ)言。后來(lái),抽象數(shù)據(jù)類(lèi)型(ADT)的思想逐漸被數(shù)據(jù)結(jié)構(gòu)教材和課程所采用。20世紀(jì)90年代以后,隨著C語(yǔ)言的使用日益廣泛和Pascal日漸衰落,越來(lái)越多的國(guó)內(nèi)外高校改用C語(yǔ)言教授數(shù)據(jù)結(jié)構(gòu)課程,而后又有其他語(yǔ)言逐漸加入。目前,數(shù)據(jù)結(jié)構(gòu)課程使用的主要語(yǔ)言包括C、C++、Java等。

        隨著越來(lái)越多的高校開(kāi)始使用Python講授第一門(mén)程序設(shè)計(jì)課程,用Python討論數(shù)據(jù)結(jié)構(gòu)的問(wèn)題也被提上議事日程。為了深入探討有關(guān)情況,我們首先回答幾個(gè)經(jīng)常聽(tīng)到的問(wèn)題,網(wǎng)上對(duì)于這些問(wèn)題也有許多討論。

        第1個(gè)常見(jiàn)的問(wèn)題:Python的表和字典就是數(shù)據(jù)結(jié)構(gòu)課程中討論的典型數(shù)據(jù)結(jié)構(gòu),學(xué)習(xí)Python編程之后就已經(jīng)會(huì)用了,還需要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)課程嗎?我們的回答是,當(dāng)然需要。一方面,數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)科學(xué)知識(shí)體系中最重要的環(huán)節(jié)之一,其核心問(wèn)題是討論數(shù)據(jù)組織和管理的思想和技術(shù)、計(jì)算復(fù)雜性的概念和分析等,這些都是計(jì)算機(jī)科學(xué)技術(shù)領(lǐng)域最重要的基礎(chǔ)知識(shí),而表、字典等只是傳播上述核心知識(shí)和技術(shù)的媒介,是課程所討論的典型實(shí)例,Python的程序設(shè)計(jì)基礎(chǔ)和相關(guān)課程既不能提供上述重要知識(shí)和相關(guān)技術(shù),又不可能代替數(shù)據(jù)結(jié)構(gòu)課程;另一方面,要用好Python語(yǔ)言并發(fā)揮其作用,必須理解數(shù)據(jù)結(jié)構(gòu)的一般性知識(shí)和Python的特殊情況,編程語(yǔ)言是非常復(fù)雜的工具,編程是最復(fù)雜的工作,缺乏對(duì)所用語(yǔ)言的理解是做不好編程的,數(shù)據(jù)結(jié)構(gòu)課程則能幫助學(xué)生深入理解Python的表、字典等組合類(lèi)型。因此,基于Python的數(shù)據(jù)結(jié)構(gòu)課程教學(xué)需要兼顧這兩方面的需求。

        第2個(gè)常見(jiàn)的問(wèn)題:用Python語(yǔ)言討論數(shù)據(jù)結(jié)構(gòu)的可行性。依據(jù)我們的理解和經(jīng)驗(yàn)來(lái)判斷,這種做法確實(shí)可行。目前,國(guó)際上已經(jīng)出版了許多使用Python語(yǔ)言講授數(shù)據(jù)結(jié)構(gòu)相關(guān)內(nèi)容的教材,如在亞馬遜網(wǎng)站上可以查到文獻(xiàn)[4-6],但是國(guó)內(nèi)至今未出版中文翻譯版本。我們已經(jīng)使用Python講授過(guò)幾次數(shù)據(jù)結(jié)構(gòu)課程,并編寫(xiě)出版了相關(guān)教材[1]。此外,還可以找到國(guó)外同行研究這個(gè)問(wèn)題的論文,如文獻(xiàn)[7],也可以找到國(guó)外一些知名高校發(fā)布的有關(guān)使用Python講授CS2的消息[8]。這些情況都說(shuō)明,使用Python講授數(shù)據(jù)結(jié)構(gòu)課程的做法是可行的。當(dāng)然,不同語(yǔ)言有各自的特點(diǎn),應(yīng)用于同一門(mén)課程時(shí),也需要考慮其特點(diǎn),揚(yáng)長(zhǎng)避短。如前所述,這門(mén)課程應(yīng)該是數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)知識(shí)和Python的結(jié)合,用Python講授數(shù)據(jù)結(jié)構(gòu)既有優(yōu)勢(shì),又有劣勢(shì)。

        第3個(gè)常見(jiàn)的問(wèn)題:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)課程對(duì)于使用Python開(kāi)發(fā)程序(軟件)有特殊意義嗎,特別是使用Python語(yǔ)言討論的課程?對(duì)此,我們的回答是肯定的。因?yàn)槌酥v授計(jì)算機(jī)科學(xué)技術(shù)的一般性作用之外,這門(mén)課程還對(duì)提升學(xué)生使用Python工作的能力產(chǎn)生重要影響,主要體現(xiàn)在以下3個(gè)方面。

        (1)有助于學(xué)生理解Python程序的行為,理解怎樣寫(xiě)好Python程序。

        (2)幫助學(xué)生在使用Python編程的過(guò)程中作出正確的設(shè)計(jì)選擇,并為這些選擇提供本質(zhì)性的判斷根據(jù)。例如,保存一批數(shù)據(jù)時(shí),選用標(biāo)準(zhǔn)類(lèi)型的表或字典,還是自己開(kāi)發(fā)專(zhuān)門(mén)結(jié)構(gòu),并知悉原因;向表中加入元素應(yīng)該用哪個(gè)操作等。

        (3)有助于識(shí)別程序中的效率陷阱。Python程序中很容易創(chuàng)建各種復(fù)雜數(shù)據(jù)對(duì)象,這種便利如果使用不當(dāng),很可能?chē)?yán)重影響程序的效率和可用性。

        2 用Python講授數(shù)據(jù)結(jié)構(gòu)課程的目標(biāo)、優(yōu)勢(shì)和困難

        基于Python的數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)目標(biāo)應(yīng)包含以下3方面。

        (1)清晰介紹數(shù)據(jù)結(jié)構(gòu)課程的基本理論內(nèi)容。這些內(nèi)容與具體語(yǔ)言無(wú)關(guān),包括數(shù)據(jù)結(jié)構(gòu)和算法的基本概念,相應(yīng)的理論問(wèn)題(復(fù)雜性等),數(shù)據(jù)結(jié)構(gòu)的基本構(gòu)造技術(shù),各種典型數(shù)據(jù)結(jié)構(gòu)的原理、性質(zhì)、基本使用和基本實(shí)現(xiàn)技術(shù)等。

        (2)基于Python語(yǔ)言討論數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)技術(shù),既要體現(xiàn)一般的數(shù)據(jù)結(jié)構(gòu)技術(shù),又要充分發(fā)揮Python的優(yōu)點(diǎn),展示有用的設(shè)計(jì)和Python編程技術(shù),還應(yīng)說(shuō)明在Python程序里使用數(shù)據(jù)結(jié)構(gòu)解決問(wèn)題時(shí)可能遇到的問(wèn)題、分析和思考的方法、解決問(wèn)題的方法等。

        (3)認(rèn)真分析Python語(yǔ)言中的各種組合數(shù)據(jù)結(jié)構(gòu)(作為理論數(shù)據(jù)結(jié)構(gòu)的具體實(shí)現(xiàn))的想法、具體設(shè)計(jì)和實(shí)現(xiàn),各方面的實(shí)際性質(zhì)、優(yōu)缺點(diǎn)、使用時(shí)需要注意的問(wèn)題等。

        用Python講授數(shù)據(jù)結(jié)構(gòu)課程有許多優(yōu)勢(shì),最重要的優(yōu)勢(shì)來(lái)自Python語(yǔ)言設(shè)計(jì)的很多特征可以在數(shù)據(jù)結(jié)構(gòu)課程中發(fā)揮作用。

        (1)Python的面向?qū)ο髾C(jī)制可以作為ADT(抽象數(shù)據(jù)類(lèi)型)的具體體現(xiàn),用于實(shí)現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)和支持封裝。類(lèi)定義中的實(shí)例方法可用于實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)操作;繼承用于擴(kuò)充已定義的部件,實(shí)現(xiàn)擴(kuò)充(或部分修改)的新數(shù)據(jù)結(jié)構(gòu)等。

        (2)Python的生成器函數(shù)可用于實(shí)現(xiàn)各種容器結(jié)構(gòu)都需要的遍歷操作,使自定義的容器類(lèi)型可以平滑地納入Python語(yǔ)言的基本編程模型。

        (3)Python變量、參數(shù)和對(duì)象屬性都沒(méi)有類(lèi)型限制,因此Python里定義的函數(shù)和對(duì)象方法都具有通用性,能操作任何滿足需要的對(duì)象且只要求被操作對(duì)象提供所需操作,自定義數(shù)據(jù)結(jié)構(gòu)能保存任何類(lèi)型的數(shù)據(jù)元素。

        (4)由于上述通用性,教科書(shū)里、課堂上和學(xué)生工作中開(kāi)發(fā)的各種組件,如函數(shù)、類(lèi)等,只要定義合適,就能作為輔助性數(shù)據(jù)結(jié)構(gòu)直接用于后續(xù)工作,用于實(shí)現(xiàn)更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和操作,或直接支持?jǐn)?shù)據(jù)結(jié)構(gòu)的應(yīng)用。這使學(xué)生能看到從簡(jiǎn)單到復(fù)雜的軟件開(kāi)發(fā)過(guò)程,看到自己編寫(xiě)的程序能真正得到應(yīng)用,更有成就感。

        用Python講授數(shù)據(jù)結(jié)構(gòu)也存在一些困難,主要困難源自Python語(yǔ)言的高級(jí)和抽象。做算法(程序)的復(fù)雜性分析時(shí),首先要確定基本操作和基本數(shù)據(jù)單元,它們必須具有O(1)復(fù)雜性。在C語(yǔ)言等較低級(jí)的語(yǔ)言里,基本操作都是O(1)操作;Python作為比較高級(jí)的語(yǔ)言,屏蔽了重要的實(shí)現(xiàn)細(xì)節(jié),表面上看似很簡(jiǎn)單的操作,內(nèi)部實(shí)現(xiàn)可能很復(fù)雜,如==判斷、整數(shù)加法等,都不一定是O(1)操作。組合數(shù)據(jù)類(lèi)型的廣泛使用,進(jìn)一步增加了復(fù)雜性分析的難度,用Python講授課程時(shí)需要特別注意這些問(wèn)題。

        3 用Python講授數(shù)據(jù)結(jié)構(gòu)課程的實(shí)踐和體會(huì)

        我們用自己編寫(xiě)的材料講授了幾次數(shù)據(jù)結(jié)構(gòu)課程,教學(xué)效果總體上是非常正面的:學(xué)生反應(yīng)比較積極,做作業(yè)也很有興趣,完成了不少有一定復(fù)雜性的工作。

        與基于C語(yǔ)言的課程相比,有關(guān)數(shù)據(jù)結(jié)構(gòu)理論的抽象討論可以基本照搬。有關(guān)抽象數(shù)據(jù)類(lèi)型的介紹可以更有針對(duì)性,ADT描述可以參考Python類(lèi)定義做些調(diào)整,如增加self參數(shù)等。前面章節(jié)實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)可以直接用于后面數(shù)據(jù)結(jié)構(gòu)或應(yīng)用問(wèn)題,看到做出的東西有實(shí)用性,學(xué)生也覺(jué)得更親切。如果出現(xiàn)基本數(shù)據(jù)結(jié)構(gòu)不能滿足需要的情況,也很容易擴(kuò)充調(diào)整,如實(shí)現(xiàn)哈夫曼樹(shù)時(shí),要比較兩棵二叉樹(shù)根數(shù)據(jù)的大小,可以用優(yōu)先隊(duì)列保存二叉樹(shù)要檢查隊(duì)列元素個(gè)數(shù)。實(shí)現(xiàn)這種功能的基礎(chǔ)是面向?qū)ο蟮睦^承,以及函數(shù)和數(shù)據(jù)結(jié)構(gòu)的通用性。

        目前,數(shù)據(jù)結(jié)構(gòu)教材上討論的內(nèi)容和習(xí)題,用Python來(lái)解決大多比較方便,程序代碼比用C語(yǔ)言要短,概念和結(jié)構(gòu)更清晰,尤其是能更好地反映算法的精髓,有利于學(xué)生學(xué)習(xí)。數(shù)據(jù)結(jié)構(gòu)課程中一些不好用C語(yǔ)言處理的問(wèn)題,在基于Python的課程中則能很自然地處理,如操作錯(cuò)誤的處理——??諘r(shí)彈出可以用Python異常機(jī)制描述,符合軟件實(shí)踐的需要,既規(guī)范又方便。

        4 關(guān)于課程中幾個(gè)具體問(wèn)題的考慮和建議

        數(shù)據(jù)結(jié)構(gòu)課程的內(nèi)容和結(jié)構(gòu)成型于20世紀(jì)70~80年代,且在那之后沒(méi)有太大變化,國(guó)內(nèi)也出版了一些使用比較廣泛的教材。隨著軟件領(lǐng)域研究和實(shí)踐的發(fā)展,有些過(guò)去不受重視的問(wèn)題現(xiàn)在變得非常重要,一些理論觀點(diǎn)和方法也需要得到重視。

        4.1 正則表達(dá)式和模式匹配

        數(shù)據(jù)結(jié)構(gòu)課程應(yīng)該加入有關(guān)正則表達(dá)式的討論。實(shí)際上,正則表達(dá)式才是當(dāng)前業(yè)界廣泛使用的模式匹配概念的基礎(chǔ),而且已成為實(shí)際軟件開(kāi)發(fā)中的重要工具。正則表達(dá)式這個(gè)概念特別應(yīng)該納入專(zhuān)業(yè)教學(xué),且比較適合放入數(shù)據(jù)結(jié)構(gòu)課程,它既有數(shù)據(jù)結(jié)構(gòu)問(wèn)題,又有算法問(wèn)題。我們編寫(xiě)的教材中,“字符串”一章里介紹了正則表達(dá)式。在Python里處理這個(gè)問(wèn)題比較方便,我們首先應(yīng)該推廣模式匹配概念,引進(jìn)正則表達(dá)式的概念,先介紹簡(jiǎn)化的正則表達(dá)式的匹配算法,再介紹Python的正則表達(dá)式包re。通過(guò)介紹這個(gè)典型正則表達(dá)式包的各個(gè)細(xì)節(jié),幫助學(xué)生了解實(shí)際軟件開(kāi)發(fā)中使用的正則表達(dá)式及其模式匹配功能。

        4.2 動(dòng)態(tài)順序表

        現(xiàn)有教材大多采用固定大小的數(shù)組實(shí)現(xiàn)元素個(gè)數(shù)可變的數(shù)據(jù)結(jié)構(gòu),如順序表。在C語(yǔ)言里這樣做,主要原因是做法比較簡(jiǎn)單,但是在實(shí)際應(yīng)用中,能隨著元素增加而自動(dòng)增大容量的“動(dòng)態(tài)順序表”已是當(dāng)前各種基本類(lèi)型庫(kù)的標(biāo)準(zhǔn)配置。Python標(biāo)準(zhǔn)類(lèi)型list就是動(dòng)態(tài)順序表,動(dòng)態(tài)增長(zhǎng)規(guī)則和性質(zhì)也是與數(shù)據(jù)結(jié)構(gòu)有關(guān)的重要知識(shí)。

        在C語(yǔ)言里實(shí)現(xiàn)動(dòng)態(tài)順序表并不難,但是代碼比較繁瑣;采用動(dòng)態(tài)增長(zhǎng)技術(shù)改造所有可能受容量限制的數(shù)據(jù)結(jié)構(gòu),也會(huì)帶來(lái)一些麻煩。在基于Python的課程或教材中,這個(gè)問(wèn)題則比較容易處理,這主要得益于Python標(biāo)準(zhǔn)類(lèi)型的內(nèi)在功能。

        4.3 分償(平攤,amotized)復(fù)雜性

        傳統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程只討論一次數(shù)據(jù)結(jié)構(gòu)操作的復(fù)雜性,但在當(dāng)前的軟件領(lǐng)域,一系列操作的平均復(fù)雜性也是很重要的概念。這個(gè)概念被稱(chēng)為平攤復(fù)雜性,典型例子是對(duì)動(dòng)態(tài)順序表的尾端插入。如果采用正確的容量擴(kuò)大策略,大多數(shù)操作只有O(1)開(kāi)銷(xiāo),高代價(jià)操作越來(lái)越稀少,而平攤復(fù)雜性仍然是O(1)。按目前數(shù)據(jù)結(jié)構(gòu)課程的討論,在動(dòng)態(tài)順序表的尾部插入操作,最壞情況時(shí)間復(fù)雜性是O(n),但是這樣不僅不能很好地反映該操作的性質(zhì),還不能將其與其他插入?yún)^(qū)分開(kāi)。平攤復(fù)雜性已成為當(dāng)前軟件領(lǐng)域考查數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)的重要指標(biāo),課程中應(yīng)加入這方面內(nèi)容。此外,學(xué)習(xí)Python的數(shù)據(jù)結(jié)構(gòu)也必須理解平攤復(fù)雜性的概念。

        4.4 錯(cuò)誤處理

        專(zhuān)業(yè)基礎(chǔ)課應(yīng)該教給學(xué)生正確的編程理念,現(xiàn)有課程在某些問(wèn)題上沒(méi)有很好地給予處理。當(dāng)前最受重視的問(wèn)題之一是程序安全,其中最主要的問(wèn)題就是正確處理程序運(yùn)行中的錯(cuò)誤,數(shù)據(jù)結(jié)構(gòu)中操作失敗是典型的運(yùn)行時(shí)錯(cuò)誤。對(duì)于這個(gè)問(wèn)題,傳統(tǒng)C語(yǔ)言教材采用的方式或是不理會(huì),或是輸出信息報(bào)錯(cuò),又或是直接調(diào)用exit(1)之類(lèi)語(yǔ)句終止,這些都是錯(cuò)誤做法,實(shí)際程序操作中不能采用。要在C語(yǔ)言中貫徹一套正確并合理的錯(cuò)誤處理理念,會(huì)遇到許多困難,也太繁瑣。新型語(yǔ)言,如Python的異常機(jī)制支持處理運(yùn)行時(shí)錯(cuò)誤,而且很容易使用,能給學(xué)生傳播正確的理念和技術(shù)。

        4.5 面向?qū)ο蠹夹g(shù)的作用

        一方面,我們應(yīng)該在數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)和構(gòu)造中充分展示面向?qū)ο缶幊碳夹g(shù)的作用,說(shuō)明基于已有的類(lèi)擴(kuò)充,通過(guò)繼承、擴(kuò)充、方法覆蓋等,可以非常簡(jiǎn)單方便地解決遇到的問(wèn)題,而不需要重新定義。很多新數(shù)據(jù)結(jié)構(gòu)可以定義為已有數(shù)據(jù)結(jié)構(gòu)的擴(kuò)充,在需要某種輔助性數(shù)據(jù)結(jié)構(gòu),而已有結(jié)構(gòu)不能完全滿足需要時(shí),可以很方便地予以調(diào)整。例如,繼承簡(jiǎn)單鏈接表,定義帶尾指針的鏈接表;繼承簡(jiǎn)單鏈接表,定義循環(huán)鏈接表;繼承簡(jiǎn)單鏈接表及其結(jié)點(diǎn),定義雙向鏈接表的結(jié)點(diǎn)和雙向鏈接表等。

        另一方面,課程中應(yīng)該盡可能實(shí)現(xiàn)通用算法,一種數(shù)據(jù)結(jié)構(gòu)的不同實(shí)現(xiàn)盡可能采用公共接口,這樣能使一組算法應(yīng)用于不同的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)。例如,圖的最常見(jiàn)表示是鄰接矩陣和鄰接表,一種合理的做法是定義兩個(gè)表示圖的類(lèi),它們的內(nèi)部實(shí)現(xiàn)分別采用不同技術(shù),但是提供統(tǒng)一的接口;開(kāi)發(fā)圖算法時(shí),所有算法都基于圖類(lèi)的公共接口來(lái)定義,使這些算法能應(yīng)用于采用不同內(nèi)部表示的圖。采用面向?qū)ο蠹夹g(shù),既方便開(kāi)發(fā)實(shí)例,又可以展示面向?qū)ο蠹夹g(shù)的威力和Python語(yǔ)言的能力,Python的通用性本質(zhì)也起到重要作用。

        5 結(jié)語(yǔ)

        Python語(yǔ)言正越來(lái)越多地應(yīng)用在計(jì)算機(jī)科學(xué)技術(shù)基礎(chǔ)課程甚至是第一門(mén)課程中,這種安排必然會(huì)對(duì)計(jì)算機(jī)專(zhuān)業(yè)的其他課程產(chǎn)生影響。在研究Python語(yǔ)言的教學(xué)使用和生態(tài)培育時(shí),必須關(guān)注這些問(wèn)題。如果我們把Python作為計(jì)算機(jī)科學(xué)技術(shù)專(zhuān)業(yè)第一門(mén)課程的工作語(yǔ)言,就必須研究如何用Python教授數(shù)據(jù)結(jié)構(gòu)課程;如果采用其他語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)的課程只能推后,還須補(bǔ)充其他語(yǔ)言的知識(shí),這也會(huì)對(duì)整個(gè)專(zhuān)業(yè)教育產(chǎn)生影響。我們基于教學(xué)經(jīng)驗(yàn)和思考,討論了基于Python的數(shù)據(jù)結(jié)構(gòu)課程的內(nèi)容設(shè)計(jì)和教學(xué)目標(biāo),研究了以Python作為數(shù)據(jù)結(jié)構(gòu)課程基礎(chǔ)的實(shí)際可行性和實(shí)施中的主要關(guān)注點(diǎn),分析了用Python開(kāi)設(shè)數(shù)據(jù)結(jié)構(gòu)課程的優(yōu)勢(shì)和難點(diǎn),以及一些重要問(wèn)題的處理方法。

        國(guó)內(nèi)各院校在使用C語(yǔ)言教授數(shù)據(jù)結(jié)構(gòu)課程方面已經(jīng)有了很多積累,包括被廣泛使用的教材、練習(xí)題目以及各種教學(xué)支持系統(tǒng)的建設(shè)。改用Python教授基礎(chǔ)課程時(shí),這些方面基本是空白。如果有更多院校選擇這樣的課程體系,就需要更多人力和物力的投入;開(kāi)展相關(guān)建設(shè),需要更多人參與,課程內(nèi)容和教材也需要進(jìn)一步建設(shè)、修改和完善。

        [1]AhoAV,HopcroftJE,JeffreyD.Ullman:Thedesignandanalysisofcomputeralgorithms[M].Boston:Addison-Wesley,1974.

        [2]WirthN.Algorithms+datastructures=programs[M].UpperSaddleRiver:Prentice-Hall,1976.

        [3]MillerBN,RanumDL.ProblemsolvingwithalgorithmsanddatastructuresusingPython[M].2ed.Franklin:Beedleamp;Associates,2011.[4]BakaB.Pythondatastructuresandalgorithms[M].Birmingham:PacktPublishing,2017.

        [5]LeeKD,HubbardS.DatastructuresandAlgorithmswithPython(undergraduatetopicsincomputerscience)[M].Berlin:Springer,

        20 15.

        [6]裘宗燕.數(shù)據(jù)結(jié)構(gòu)和算法:Python語(yǔ)言描述[M].北京:機(jī)械工業(yè)出版社,2016.

        [7]AgarwalKK.PythonforCS1,CS2andbeyond[J].ConsortiumforComputingSciencesinColleges,2005,20(4):262-270.

        猜你喜歡
        數(shù)據(jù)結(jié)構(gòu)復(fù)雜性講授
        淺談高職英語(yǔ)精讀講授中的文化導(dǎo)入
        PFNA與DHS治療股骨近端復(fù)雜性骨折的效果對(duì)比
        簡(jiǎn)單性與復(fù)雜性的統(tǒng)一
        科學(xué)(2020年1期)2020-08-24 08:07:56
        思政課教學(xué)中如何做到講授“活”?
        應(yīng)充分考慮醫(yī)院管理的復(fù)雜性
        “翻轉(zhuǎn)課堂”教學(xué)模式的探討——以《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)為例
        高職高專(zhuān)數(shù)據(jù)結(jié)構(gòu)教學(xué)改革探討
        直腸腔內(nèi)超聲和MRI在復(fù)雜性肛瘺診斷中的對(duì)比分析
        TRIZ理論在“數(shù)據(jù)結(jié)構(gòu)”多媒體教學(xué)中的應(yīng)用
        《數(shù)據(jù)結(jié)構(gòu)》教學(xué)方法創(chuàng)新探討
        河南科技(2014年5期)2014-02-27 14:08:57
        国产精品无需播放器| 日韩精品在线免费视频| 国产精品成熟老女人| 日韩内射美女人妻一区二区三区 | 内射交换多p国产| 亚洲AV日韩AV高潮喷潮无码| 亚洲天堂av一区二区三区不卡| 噜噜综合亚洲av中文无码| 欧洲人妻丰满av无码久久不卡| 亚洲国产一区二区三区最新| 亚洲综合国产精品一区二区| 秋霞在线视频| 每天更新的免费av片在线观看| 国产av无码专区亚洲草草| 午夜视频一区二区三区四区| 成在线人av免费无码高潮喷水 | 天堂网www资源在线| 日本夜爽爽一区二区三区| 久久久久无码精品国| 中文字幕av熟女中文av| 最新国产福利在线观看精品| 激情婷婷六月| 一本久久伊人热热精品中文| 亚洲国产av自拍一区| 桃花色综合影院| 亚洲国产成人精品激情| 亚洲一区二区三区在线看| 国产又粗又猛又黄又爽无遮挡| 就去吻亚洲精品欧美日韩在线| 性色av成人精品久久| 中国人在线观看免费的视频播放| 真人新婚之夜破苞第一次视频| 国产成人一区二区三区免费观看| 人妻少妇中文字幕专区| 国产夫妇肉麻对白| 大地资源网更新免费播放视频| 日本黄色一区二区三区视频 | 色婷婷激情在线一区二区三区| 美腿丝袜在线一区二区| 成人区人妻精品一熟女| 不卡a v无码在线|