• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      計(jì)算機(jī)專(zhuān)業(yè)程序設(shè)計(jì)語(yǔ)言類(lèi)課程教學(xué)改革的思考

      2017-05-31 13:35:00江南王春枝康瑞華
      計(jì)算機(jī)教育 2017年5期
      關(guān)鍵詞:教學(xué)過(guò)程課程體系

      江南+王春枝+康瑞華

      摘 要:針對(duì)計(jì)算機(jī)專(zhuān)業(yè)程序設(shè)計(jì)語(yǔ)言類(lèi)課程體系設(shè)置單一、教學(xué)過(guò)程較為僵化、重技能而輕計(jì)算思維等問(wèn)題,提出增加函數(shù)式編程語(yǔ)言課程、適當(dāng)調(diào)整課程內(nèi)容的講授次序、積極引導(dǎo)學(xué)生深入理解程序設(shè)計(jì)語(yǔ)言等措施。

      關(guān)鍵詞:程序設(shè)計(jì)語(yǔ)言;課程體系;教學(xué)過(guò)程;計(jì)算思維

      文章編號(hào):1672-5913(2017)05-0042-03

      中圖分類(lèi)號(hào):G642

      1 程序設(shè)計(jì)語(yǔ)言類(lèi)課程的教學(xué)現(xiàn)狀及問(wèn)題

      計(jì)算機(jī)學(xué)科知識(shí)結(jié)構(gòu)更新快,其中,程序設(shè)計(jì)語(yǔ)言在短短的幾十年間經(jīng)歷了較大變化。語(yǔ)言類(lèi)課程是計(jì)算機(jī)學(xué)科的專(zhuān)業(yè)基礎(chǔ)課程,其學(xué)習(xí)效果直接影響其他后續(xù)課程。當(dāng)前語(yǔ)言類(lèi)課程教學(xué)主要面臨以下問(wèn)題。

      1.1 課程體系設(shè)置單一

      國(guó)內(nèi)高校計(jì)算機(jī)專(zhuān)業(yè)的程序設(shè)計(jì)語(yǔ)言類(lèi)課程大多是過(guò)程式或者面向?qū)ο蟮拿钍骄幊陶Z(yǔ)言,課程體系設(shè)置單一。不可否認(rèn),這類(lèi)語(yǔ)言無(wú)論是從學(xué)科性還是有用性上講,都是合適的。然而,程序設(shè)計(jì)語(yǔ)言不僅僅是這類(lèi)命令式語(yǔ)言,它還包括如ML、Haskell這樣經(jīng)典的函數(shù)式編程語(yǔ)言,或者如兼顧面向?qū)ο蠛秃瘮?shù)式的Scala語(yǔ)言等。從某種意義上講,函數(shù)式編程能夠更大程度地鍛煉計(jì)算思維[1]。在多核并行程序設(shè)計(jì)已經(jīng)被推到前沿的今天,命令式編程語(yǔ)言天生的缺陷使得構(gòu)造并行編程模型變得非常復(fù)雜,而函數(shù)式編程在經(jīng)歷數(shù)十年的發(fā)展之后,終于不再局限于實(shí)驗(yàn)室的理論研究。事實(shí)上,如果不懂得函數(shù)式編程,Google不可能創(chuàng)造出MapReduce。

      1.2 教學(xué)過(guò)程僵化

      程序設(shè)計(jì)語(yǔ)言類(lèi)課程的傳統(tǒng)講授是按照編程語(yǔ)言類(lèi)教材的典型撰寫(xiě)次序,先講常量、變量、數(shù)據(jù)類(lèi)型等,再講表達(dá)式、語(yǔ)句等,再比較復(fù)雜的語(yǔ)言特點(diǎn),這些花費(fèi)了較多時(shí)間,最后可能不再有多余的時(shí)間剖析該語(yǔ)言的內(nèi)建庫(kù)函數(shù)或者類(lèi),更少涉及該門(mén)課程與后續(xù)課程的銜接關(guān)系。這種傳統(tǒng)的講授方式針對(duì)第一門(mén)程序設(shè)計(jì)語(yǔ)言課程的教學(xué),特別對(duì)那些沒(méi)有接觸過(guò)編程語(yǔ)言的學(xué)生來(lái)講,可能是一種較好的方式[2]。然而,對(duì)于第二門(mén)程序設(shè)計(jì)語(yǔ)言的授課,按照這種按部就班的教學(xué)過(guò)程推進(jìn)教學(xué)進(jìn)度時(shí),由于在較長(zhǎng)一段教學(xué)活動(dòng)中所講授的都是孤立的語(yǔ)法點(diǎn),學(xué)生看不到一個(gè)較為完整的應(yīng)用實(shí)例,也不了解這門(mén)課程與其他課程之間的貫通,容易產(chǎn)生厭學(xué)的心理,也很難體會(huì)程序語(yǔ)言的設(shè)計(jì)藝術(shù)。

      1.3 重編程技能,輕計(jì)算思維

      針對(duì)程序設(shè)計(jì)語(yǔ)言類(lèi)課程實(shí)踐性特別強(qiáng)的特點(diǎn),許多教改措施都是針對(duì)如何提高學(xué)生的工程應(yīng)用實(shí)踐技能的[2-3],如采用案例化、任務(wù)驅(qū)動(dòng)、項(xiàng)目驅(qū)動(dòng)等方式。編程技術(shù)固然重要,然而計(jì)算思維比單純技術(shù)更加重要。培養(yǎng)學(xué)生以計(jì)算機(jī)的方式進(jìn)行思考和解決問(wèn)題,讓他們認(rèn)識(shí)到程序是思想的表現(xiàn)形式,最終能夠通過(guò)語(yǔ)言來(lái)表達(dá)思考與設(shè)計(jì),并能理解這門(mén)語(yǔ)言設(shè)計(jì)和實(shí)現(xiàn)的長(zhǎng)處、不足、限制等。為了達(dá)到這個(gè)目標(biāo),需要引導(dǎo)學(xué)生深入理解編程語(yǔ)言本身。

      2 教學(xué)改革措施

      2.1 增設(shè)函數(shù)式編程語(yǔ)言課程

      函數(shù)式編程模型早在面向?qū)ο蟾拍畛霈F(xiàn)之前就已經(jīng)存在了,它的核心是lambda演算。由于其語(yǔ)法不如命令式語(yǔ)言的語(yǔ)法直觀易懂,許多初次接觸函數(shù)式編程的人常常不知所措,會(huì)覺(jué)得難以理解。然而,這種難以理解性與熟悉程度相關(guān)。近20年的課程改革中,因?yàn)榉N種原因,程序設(shè)計(jì)語(yǔ)言類(lèi)課程體系幾乎完全拋棄了函數(shù)式程序設(shè)計(jì)語(yǔ)言。如今,多核時(shí)代的興起,函數(shù)式程序代碼的簡(jiǎn)潔性使得它在并發(fā)應(yīng)用領(lǐng)域綻放光彩。雖然實(shí)用性是我們應(yīng)當(dāng)考慮的一個(gè)方面,但是從培養(yǎng)學(xué)生計(jì)算思維以及從編程語(yǔ)言本身的研究方面,增設(shè)函數(shù)式編程語(yǔ)言課程是很有必要的。

      常用的函數(shù)式編程語(yǔ)言或者具備函數(shù)式編程語(yǔ)言特點(diǎn)的編程語(yǔ)言包括Haskell、ML、OCaml 、Scala等。依據(jù)需要可以選擇不同的函數(shù)式編程語(yǔ)言:如果傾向于編程語(yǔ)言本身的理解,可以選擇純函數(shù)式的ML、Haskell,或者OCaml;如果傾向于并行分布式程序的開(kāi)發(fā),可以選擇結(jié)合了面向?qū)ο蠛秃瘮?shù)式特點(diǎn)的Scala語(yǔ)言,它兼容Java。此外,Java 8的lambda表達(dá)式也是一個(gè)不錯(cuò)的學(xué)習(xí)函數(shù)式編程的選擇。

      2.2 適當(dāng)調(diào)整講授內(nèi)容的次序

      以Java程序設(shè)計(jì)語(yǔ)言的教學(xué)為例,按照常規(guī)教材的編寫(xiě)次序,Java的教學(xué)內(nèi)容通常是先講變量、類(lèi)型、表達(dá)式和語(yǔ)句,然后是數(shù)組,接著是類(lèi)和對(duì)象、繼承等。在實(shí)踐中我們對(duì)講授內(nèi)容的次序進(jìn)行了調(diào)整:在對(duì)Java語(yǔ)言作了初步介紹之后,緊接著講解對(duì)象的創(chuàng)建和使用,見(jiàn)表1。表1第2行的內(nèi)容不再放在講解了類(lèi)的定義之后。這個(gè)調(diào)整出于兩方面的考慮:一方面,讓學(xué)生盡快建立對(duì)象的概念,知道怎么使用對(duì)象;另一方面,數(shù)組在Java程序設(shè)計(jì)語(yǔ)言中視為對(duì)象,因此,講解了如何使用對(duì)象之后有利于數(shù)組的講解。而類(lèi)的定義涉及較多語(yǔ)法知識(shí),在講解了如何使用對(duì)象、變量、類(lèi)型、表達(dá)式和語(yǔ)句之后,引導(dǎo)學(xué)生考慮這個(gè)問(wèn)題——我們能不能按照自己的設(shè)計(jì)來(lái)創(chuàng)建對(duì)象呢,于是開(kāi)始講解類(lèi)的定義,見(jiàn)表1第5行。

      為了講解如何使用對(duì)象,首先選擇兩個(gè)常用的Java內(nèi)建類(lèi)——字符串String和System,針對(duì)已經(jīng)學(xué)習(xí)了C語(yǔ)言程序設(shè)計(jì)的學(xué)生,從教學(xué)效果上看,盡管學(xué)生還沒(méi)有接觸到Java的各種語(yǔ)法規(guī)則,但是他們?nèi)匀唤邮芰恕皩?duì)象”這個(gè)知識(shí)點(diǎn)的講授。更重要的是,他們建立了對(duì)象的初步印象,了解了Java與C的不同,并在一定程度上激發(fā)了學(xué)生的學(xué)習(xí)興趣。

      由于Java程序需要使用標(biāo)準(zhǔn)輸出流的方法System.out.print()用于輸出程序的運(yùn)行結(jié)果,學(xué)生就問(wèn):Java程序怎么輸入呢?此時(shí),對(duì)輸入輸出流進(jìn)行較為完整的講解顯然不合適,在講解使用對(duì)象時(shí),我們進(jìn)一步講解如何使用Java的字符緩沖輸入流類(lèi)BufferedReader,直接給出如下板書(shū):

      BufferedReader br = new BufferedReader(

      //BufferedReader需要一個(gè)Reader類(lèi)型的參數(shù)

      //InputStreamReader就是一個(gè)Reader

      new InputStreamReader(

      //InputStreamReader需要一個(gè)InputStream類(lèi)型的參//數(shù),System.in就是一個(gè)InputStream

      System.in));// System.in用于接受鍵盤(pán)的輸入

      br.readLine(); //BufferedReader的readLine

      //方法讀入一行

      以上這段代碼稍顯復(fù)雜,學(xué)生在課余可以仔細(xì)研究并進(jìn)行試驗(yàn)。實(shí)踐表明,這些Java常用內(nèi)建類(lèi)的使用在教學(xué)初期給出時(shí),不但沒(méi)有造成學(xué)生的困惑和畏懼,反而提升了學(xué)生的學(xué)習(xí)熱情。

      2.3 引導(dǎo)學(xué)生深入理解程序設(shè)計(jì)語(yǔ)言

      程序設(shè)計(jì)語(yǔ)言類(lèi)課程對(duì)于培養(yǎng)學(xué)生的計(jì)算思維非常重要,需要學(xué)生深入理解程序設(shè)計(jì)語(yǔ)言本身的設(shè)計(jì)與實(shí)現(xiàn),而不僅僅是學(xué)習(xí)單純的語(yǔ)法。

      通常學(xué)生因其視野的局限性和課時(shí)的限制,無(wú)法深入學(xué)習(xí)一門(mén)程序設(shè)計(jì)語(yǔ)言。教師在授課時(shí)應(yīng)該找機(jī)會(huì)引導(dǎo)學(xué)生去深入理解。通常,語(yǔ)言設(shè)計(jì)和實(shí)現(xiàn)者提供了API文檔和源碼,這些是深入理解一門(mén)編程語(yǔ)言最直接也是非常好的參考資料。如果學(xué)生能夠養(yǎng)成查看API的習(xí)慣,無(wú)疑能夠促進(jìn)對(duì)語(yǔ)言的認(rèn)識(shí)和理解。以引用類(lèi)型變量的講解為例,假設(shè)變量p引用的是一個(gè)Person類(lèi)型的對(duì)象,變量s引用的是一個(gè)String字符串對(duì)象。System.out.print(p)輸出結(jié)果是代表對(duì)象地址的哈希碼,而System.out.print(s)輸出了一個(gè)字符串。這是為什么呢?同時(shí),有學(xué)生就會(huì)提出疑問(wèn):System.out.print(p)是否可以直接輸出p所引用的Person對(duì)象的成員值,如姓名和年齡等,而System.out.print(s)是否可以輸出這個(gè)字符串對(duì)象的地址哈希值?在這個(gè)過(guò)程中,可以引導(dǎo)學(xué)生逐步查找對(duì)應(yīng)的API,如圖1所示。最后可以進(jìn)一步查看Object類(lèi)和String類(lèi)對(duì)應(yīng)方法的實(shí)現(xiàn)源碼。知道了這個(gè)思路后,學(xué)生豁然開(kāi)朗,開(kāi)始著手解決問(wèn)題。

      在教學(xué)實(shí)踐中,我們常常鼓勵(lì)學(xué)生按照這種方法去找解決思路,而不是直接給出答案。得益于Java的開(kāi)源,在Java程序設(shè)計(jì)語(yǔ)言的教學(xué)活動(dòng)中,我們也鼓勵(lì)學(xué)生查看javac編譯器或者JVM的即時(shí)編譯器的實(shí)現(xiàn)源碼。學(xué)生通過(guò)這種學(xué)習(xí)方式,在長(zhǎng)期使用一門(mén)程序設(shè)計(jì)語(yǔ)言后,最終能夠駕馭語(yǔ)言,表達(dá)類(lèi)似計(jì)算機(jī)方式的思考與設(shè)計(jì)。

      3 結(jié) 語(yǔ)

      在兼顧學(xué)科性和社會(huì)有用性方面,我們一直致力于計(jì)算機(jī)專(zhuān)業(yè)程序設(shè)計(jì)語(yǔ)言類(lèi)課程的教學(xué)改革。結(jié)合教學(xué)實(shí)踐以及對(duì)計(jì)算機(jī)專(zhuān)業(yè)程序設(shè)計(jì)語(yǔ)言類(lèi)課程如何開(kāi)展教學(xué)的長(zhǎng)期思考,我們針對(duì)存在的問(wèn)題,給出了相應(yīng)的解決辦法,并作了初步嘗試,取得了一定的效果。程序設(shè)計(jì)語(yǔ)言類(lèi)課程的教學(xué)任重道遠(yuǎn),我們應(yīng)該投入熱情,積極摸索和實(shí)踐,總結(jié)經(jīng)驗(yàn)教訓(xùn),使程序設(shè)計(jì)語(yǔ)言類(lèi)課程體系更趨于合理,不斷提高教學(xué)質(zhì)量。

      參考文獻(xiàn):

      [1] 車(chē)萬(wàn)翔, 蘇小紅, 袁永峰, 等. 計(jì)算機(jī)專(zhuān)業(yè)高級(jí)語(yǔ)言程序設(shè)計(jì)課程改革探索[J]. 計(jì)算機(jī)教育, 2014(7): 56-58.

      [2] 李東明, 趙偉. Java語(yǔ)言課程實(shí)踐教學(xué)實(shí)踐[J]. 計(jì)算機(jī)教育, 2011(13): 122-125.

      [3] 魯紅英, 肖思和, 孫淑霞.“C/C++語(yǔ)言程序設(shè)計(jì)”課程教學(xué)改革與實(shí)踐[J]. 計(jì)算機(jī)教育, 2013(7): 95-98.

      [4] Igoe T. Stop teaching programming, start teaching computational thinking [EB/OL]. [2016-04-05]. http://makezine.com/2016/04/05/stop-teaching-programming-start-teaching-computational-thought/.

      (編輯:彭遠(yuǎn)紅)

      猜你喜歡
      教學(xué)過(guò)程課程體系
      以創(chuàng)新課程體系引領(lǐng)學(xué)生發(fā)展
      民法課程體系的改進(jìn)和完善思路*——以中國(guó)政法大學(xué)的民法課程體系為例
      初中歷史教學(xué)中學(xué)生學(xué)習(xí)興趣的有效培養(yǎng)策略分析
      東方教育(2016年16期)2016-11-25 03:16:42
      多方位選拔與培養(yǎng)網(wǎng)絡(luò)綜合布線技能競(jìng)賽人才
      淺談科技英語(yǔ)教學(xué)
      東方教育(2016年17期)2016-11-23 09:34:01
      淺談高校乒乓球教學(xué)過(guò)程中的問(wèn)題及對(duì)策
      欣賞教育在中學(xué)化學(xué)教學(xué)中的實(shí)施
      基于SPC技術(shù)的課堂教學(xué)質(zhì)量監(jiān)控系統(tǒng)研究
      加強(qiáng)青少年中醫(yī)傳統(tǒng)文化教育的必要性及其課程體系構(gòu)建
      論普通高校國(guó)防教育課程體系的構(gòu)建
      偃师市| 昂仁县| 清流县| 咸丰县| 都江堰市| 开封市| 金门县| 大石桥市| 彭州市| 太仆寺旗| 稷山县| 含山县| 政和县| 顺昌县| 沙坪坝区| 普格县| 肇东市| 六枝特区| 且末县| 色达县| 乌鲁木齐县| 朝阳区| 焉耆| 涡阳县| 广安市| 顺义区| 图们市| 湖北省| 津南区| 沁阳市| 那坡县| 蚌埠市| 葫芦岛市| 嘉兴市| 荥阳市| 遵化市| 庄浪县| 蕲春县| 留坝县| 鹿邑县| 清河县|