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

        ?

        程序設計類課程的層次化教學模式研究與實踐

        2013-01-01 00:00:00胡明曉劉海霞勵龍昌
        計算機時代 2013年3期

        摘 要: 高校計算機程序設計類課程內容具有層次化特點,教學內容可作算法、方法學、語法和集成開發(fā)環(huán)境四個層次的劃分,忽視了該特點往往會使學生的學習目標不明確。根據(jù)認知心理學和學習理論,提出了程序設計類課程的層次化教學法,使之無論從行為主義、認知學派,還是建構主義的觀點出發(fā),都能構建一個全新的教育傳播模式,提高了教學效果。此外,以C語言為例,給出了一個具體的實施步驟。

        關鍵詞: 程序設計; 教學法; 層次化; 教育傳播; 學習理論

        中圖分類號:G642.4 文獻標志碼:A 文章編號:1006-8228(2013)03-58-04

        0 引言

        《國家中長期教育改革和發(fā)展規(guī)劃綱要(2010-2020年)》指出,信息技術對社會發(fā)展具有革命性影響,應把信息化能力納入學生的培養(yǎng)目標,作為一項基本技能。對高校學生來講,程序設計類課程是信息化能力培養(yǎng)的一個重要組成部分,在高校的人才培養(yǎng)方案中具有舉足輕重的地位,學生程序設計能力是信息化時代的一個必要素質。

        目前我國高校的計算機公共基礎課,以及部分計算機專業(yè)課,程序設計類課程的開設內容和教學方法大都是“一條龍”式的,即從問題描述、算法的設計、程序流程圖到最后的編譯連接、運行調試,其具體操作是作為一個完整的解決方案介紹給學生的,這種方式對大部分學生未必合適。我們在分析了程序設計類課程內容的層次化特點之后,將教學內容作了橫向的層次劃分,向學生傳遞歸屬層次明確的知識。通過這種內容上的層次化重組和定位,使之無論從行為主義、認知學派還是建構主義的觀點出發(fā),都能構建一個具有全新視角和明顯高效的教育傳播模式,為學習興趣的培養(yǎng)和教學效果的提高奠定了基礎。

        1 國內外研究現(xiàn)狀

        國內外教育研究專家和計算機教育實踐者做了不少的研究和實踐,試圖提高程序設計課程的教學質量,探索程序設計課程教學的新路子。Wulf(2005)從建構主義出發(fā)提出計算機程序設計的新教學法,如主動學習、學徒制、團隊合作,并針對24人以下的小班設計了課前閱讀與評分、課內評論、教師指導下的自主實踐、個體作業(yè)和團隊作業(yè)等具體教學措施[1]。Caspersen和Bennedsen(2007)根據(jù)認知科學和教育心理學中的認知載荷理論、認知學徒制和精加工實例的原理,提出一種模型驅動的面向技能教學的程序設計教學法,其中將程序設計課程涉及的模型分成類間模型、類內模型和算法模型三種[2]。Lui和Kwan等(2004)專門針對弱基礎學生提出一個建構主義的Perform教學方法,該方法在主觀上以達到“全民編程”為設計原則,首先分析了弱基礎學生感情上和認知上的5個弱點,然后提出有針對性的C語言課件開發(fā)指導原則[3]。Zhu和Zhou(2003)提出了方法學優(yōu)先的教學策略,認為像C++這樣的面向對象程序設計語言的教學應該先教方法學再教語言本身,同時給出了方法學的6步驟教學法[4]。莫永華和寇冬泉(2005)以認知心理學為基礎,秉承OSI七層參考模型的分層思想,對學習和記憶的信息加工模型加以改進,提出了一個更加有效的、全景式的人類分層傳播模型,并結合該模式探討相關學習理論[5]。張曉競和陳元琰(2004)做了面向對象程序設計課程的感性化教學探索,提出了橫向列表比較法、縱向特征點延伸法等具體措施[6]。高枚和楊志強等(2005)從教材建設、教學內容的組織以及教學方法等幾方面總結了“C/C++程序設計”課程教學的一些新思路和體會[7]。劉璟(2003)指出,對于程序設計的研究,可以分為四個層次:算法、方法學、語言和工具,其中算法設計與分析的研究在最高層次上[8]。

        在與層次化有關的教學理論或實踐方面,文獻[4]雖涉及了方法學和語言的教學層次關系,但實際的層次不限于這兩個,其中的6個教學步驟也僅限于C++。文獻[5]的人類分層傳播模式雖然提到分層,但并不是教學內容的分層問題,而是教育傳播的分層問題。文獻[8]把算法看成是程序設計的最高的、終極的層次,但在實際的科學研究中,一方面算法最終離不開實現(xiàn)工具的支持,另一方面工具的運用(如軟件包、GPU)也能使許多課題的研究獲得進展和創(chuàng)新,在工程技術領域更不能忽略工具的重要性。包括工具和集成開發(fā)環(huán)境在內的較低層次內容無疑是程序設計的重要教學內容。

        2 層次化教學的思想

        2.1 程序設計類課程內容的四個層次劃分

        計算機科學家沃思(N. Wirth)提出過一個著名的公式:

        數(shù)據(jù)結構+算法=程序

        我國的計算機教育家譚浩強教授改進了這個公式[9],提出:

        程序=算法+數(shù)據(jù)結構+程序設計方法+語言工具和環(huán)境

        他們都是運用層次化的思想觀察程序的本質。我們根據(jù)多年來的教學實踐和總結,程序設計語言課程內容也有一個清晰的層次劃分,它可以分成四個層次:算法、方法學、語法和集成開發(fā)環(huán)境。這四個層次從窄到寬,從抽象到具體,構成一個金字塔,如圖1所示。

        算法(Algorithm)是計算機科學的核心,是指解決問題的結構化流程,是編排計算機指令的策略性步驟。按照D. E. Knuth的定義,算法是一個有窮規(guī)則的集合,其中之規(guī)則規(guī)定了一個解決某一特定類型的問題的運算序列,算法應具有如下五個重要特性:有窮性、確定性、輸入、輸出和可運行性[10]。算法是方法學無關的,也是語言無關的,即算法的設計不依賴于用什么樣的程序設計方法,更不依賴于具體的編程語言。

        方法學(Methodology)是計算機語言的設計方法,比如簡單過程式的程序設計、面向對象的程序設計、并行程序設計和網(wǎng)格計算[11]。以前的Fortran語言和C語言是按照簡單過程式語言設計方法設計出來的語言產品。而現(xiàn)在流行的Java和C++是按照面向對象方法設計出來的語言產品。

        語法(Grammar)描述了組成一個有效程序的符號的順序,語法為理解一個程序提供了重要的信息,同樣也為將它翻譯成目標程序提供了必要的信息[12]。語法包括詞法和句法,語法是學習計算機語言的最基本、學生最直接感知到的內容。程序設計語言不同,直觀地看,就是語法不同。

        集成開發(fā)環(huán)境(Integrated Development Environment, IDE)是為了讓某一種語言的程序代碼能方便地錄入、編輯、存儲、編譯、運行和調試,以及為函數(shù)庫調用、類庫導入、命名約定、硬件相關的優(yōu)化、編譯選項等提供接口的應用軟件[13]。

        這四個層次從上到下構成一個從抽象到具體的概念范疇。上一層次與下一層次都存在一對多的關系。一個算法可以用過程式的語言實現(xiàn),也可以用面向對象的程序實現(xiàn);在同一種方法學(如面向對象)指導下設計的語言有多種(如C++、Java),它們的語法不同;同一種語言(即語法相同)可以有不同的集成開發(fā)環(huán)境,比如C++的IDE有C++ Free,VC++6.0,VC++.net等。

        層次越高,越具長期性,層次越低,越容易被更替和淘汰。優(yōu)秀算法的生命力很強,能生存幾十年、幾百年甚至幾千年;方法學具有計算機發(fā)展的時代特征,一般有幾十年的生存期;計算機語言則不斷推陳出新,有的能用幾十年,有的則幾年后就被人遺忘;而集成開發(fā)環(huán)境更加短命,IDE的新產品不斷出現(xiàn),版本幾年一更新,程序員需要不斷去做升級,跟上變化。

        2.2 層次化教學的心理學和教育學基礎

        層次化教學的思想雖然源自教學實踐,從學習理論的觀點來看也是具有它的理論基礎的。

        關于學習理論,經歷了一個從行為主義,到認知學派,再到建構主義的發(fā)展歷程。最早的行為主義學習理論以華生(Watson)為代表,將巴甫洛夫的條件反射理論應用到教育傳播和學習理論的研究中去。但是行為主義的學習理論過于強調環(huán)境對學習的決定作用,認知主義的學習理論則以學習者主體為主要決定因素,指出學習過程是一個學習者根據(jù)個體的已有知識和外部環(huán)境加工形成新知識的過程。建構主義更加強調學習者的主觀能動性,提出學習是一個發(fā)現(xiàn)過程,而不是一個接受過程,更不是信息傳送過程[14]。

        如果單純從行為主義出發(fā),知識的分層至少能夠提高刺激-反應(S-R)聯(lián)系的形成效率。

        在學習理論的認知學派中,奧蘇伯爾(Ausubel)提出的先進組織者(Advanced Organizers)理論指出,教師的角色是教學內容的組織者,教師的責任是將教學內容進行有意義的組織,使得它成為學生長時記憶的骨架(umbrella),起到提綱挈領的作用,具體的知識將由學生自己填充。教學內容層次化結果就是一種長時記憶的骨架或教學內容的先進組織,這種層次化模式還具有如下優(yōu)點。

        ⑴ 有利于注意(Attention)的參與。注意是感知的重要特征和學習效率的基本保證,在學習過程中,感知到的內容包括知識點本身、知識點所處的層次、教學環(huán)境、教師的態(tài)度以及干擾信息等,層次作為其中一種特意安排的新感知內容引導了注意的方向,強化了知識點本身,使學習者盡早拋棄非相關內容,避免了許多混亂的感知內容進入后續(xù)的加工過程。

        ⑵ 它是概念形成的良好框架。能激活原有的知識(長時記憶),與感知到的新知識經重新編碼成為新的長時記憶,從而使新概念以及該新概念所屬的層次存儲在長時記憶中,由于這些概念在存儲時增加了“所屬層次”的編碼,使以后的檢索和理解更加快速和準確。

        ⑶ 有利工作記憶中塊(Chunk)的信息量提高和加工的效率。工作記憶是一種短時記憶,其中的內容以塊為單位,是學習過程的加工對象,米勒(Miller)認為工作記憶中塊的個數(shù)是相對固定的(約7±2),與塊的信息量(比特數(shù))無關。層次化處理很容易將同層的知識同塊化,從而提高塊的信息量和學習和記憶加工的效率。

        ⑷ 一定程度上迫使教師的隱性知識(Tacit Knowledge)轉換為顯性的可分解的步驟,降低學生的學習難度。例如,C++的#include命令不僅是一條簡單的語句,而且會涉及到后續(xù)的文件和存儲目錄,含有語法和IDE兩層知識,分層次的教學就自然使教師講解#include命令時分解到位,兩層均及,使學生能充分建立該語句的概念和機制。

        建構主義是上世紀末興起的學習理論,重新從學習者的角度分析了認知活動的規(guī)律。基于建構主義觀點提出的教學法層出不窮,關鍵思想是認知的主動性、教師角色從“教導者”轉為“推動者”、教學內容的結構化等等。程序設計類課程的層次化有利于提高認知的主動性,順應學生的偏好和個性,教學內容的結構化程度自然上升,同時從課程內容的四個層次來看,教師客觀上成為四個層次知識傳授的推動者,在算法和IDE兩端層次尤其如此。

        3 層次化的教學方案和實例

        3.1 層次化的教學方案

        基于上述分層次思想,我們提出的總體教學方案是:對計算機程序設計類課程的教學內容做算法、方法學、語法和集成編程環(huán)境四個層次的劃分。以計算機語言課程的四個層次為框架,重新梳理教學內容,分層定位知識點,將各章節(jié)各知識點歸到各個層次。這個分層過程對理論課、實驗課和課程設計同步進行。

        以教學內容的層次化為導引,將層次化的思想貫徹到各個教學環(huán)節(jié),包括教學大綱修訂、教學進度安排、教學手段創(chuàng)新、學生學習引導、考試、課程設計、畢業(yè)設計等。

        值得注意的是,四個層次之間的關系并不是簡單的相加關系,而是抽象與具體、調用與支持的關系。層次化的教學方案并不是說按照算法到IDE或相反方向的順序重新安排教學過程,而是教學過程仍然按照原來的章節(jié)順序,只是在每個章節(jié)、每堂課將所講授內容明確指出所屬的層次,以方便學生的領會、掌握和主動學習。

        此外,傳統(tǒng)的以問題為中心的教學方法是以“問題”為格式塔(Gestalt)進行問題的求解,本方案并不是以“概念”或“操作”為新的格式塔,而是仍以“問題”為初始格式塔,只不過特別強調問題求解過程中學生頓悟(insight)到的各種子格式塔,這些子格式塔對應于它所屬的各個層次,由于有了四個層次的劃分,這里的頓悟已退化為平凡的獲取,需要頓悟的僅為子格式塔內部的頓誤了。

        3.2 實例

        以C/C++語言為例,給出一個具體可操作的教學實施步驟如下。

        第一,劃分計算機語言類課程的四個層次:算法、方法學、語法和集成開發(fā)環(huán)境。分析四個層次在C/C++教學內容中的分布情況。

        ⑴ 算法在本課程中涉及較少,它主要在數(shù)據(jù)結構、算法設計與分析等課程中講授,但不是不能涉及,比如線性搜索的二分法在本課程要講到。

        ⑵ 方法學在本課程中重要且較難接受的內容,它主要包括模塊化的編程思想,面向對象程序設計思想,如封裝、抽象、繼承、多態(tài)等。

        ⑶ 語法內容是本課程的主要內容,包括函數(shù)的定義、聲明和調用,對象和類的定義、類的派生等,占授課內容的70%左右。

        ⑷ 集成開發(fā)環(huán)境在本課程的理論部分占得比較少,但在實驗部分占得比較多,具體就是C編譯環(huán)境、VC的使用方法,Windows應用程序框架的構建方法。

        第二,在C++程序設計的知識點的分層梳理和歸類的基礎上,編排和修訂理論教學內容、實驗教學內容和課程設計教學內容,以所屬層次和學習要求的二維坐標來標注各個知識點。在教學大綱中記錄教學內容及其所屬層次和學習要求。教學大綱的“基本要求”按照圖2例子的格式記錄。

        第三,以層次化思想指導教學活動的各個環(huán)節(jié)。從教學內容上看,第三層次的內容都是教師講授、學生學習的主要內容,但從教學主體和客體的細分角度看,對動手能力強、有志于創(chuàng)業(yè)的學生宜偏重于第四層次的知識,對理論興趣濃厚、科研型的學生宜偏重于第一、第二層次的知識。從課件的制作看,宜在開篇第一課就向學生展示四個層次的“金字塔”圖。從上機實踐看,對IDE的操作知識要及時向學生明確指出,以正確構建認知模式。

        第四,實施一些配套工程,如編寫相應教材、實驗教材和課程設計指導書,制作全套課件,開發(fā)網(wǎng)絡教學資源,在每一環(huán)節(jié)都強調層次化意識。

        4 結束語

        作者通過在溫州大學五年來C語言、C++語言、Java語言等課程的層次化教學實踐,教學年級覆蓋大一、大二、大三,對象程度覆蓋二本、三本和??疲l(fā)現(xiàn)層次化的教學法能夠明顯提高教學效果。具體包括:①學生的動手實踐能力明顯提高,學習興趣增大,對參加畢業(yè)設計、專業(yè)實習更有信心,專業(yè)技能更符合社會需求,更受用人單位的歡迎,就業(yè)更具競爭力;②算法和程序設計方法的理論更加扎實,參加程序設計競賽、考研、考軟件設計師更加積極,參加人數(shù)逐年遞增,為他們在將來的研究工作中打下更堅固的基礎;③后續(xù)課程的學習更加輕松,合理引導了繼續(xù)學習方向,培育了主動學習的動力。

        層次化的思想具有一定的推廣價值,對程序設計類課程如C/C++、Java、VB、Python、Delphi、PHP等教學改革都有指導意義。

        參考文獻:

        [1] Wulf T.: Constructivist approaches for teaching computer

        programming. In: Proceedings of the 6th conference on Information Technology Education,2005:245-248

        [2] Caspersen M E, Bennedsen J.: Instructional design of a

        programming course: a learning theoretic approach. In: Proceedings of the third international workshop on Computing Education Research,2007:111-122

        [3] Lui Andrew K, Kwan Reggie, Poon Maria, Cheung Yannie H Y.:

        Saving weak programming students-applying constructivism in a first programming course. ACM SIGCSE Bulletin,2004.36(2):72-76

        [4] Zhu Haibin, Zhou MengChu: Methodology first and language

        second: a way to teach object-oriented programming. In: Conference on Object Oriented Programming Systems Languages and Applications,2003: 140-147

        [5] 莫永華,寇冬泉.基于認知心理學的人類分層傳播模式[J].電化教育

        研究,2005.11:38-41

        [6] 張曉競,陳元琰.面向對象程序設計課程的感性化教學與創(chuàng)新應用

        [J].計算機教育,2004.10:73-75

        [7] 高枚,楊志強,許蘭蘭,龔沛曾.C/C++教學改革的探索與實踐[J].計算

        機時代,2005.11:8-10

        [8] 劉璟.計算機算法引論——設計與分析技術[M].科學出版社,2003.

        [9] 譚浩強.C程序設計(第二版)[M].清華大學出版社,1999.

        [10] Knuth D E. The Art of Computer Programming(Third Edition)

        Vol. 1: Fundamental Algorithm[M]. MA,USA: Addison-Wesley,1997.

        [11] 胡正國,吳健,鄧正宏.程序設計方法學[M].國防工業(yè)出版社,2003.

        [12] Pratt T W, Zelkowitz M V.著,傅育熙等譯.程序設計語言設計與實

        現(xiàn)(第3版)[M].電子工業(yè)出版社,1998.

        [13] Wikipedia: Integrated development environment. http://en.

        wikipedia.org/wiki/Integrated_development_environment,2012-8-3.

        [14] Gredler M E. Learning and Instruction: Theory into Practice(Fifth

        Edition), Prentice Hall, Pearson Education Inc., 2004:27-47,74-92,196-262

        日韩制服国产精品一区| 亚洲乱妇熟女爽到高潮视频高清| 国产一区二区三区毛片| 小鲜肉自慰网站| 久久青草伊人精品| 在线免费观看亚洲毛片| 99在线无码精品秘 入口九色| 邻居少妇太爽在线观看| 无码 人妻 在线 视频| 免费a级作爱片免费观看美国| 首页动漫亚洲欧美日韩| 久久伊人精品只有这里有| 黄色潮片三级三级三级免费| 日本一级特黄aa大片| 男人和女人做爽爽免费视频| 午夜无码片在线观看影院| 女的把腿张开男的猛戳出浆| 黄色大片国产精品久久| 国产av剧情刺激对白| 97精品超碰一区二区三区 | 亚洲精品白浆高清久久久久久| 少妇无码av无码一区| 一本色道久久综合亚洲精品小说| 男女午夜视频一区二区三区| av高清在线不卡直播| 亚洲精品乱码久久久久久蜜桃图片| 九九精品视频在线观看| av蜜桃视频在线观看| 国产精品女同一区二区免费站 | 国产超碰人人爽人人做人人添| 99re这里只有热视频| 色噜噜精品一区二区三区| 国产女人精品视频国产灰线| 亚洲国产天堂久久综合| 自拍欧美日韩| 免费av在线视频播放| 无码国内精品人妻少妇蜜桃视频 | 玩两个丰满老熟女| 九九99国产精品视频| 国产一区二区不卡av| 国产欧美综合一区二区三区|